class OutPair class In interface A { fun foo1(x: OutPair) fun foo2(x: OutPair) fun foo3(x: In) fun foo4(x: In) var prop1: OutPair } // method: A::foo1 // generic signature: (LOutPair;)V // method: A::foo2 // generic signature: (LOutPair<+Ljava/lang/CharSequence;Ljava/lang/Integer;>;)V // method: A::foo3 // generic signature: (LIn<-Ljava/lang/String;>;)V // method: A::foo4 // generic signature: (LIn;)V // method: A::getProp1 // generic signature: ()LOutPair; // method: A::setProp1 // generic signature: (LOutPair;)V abstract class B : A { override final fun foo1(x: OutPair) {} override final fun foo2(x: OutPair) {} override final fun foo3(x: In) {} override final fun foo4(x: In) {} override final var prop1: OutPair = null!! } // method: B::foo1 // generic signature: (LOutPair;)V // method: B::foo2 // generic signature: (LOutPair<+Ljava/lang/CharSequence;Ljava/lang/Integer;>;)V // method: B::foo3 // generic signature: (LIn<-Ljava/lang/String;>;)V // method: B::foo4 // generic signature: (LIn;)V // method: B::getProp1 // generic signature: ()LOutPair; // method: A::setProp1 // generic signature: (LOutPair;)V