struct Box<T1, T2: P1>: P1 { struct X {} } extension Box.X: P2 where T2.X == String {}
struct Box<T1: P1, T2>