class Inv class Out class OutPair class In class Final open class Open class Container { @JvmSuppressWildcards(true) fun deepOpen(x: Out>>) {} @JvmSuppressWildcards(false) fun bar(): Out = null!! fun simpleOut(x: Out<@JvmWildcard Final>) {} fun simpleIn(x: In<@JvmWildcard Any?>) {} fun falseTrueFalse(): @JvmSuppressWildcards(false) OutPair, Out<@JvmSuppressWildcards(false) Final>>> = null!! fun combination(): @JvmSuppressWildcards OutPair>> = null!! @JvmSuppressWildcards(false) fun foo(x: Boolean, y: Out): Int = 1 @JvmSuppressWildcards(true) fun bar(x: Boolean, y: In, z: @JvmSuppressWildcards(false) Long): Int = 1 } interface A { @JvmSuppressWildcards(true) fun foo(): Out } interface B { @JvmSuppressWildcards(true) fun foo(): In }