// MODULE: separate // FILE: KotlinInternalSeparate.kt open class KotlinInternalSeparate { constructor() /* primary */ { super/*Any*/() /* () */ } @PublishedApi internal open fun foo() { } @PublishedApi internal open val a: Int internal open get(): Int { return 1 } } // MODULE: main // FILE: test.kt class A : InternalVisibility, JavaDefault { constructor() /* primary */ { super/*InternalVisibility*/() /* () */ } override fun foo() { } internal override val a: Int internal override get(): Int { return 10 } } class B : InternalVisibility, JavaPublic { constructor() /* primary */ { super/*InternalVisibility*/() /* () */ } override fun foo() { } internal override val a: Int internal override get(): Int { return 10 } } abstract class C : KotlinInternalSeparate, JavaDefault { constructor() /* primary */ { super/*KotlinInternalSeparate*/() /* () */ } } class D : KotlinInternalSeparate, JavaDefault { constructor() /* primary */ { super/*KotlinInternalSeparate*/() /* () */ } override fun foo() { } } abstract class E : KotlinInternalSeparate, JavaPublic { constructor() /* primary */ { super/*KotlinInternalSeparate*/() /* () */ } } class F : KotlinInternalSeparate, JavaPublic { constructor() /* primary */ { super/*KotlinInternalSeparate*/() /* () */ } override fun foo() { } } open class InternalVisibility { @PublishedApi internal open val a: Int field = 4 internal open get constructor() /* primary */ { super/*Any*/() /* () */ } @PublishedApi internal open fun foo() { } } fun test(a: A, b: B, c: C, d: D, e: E, f: F) { a.foo() a.() /*~> Unit */ b.foo() b.() /*~> Unit */ c.foo() d.foo() f.foo() }