class A : Java1, Java2 { constructor() /* primary */ { super/*Java1*/<@FlexibleNullability T?>() /* () */ } } class B : Java1, Java2 { constructor() /* primary */ { super/*Java1*/<@FlexibleNullability T?>() /* () */ } override fun foo(vararg a: T) { } } abstract class C : Java2, KotlinInterface { constructor() /* primary */ { super/*Any*/() /* () */ } } class D : Java2, KotlinInterface { constructor() /* primary */ { super/*Any*/() /* () */ } override fun foo(vararg a: T) { } } class E : Java1, Java2 { constructor() /* primary */ { super/*Java1*/<@FlexibleNullability Int?>() /* () */ } } interface KotlinInterface { abstract fun foo(vararg a: T) } fun test(a: A, b: B, c: C, d: D, e: E) { a.foo(a = [1, 2]) a.foo(a = [1, null]) a.foo(a = [null]) b.foo(a = [1, 2]) b.foo(a = [1, null]) b.foo(a = [null]) c.foo(a = [1, 2]) c.foo(a = ["1", "2", null]) c.foo(a = [null]) d.foo(a = [1, 2]) c.foo(a = ["1", "2", null]) d.foo(a = [null]) e.foo(a = [1, 2]) e.foo(a = [1, null]) e.foo(a = [null]) }