package test internal interface A { internal abstract fun foo(): T } internal interface B : test.A { internal abstract /*fake_override*/ fun foo(): kotlin.Int } internal abstract class C : test.B { public constructor C() internal abstract /*fake_override*/ fun foo(): kotlin.Int } internal open class D : test.C { public constructor D() internal open fun foo(): kotlin.Int } public/*package*/ open class ExtendsD : test.D { public/*package*/ constructor ExtendsD() internal open /*fake_override*/ fun foo(): kotlin.Int public/*package*/ open fun test(): kotlin.Unit }