protocol P : AnyObject {} struct S<T: AnyObject> {} // 'S' requires that 'P' be a class type S<P>()
protocol P : AnyObject {} class C : P {} struct S<T: AnyObject> {} var a: P = C() var b: AnyObject = a as AnyObject