// IGNORE_PARENTING_CHECK 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 @JvmSuppressWildcards(true) fun Out>>.zoo(z: @JvmSuppressWildcards(false) Out) {} } class ContainerForPropertyAndAccessors { @JvmSuppressWildcards(true) val deepOpen: Out>> = TODO() @JvmSuppressWildcards(false) var bar: Out = TODO() val simpleOut: Out<@JvmWildcard Final> = TODO() val simpleIn: In<@JvmWildcard Any?> = TODO() @JvmSuppressWildcards(true) val Out>>.zoo: @JvmSuppressWildcards(false) Out get() = TODO() } @JvmSuppressWildcards(true) class HasAnnotation { fun doesNot(p: Out>) {} fun parameterDisagrees(p: @JvmSuppressWildcards(false) Out) {} } interface A { @JvmSuppressWildcards(true) fun foo(): Out } interface B { @JvmSuppressWildcards(true) fun foo(): In }