class A : Java2 { constructor() /* primary */ { super/*Java2*/() /* () */ } } abstract class B : KotlinClass, Java3 { constructor() /* primary */ { super/*KotlinClass*/() /* () */ } } class C : KotlinClass, Java3 { constructor() /* primary */ { super/*KotlinClass*/() /* () */ } override fun foo(t: Any?) { } } abstract class D : Java4, Java3 { constructor() /* primary */ { super/*Java4*/<@FlexibleNullability Any?>() /* () */ } } class E : Java4, Java3 { constructor() /* primary */ { super/*Java4*/<@FlexibleNullability Any?>() /* () */ } override fun foo(t: Any?) { } } abstract class F : Java1, Java5 { constructor() /* primary */ { super/*Java1*/<@FlexibleNullability Int?>() /* () */ } } class G : Java1, Java5 { constructor() /* primary */ { super/*Java1*/<@FlexibleNullability Int?>() /* () */ } override fun foo(t: Any) { } } class H : Java2, KotlinInterface { constructor() /* primary */ { super/*Java2*/() /* () */ } } class I : Java2, KotlinInterface { constructor() /* primary */ { super/*Java2*/() /* () */ } override fun foo(t: Any) { } } open class KotlinClass : Java1 where T : Number, T : Comparable { constructor() /* primary */ { super/*Java1*/<@FlexibleNullability T?>() /* () */ } } interface KotlinInterface { abstract fun bar(): T? abstract fun foo(t: T) } fun test(a: A, b: B, c: C, d: D, e: E, f: F, h: H, i: I) { a.foo(t = 1) a.foo(t = 1.1) a.foo(t = null) a.foo(t = "") a.bar() /*~> Unit */ b.foo(t = 1.2) b.foo(t = null) b.bar() /*~> Unit */ c.foo(t = null) c.foo(t = "") c.foo(t = 1) c.bar() /*~> Unit */ d.foo(t = null) d.foo(t = 1) d.bar() /*~> Unit */ e.foo(t = 1.1) e.foo(t = null) e.bar() /*~> Unit */ f.foo(t = 2) f.foo(t = "") f.bar() /*~> Unit */ h.foo(t = 2) h.foo(t = "") h.bar() /*~> Unit */ i.foo(t = 2) i.foo(t = "") i.bar() /*~> Unit */ }