abstract class A : Java2 { constructor() /* primary */ { super/*Any*/() /* () */ } } class B : A { constructor() /* primary */ { super/*A*/() /* () */ } override fun bar(): T { return CHECK_NOT_NULL(arg0 = null) } override fun foo(a: T) { } } class C : Java1 { constructor() /* primary */ { super/*Java1*/() /* () */ } } class D : Java1 { constructor() /* primary */ { super/*Java1*/() /* () */ } override fun bar(): T { return CHECK_NOT_NULL(arg0 = null) } override fun foo(a: T) { } } interface KotlinInterface { abstract fun bar(): T abstract fun foo(a: T) } fun test(a: A, b: B, c: C, d: D) { val k: Int = a.bar() val k3: Any = a.bar() a.foo(a = 1) a.foo(a = null) a.foo(a = null) a.foo>(a = listOf(element = null)) val k5: Int? = b.bar() val k6: Any = b.bar() b.foo(a = 1) b.foo(a = null) b.foo(a = null) b.foo>(a = listOf(element = null)) val k7: Int? = c.bar<@FlexibleNullability Int?>() val k8: Any = c.bar<@FlexibleNullability Any?>() /*!! Any */ c.foo(a = 1) c.foo(a = null) c.foo<@FlexibleNullability Int?>(a = null) c.foo>(a = listOf(element = null)) val k9: Int? = d.bar() val k10: Any = d.bar() d.foo(a = 1) d.foo(a = null) d.foo(a = null) d.foo>(a = listOf(element = null)) }