package

public open class A {
    public constructor A()
    public open val foo: kotlin.Boolean = true
    public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

public final class B1 : A, IA {
    public constructor B1()
    public open override /*2*/ /*fake_override*/ val foo: kotlin.Boolean
    public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}

public final class B2 : A, IA, IAA {
    public constructor B2()
    public open override /*3*/ /*fake_override*/ val foo: kotlin.Boolean
    public open override /*3*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public open override /*3*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public open override /*3*/ /*fake_override*/ fun toString(): kotlin.String
}

public abstract class B3 : IA, IAA {
    public constructor B3()
    public abstract override /*2*/ /*fake_override*/ val foo: kotlin.String
    public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}

public final class BG1</*0*/ T> : A, IGA<T> {
    public constructor BG1</*0*/ T>()
    public open override /*2*/ /*fake_override*/ val foo: kotlin.Boolean
    public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}

public final class BS1 : A, IGA<kotlin.Boolean> {
    public constructor BS1()
    public open override /*2*/ /*fake_override*/ val foo: kotlin.Boolean
    public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}

public final class BS2 : A, IGA<kotlin.Any> {
    public constructor BS2()
    public open override /*2*/ /*fake_override*/ val foo: kotlin.Boolean
    public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}

public final class BS3 : A, IGA<kotlin.String> {
    public constructor BS3()
    public open override /*2*/ /*fake_override*/ val foo: kotlin.Boolean
    public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}

public interface IA {
    public abstract val foo: kotlin.String
    public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

public interface IAA {
    public abstract val foo: kotlin.Int
    public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}

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