package

public final class CDerived : IBase {
    public constructor CDerived()
    public final val anObject: IBase
    public final fun aMethod(): kotlin.Unit
    public open inline override /*1*/ fun bar(): kotlin.Unit
    public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public final inline override /*1*/ fun foo(): kotlin.Unit
    public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public final inline override /*1*/ fun </*0*/ reified T> qux(/*0*/ x: T): kotlin.Unit
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String

    public final class CNested : IBase {
        public constructor CNested()
        public open inline override /*1*/ fun bar(): kotlin.Unit
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public final inline override /*1*/ fun foo(): kotlin.Unit
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public final inline override /*1*/ fun </*0*/ reified T> qux(/*0*/ x: T): kotlin.Unit
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }
}

public open class COpen : IBase {
    public constructor COpen()
    public final val anObject: IBase
    public final fun aMethod(): kotlin.Unit
    public open inline override /*1*/ fun bar(): kotlin.Unit
    public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public final inline override /*1*/ fun foo(): kotlin.Unit
    public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public final inline override /*1*/ fun </*0*/ reified T> qux(/*0*/ x: T): kotlin.Unit
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String

    public open class COpenNested : IBase {
        public constructor COpenNested()
        public open inline override /*1*/ fun bar(): kotlin.Unit
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public final inline override /*1*/ fun foo(): kotlin.Unit
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public final inline override /*1*/ fun </*0*/ reified T> qux(/*0*/ x: T): kotlin.Unit
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }
}

public interface IBase {
    public abstract fun bar(): kotlin.Unit
    public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public abstract fun foo(): kotlin.Unit
    public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public abstract fun </*0*/ T> qux(/*0*/ x: T): kotlin.Unit
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
