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