class A : Java1 { constructor() /* primary */ { super/*Java1*/<@FlexibleNullability Int?>() /* () */ } } class B : Java1 { constructor() /* primary */ { super/*Java1*/<@FlexibleNullability Int?>() /* () */ } override fun bar(): Int { return 1 } override fun foo(t: Int?) { } } abstract class C : Java2 { constructor() /* primary */ { super/*Any*/() /* () */ } } class D : Java2 { constructor() /* primary */ { super/*Any*/() /* () */ } override fun bar(): Double { return 1.1 } override fun foo(t: Double) { } } abstract class E : Java3 { constructor() /* primary */ { super/*Any*/() /* () */ } } class F : Java3 { constructor() /* primary */ { super/*Any*/() /* () */ } override fun bar(): U { return CHECK_NOT_NULL(arg0 = null) } override fun foo(a: U) { } } fun test(a: A, b: B, c: C, d: D, e: E, f: F) { a.foo(t = null) a.foo(t = 1) a.bar() /*~> Unit */ b.foo(t = null) b.foo(t = 1) b.bar() /*~> Unit */ c.foo(t = null) c.foo(t = 1.1) c.bar() /*~> Unit */ d.foo(t = 1.1) d.bar() /*~> Unit */ e.foo<@FlexibleNullability Int?>(a = 1) e.bar<@FlexibleNullability Int?>() /*~> Unit */ f.foo(a = 2.2) f.bar() /*~> Unit */ }