Strange inconsistency. Probably should be considered when reworking our global/non-global characterization strategy. ```rust trait Foo<'a> { type Assoc; } impl<'a, T> Foo<'a> for T { type Assoc = u8; } fn no_proj<'a, T>() where T: Foo<'a> {} fn with_proj<'a, T>() -> T::Assoc where T: Foo<'a> {} fn test<'a, U>() where i32: Foo<'static, Assoc = U> { // Ok, only requires proving `i32: Trait<'a>`, via impl. no_proj::<'a, i32>(); // FAILS, prefer non-global `<i32 as Trait<'static>> normalizes-to U`. with_proj::<'a, i32>(); } ```