class A : Java1, Java2 { constructor() /* primary */ { super/*Java1*/() /* () */ } } class B : Java1, Java2 { constructor() /* primary */ { super/*Java1*/() /* () */ } override fun bar(): T { return CHECK_NOT_NULL(arg0 = null) } override fun foo(a: T) { } } abstract class C : Java1, KotlinInterface { constructor() /* primary */ { super/*Java1*/() /* () */ } } class D : Java1, KotlinInterface { constructor() /* primary */ { super/*Java1*/() /* () */ } override fun bar(): T { return CHECK_NOT_NULL(arg0 = null) } override fun foo(a: T) { } } class E : Java1, Java2, KotlinInterface { constructor() /* primary */ { super/*Java1*/() /* () */ } } class F : Java1, Java2, KotlinInterface { constructor() /* primary */ { super/*Java1*/() /* () */ } override fun bar(): T { return CHECK_NOT_NULL(arg0 = null) } } interface KotlinInterface { abstract fun bar(): T abstract fun foo(a: T) } fun test(a: A, b: B, c: C, d: D, e: E, f: F) { val k: Int = a.bar<@FlexibleNullability Int?>() /*!! Int */ val k3: Any = a.bar<@FlexibleNullability Any?>() /*!! Any */ val k4: Nothing = a.bar<@FlexibleNullability Nothing?>() /*!! Nothing */ a.foo<@FlexibleNullability Int?>(a = 1) a.foo(a = null) a.foo<@FlexibleNullability Int?>(a = null) a.foo<@FlexibleNullability List?>(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() val k8: Any = c.bar() c.foo<@FlexibleNullability Int?>(a = 1) c.foo(a = null) c.foo<@FlexibleNullability Int?>(a = null) c.foo<@FlexibleNullability List?>(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)) val k11: Int? = e.bar() e.foo<@FlexibleNullability Int?>(a = 1) e.foo(a = null) val k12: Any? = f.bar() f.foo<@FlexibleNullability Int?>(a = 1) }