abstract class A : JavaDefault, KotlinDefault { constructor() /* primary */ { super/*Any*/() /* () */ } override fun foo() { } fun test() { .() /*~> Unit */ .foo() } override val a: Int override get(): Int { return 5 } } abstract class B : JavaDefault, KotlinPrivate { constructor() /* primary */ { super/*Any*/() /* () */ } fun test() { .foo() } } class C : JavaDefault, KotlinPrivate { val a: Int field = 5 get constructor() /* primary */ { super/*Any*/() /* () */ } override fun foo() { } fun test() { .() /*~> Unit */ .foo() } } class D : KotlinProtected, JavaDefault { constructor() /* primary */ { super/*KotlinProtected*/() /* () */ } override fun foo() { } fun test() { .() /*~> Unit */ .foo() } protected override val a: Int protected override get(): Int { return 5 } } class E : JavaDefault, KotlinPublic { constructor() /* primary */ { super/*Any*/() /* () */ } override fun foo() { } fun test() { .() /*~> Unit */ .foo() } override val a: Int override get(): Int { return 5 } } class F : KotlinInternal, JavaDefault { constructor() /* primary */ { super/*KotlinInternal*/() /* () */ } override fun foo() { } fun test() { .() /*~> Unit */ .foo() } override val a: Int override get(): Int { return 5 } } class G : JavaPrivate, KotlinDefault { constructor() /* primary */ { super/*JavaPrivate*/() /* () */ } fun test() { .() /*~> Unit */ .foo() } } class H : JavaPrivate, KotlinDefault { constructor() /* primary */ { super/*JavaPrivate*/() /* () */ } override fun foo() { } fun test() { .() /*~> Unit */ .foo() } override val a: Int override get(): Int { return 5 } } class I : JavaPrivate, KotlinPrivate { constructor() /* primary */ { super/*JavaPrivate*/() /* () */ } } class J : JavaPrivate, KotlinPublic { constructor() /* primary */ { super/*JavaPrivate*/() /* () */ } fun test() { .() /*~> Unit */ .foo() } } class K : JavaPrivate, KotlinPublic { constructor() /* primary */ { super/*JavaPrivate*/() /* () */ } override fun foo() { } fun test() { .() /*~> Unit */ .foo() } override val a: Int override get(): Int { return 5 } } open class KotlinInternal { constructor() /* primary */ { super/*Any*/() /* () */ } internal open fun foo() { } internal open val a: Int internal open get(): Int { return 1 } } open class KotlinProtected { protected open val a: Int field = 1 protected open get constructor() /* primary */ { super/*Any*/() /* () */ } protected open fun foo() { } } class L : JavaProtected, KotlinDefault { constructor() /* primary */ { super/*JavaProtected*/() /* () */ } override fun foo() { } fun test() { (super).#a /*~> Unit */ .foo() } override val a: Int override get(): Int { return 5 } } class M : JavaProtected, KotlinPrivate { constructor() /* primary */ { super/*JavaProtected*/() /* () */ } fun test() { (super).#a /*~> Unit */ .foo() } } class N : JavaProtected, KotlinPrivate { val a: Int field = 5 get constructor() /* primary */ { super/*JavaProtected*/() /* () */ } override fun foo() { } fun test() { (super).#a /*~> Unit */ .foo() } } class O : JavaProtected, KotlinPublic { constructor() /* primary */ { super/*JavaProtected*/() /* () */ } override fun foo() { } fun test() { (super).#a /*~> Unit */ .foo() } override val a: Int override get(): Int { return 5 } } class P : JavaPublic, KotlinDefault { constructor() /* primary */ { super/*Any*/() /* () */ } override fun foo() { } fun test() { .() /*~> Unit */ .foo() } override val a: Int override get(): Int { return 5 } } class Q : JavaPublic, KotlinPrivate { val a: Int field = 5 get constructor() /* primary */ { super/*Any*/() /* () */ } override fun foo() { } fun test() { .() /*~> Unit */ .foo() } } class R : KotlinProtected, JavaPublic { constructor() /* primary */ { super/*KotlinProtected*/() /* () */ } override fun foo() { } fun test() { .() /*~> Unit */ .foo() } protected override val a: Int protected override get(): Int { return 5 } } class S : JavaPublic, KotlinPublic { constructor() /* primary */ { super/*Any*/() /* () */ } override fun foo() { } fun test() { .() /*~> Unit */ .foo() } override val a: Int override get(): Int { return 5 } } class T : KotlinInternal, JavaPublic { constructor() /* primary */ { super/*KotlinInternal*/() /* () */ } override fun foo() { } fun test() { .() /*~> Unit */ .foo() } internal override val a: Int internal override get(): Int { return 5 } } interface KotlinDefault { fun foo() { } val a: Int get(): Int { return 1 } } interface KotlinPrivate { private final fun foo() { } private final val a: Int private final get(): Int { return 1 } } interface KotlinPublic { fun foo() { } val a: Int get(): Int { return 1 } } fun test(a: A, b: B, c: C, d: D, e: E, f: F, h: H, j: J, k: K, l: L, m: M, n: N, o: O, p: P, q: Q, r: R, s: S, t: T) { a.foo() a.() /*~> Unit */ a.test() b.foo() b.test() c.foo() c.test() d.foo() d.foo() e.foo() e.() /*~> Unit */ e.test() f.foo() f.() /*~> Unit */ f.test() h.foo() h.() /*~> Unit */ h.test() j.foo() j.() /*~> Unit */ j.test() k.foo() k.() /*~> Unit */ k.test() l.foo() l(super).#a /*~> Unit */ l.test() m.foo() m(super).#a /*~> Unit */ m.test() n.foo() n(super).#a /*~> Unit */ n.test() o.foo() o(super).#a /*~> Unit */ o.test() p.foo() p.() /*~> Unit */ p.test() q.foo() q.test() r.foo() r.test() s.foo() s.test() s.() /*~> Unit */ t.foo() t.test() t.() /*~> Unit */ }