class OutPair(val x: X, val y: Y) class In { fun make(x: Z): String = x.toString() } @JvmSuppressWildcards(suppress = false) interface A { fun foo(): OutPair fun bar(): In } abstract class B : A { override fun foo(): OutPair = OutPair("OK", 123) override fun bar(): In = In() } fun box(): String { return JavaClass.test(); }