// TARGET_BACKEND: JVM // FILE: Java1.java public class Java1 { public void foo(T... a) {}; } // FILE: Java2.java public interface Java2 { public void foo(T... a); } // FILE: 1.kt class A : Java1(), Java2 class B : Java1(), Java2 { override fun foo(vararg a: T) { } } abstract class C : Java2, KotlinInterface class D : Java2, KotlinInterface { override fun foo(vararg a: T) { } } interface KotlinInterface { fun foo(vararg a: T) } class E: Java1(), Java2 fun test(a: A, b: B, c: C, d: D, e: E) { a.foo(1, 2) a.foo(1, null) a.foo(null) b.foo(1, 2) b.foo(1, null) b.foo(null) c.foo(1, 2) c.foo("1", "2", null) c.foo(null) d.foo(1, 2) c.foo("1", "2", null) d.foo(null) e.foo(1, 2) e.foo(1, null) e.foo(null) }