package

public final class CDerived1 : ILeft, IRight {
    public constructor CDerived1()
    public open override /*2*/ fun copy(): CDerived1
    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 abstract class CDerived2 : ILeft, IRight, IDerived {
    public constructor CDerived2()
    public abstract override /*3*/ /*fake_override*/ fun copy(): IDerived
    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 final class CDerived2a : ILeft, IRight, IDerived {
    public constructor CDerived2a()
    public open override /*3*/ fun copy(): IDerived
    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 final class CDerivedInvalid1 : ILeft, IRight {
    public constructor CDerivedInvalid1()
    public abstract override /*2*/ /*fake_override*/ fun copy(): ILeft
    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 CDerivedInvalid2 : CLeft, IRight {
    public constructor CDerivedInvalid2()
    public open override /*2*/ /*fake_override*/ fun copy(): ILeft
    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 open class CLeft : ILeft {
    public constructor CLeft()
    public open override /*1*/ fun copy(): ILeft
    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 IBase {
    public abstract fun copy(): IBase
    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 IDerived : ILeft, IRight {
    public abstract override /*2*/ fun copy(): IDerived
    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 ILeft : IBase {
    public abstract override /*1*/ fun copy(): ILeft
    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 IRight : IBase {
    public abstract override /*1*/ fun copy(): IRight
    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
}
