package

package test {

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

    public final class Test1 : test.X, test.Y {
        public constructor Test1(/*0*/ x: test.X)
        public final val x: test.X
        public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public open override /*2*/ fun foo(): kotlin.String?
        public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
    }

    public final class Test2 : test.X, test.Y {
        public constructor Test2(/*0*/ x: test.X)
        public final val x: test.X
        public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public open override /*2*/ fun foo(): kotlin.String
        public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
    }

    public final class Test3 : test.X, test.Y {
        public constructor Test3(/*0*/ y: test.Y)
        public final val y: test.Y
        public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public open override /*2*/ fun foo(): kotlin.String?
        public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
    }

    public final class Test4 : test.X, test.Y {
        public constructor Test4(/*0*/ y: test.Y)
        public final val y: test.Y
        public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public open override /*2*/ fun foo(): kotlin.String
        public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
    }

    public final class Test5 : test.X, test.Y, test.Incompatible {
        public constructor Test5(/*0*/ y: test.Y, /*1*/ x: test.X)
        public final val x: test.X
        public final val y: test.Y
        public open override /*3*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public open override /*3*/ fun foo(): kotlin.Int
        public open override /*3*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*3*/ /*fake_override*/ fun toString(): kotlin.String
    }

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

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