package test

internal abstract class A {
    /*primary*/ public constructor A()
    internal abstract fun foo(): kotlin.Unit
}

internal open class B : test.A {
    /*primary*/ public constructor B()
    internal open override /*1*/ fun foo(): kotlin.Unit
}

internal final class C : test.A, test.X {
    /*primary*/ public constructor C()
    internal open override /*1*/ /*fake_override*/ fun bar(): kotlin.Unit
    internal open override /*2*/ fun foo(): kotlin.Unit
}

internal final class D : test.B, test.X {
    /*primary*/ public constructor D(/*0*/ c: test.C)
    internal final val c: test.C
        internal final fun <get-c>(): test.C
    internal open override /*1*/ /*delegation*/ fun bar(): kotlin.Unit
    internal open override /*2*/ /*fake_override*/ fun foo(): kotlin.Unit
}

internal trait X : test.A {
    internal open fun bar(): kotlin.Unit
    internal abstract override /*1*/ /*fake_override*/ fun foo(): kotlin.Unit
}
