package test

internal interface A</*0*/ T> {
    internal abstract fun foo(): T
}

internal interface B : test.A<kotlin.Int> {
    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
}
