Working through method breakage
```mermaid
sequenceDiagram
participant upstream as upstream,<br/>2015 edition<br/>provides trait `Tr1`<br/>with `foo()` method
participant crate as crate<br/>calls `t.foo()` where `t`<br/>implements `Tr1`+`Tr2`
participant stdlib as stdlib<br/>provides trait `Tr2`
Note over crate: developed against Rust 2018 edition
Note over crate,stdlib: (no `foo()` method available<br/> on `Tr2` at this time)
crate ->> upstream: t.foo()
Note over upstream,crate: (Currently sole resolution available)
stdlib ->> stdlib: stdlib adds `Tr2::foo()`,<br/>tagged with current (2021) edition
opt crate edition < method edition
Note over stdlib, upstream: compiler detects both methods are available,<br/>signals ambiguity warning
crate ->> upstream: t.foo()
end
crate ->> crate: crate upgrades to Rust 2021 edition
opt crate edition = method edition
Note over stdlib, upstream: compiler detects both methods are available,<br/>signals ambiguity warning
crate ->> upstream: t.foo()
end
stdlib ->> stdlib: Rust releases 2024 edition
Note over stdlib: `Tr2::foo` remains tagged with 2021 edition
opt crate edition = *method* edition (still)
Note over stdlib, upstream: compiler detects both methods are available,<br/>signals ambiguity warning
crate ->> upstream: t.foo()
end
crate ->> crate: crate attempts upgrade to Rust 2024 edition
opt crate edition > method edition
crate --X upstream: t.foo()
Note over stdlib, upstream: now issues hard ambiguity error<br/>crate dev is forced to resolve ambiguity.
end
```