protocol A {} protocol B : A {} protocol C : B {} struct S<T> {} struct K: A {} extension S : C where T: A {} print(S<K>.self is A.Type) print(S<K>.self is B.Type) print(S<K>.self is C.Type)