class A : Java1 { constructor() /* primary */ { super/*Java1*/() /* () */ } } abstract class B : Java2 { constructor() /* primary */ { super/*Any*/() /* () */ } } class C : Java1 { constructor() /* primary */ { super/*Java1*/() /* () */ } override fun foo2() { } override fun foo3() { } } class D : Java2 { constructor() /* primary */ { super/*Any*/() /* () */ } override fun foo() { } } class E : Java3 { constructor() /* primary */ { super/*Java3*/() /* () */ } } abstract class F : Java4 { constructor() /* primary */ { super/*Any*/() /* () */ } } class G : Java3 { constructor() /* primary */ { super/*Java3*/() /* () */ } override fun foo2() { } override fun foo3() { } } class H : Java4 { constructor() /* primary */ { super/*Any*/() /* () */ } override fun foo() { } } class I : Java5 { constructor() /* primary */ { super/*Java5*/() /* () */ } } class J : Java5 { constructor() /* primary */ { super/*Java5*/() /* () */ } override fun foo2() { } override fun foo3() { } } open class KotlinClass : Java1 { constructor() /* primary */ { super/*Java1*/() /* () */ } } interface KotlinInterface : Java2 { } fun test(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I, j: J) { a.foo() a.foo2() a.foo3() b.foo() c.foo() c.foo2() c.foo3() d.foo() e.foo() e.foo2() e.foo3() f.foo() g.foo() g.foo2() g.foo3() h.foo() i.foo() i.foo2() i.foo3() j.foo() j.foo2() j.foo3() }