rust-lang/rust#121193 ```rust trait Mirror { type Assoc; } impl<T> Mirror for T { type Assoc = T; } trait Foo {} trait Bar {} impl<T> Foo for T where (): Mirror<Assoc = T> {} impl<T> Foo for T where T: Bar {} fn main() {} ``` now passes with the new solver as constraints from one where-bound can be used to guide another one