// MODULE: separate // MODULE: main // FILE: test.kt class A : Java1 { constructor() /* primary */ { super/*Java1*/() /* () */ } } class B : Java1 { constructor() /* primary */ { super/*Java1*/() /* () */ } override fun foo() { } } class C : Java2 { constructor() /* primary */ { super/*Java2*/() /* () */ } } class D : Java2 { constructor() /* primary */ { super/*Java2*/() /* () */ } override fun foo() { } } class E : Java3 { constructor() /* primary */ { super/*Java3*/() /* () */ } } class F : Java3 { constructor() /* primary */ { super/*Java3*/() /* () */ } override fun foo() { } } class G : Java4 { constructor() /* primary */ { super/*Java4*/() /* () */ } } class H : Java4 { constructor() /* primary */ { super/*Java4*/() /* () */ } override fun foo() { } } class I : Java5 { constructor() /* primary */ { super/*Java5*/() /* () */ } } class J : Java5 { val a: Int field = 10 get constructor() /* primary */ { super/*Java5*/() /* () */ } fun foo() { } } fun test(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I, j: J) { a.#a /*~> Unit */ a.foo() b.#a /*~> Unit */ b.foo() c.#a /*~> Unit */ c.foo() d.#a /*~> Unit */ d.foo() e.#a /*~> Unit */ e.foo() f.#a /*~> Unit */ f.foo() g.#a /*~> Unit */ g.foo() h.#a /*~> Unit */ h.foo() j.() /*~> Unit */ j.foo() }