protocol P1 {} protocol P2: P1 {} class C1 { init<X: P1>(p: X) {} } class C2: C1 { convenience init<X: P2>(p2: X) { self.init(p: p2) } }