class A : Java1 { constructor() /* primary */ { super/*Java1*/() /* () */ } } class B : Java1 { constructor() /* primary */ { super/*Java1*/() /* () */ } override fun bar(): T? { return CHECK_NOT_NULL(arg0 = null) } override fun foo(a: T?) { } } fun test(a: A, b: B) { val k: Int = a.bar<@FlexibleNullability Int?>() /*!! Int */ val k2: Int? = a.bar() 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 k7: Any? = b.bar() val k8: Nothing? = b.bar() b.foo(a = 1) b.foo(a = null) b.foo(a = null) b.foo>(a = listOf(element = null)) }