package

package override {

    package override.generics {

        public abstract class MyAbstractClass</*0*/ T> {
            public constructor MyAbstractClass</*0*/ T>()
            public abstract val pr: T
            public abstract fun bar(/*0*/ t: T): 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
        }

        public abstract class MyAbstractClass1 : override.generics.MyTrait<kotlin.Int>, override.generics.MyAbstractClass<kotlin.String> {
            public constructor MyAbstractClass1()
            public abstract override /*1*/ /*fake_override*/ val pr: kotlin.String
            public open override /*1*/ fun bar(/*0*/ t: kotlin.String): kotlin.String
            public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            public open override /*1*/ fun foo(/*0*/ t: kotlin.Int): kotlin.Int
            public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
            public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
        }

        public final class MyChildClass : override.generics.MyGenericClass<kotlin.Int> {
            public constructor MyChildClass()
            public open override /*1*/ /*fake_override*/ val p: kotlin.Int
            public open override /*1*/ /*fake_override*/ val pr: kotlin.Int
            public open override /*1*/ /*fake_override*/ fun bar(/*0*/ t: kotlin.Int): kotlin.Int
            public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            public open override /*1*/ /*fake_override*/ fun foo(/*0*/ t: kotlin.Int): 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 MyChildClass1</*0*/ T> : override.generics.MyGenericClass<T> {
            public constructor MyChildClass1</*0*/ T>(/*0*/ t: T)
            public open override /*1*/ /*fake_override*/ val p: T
            public open override /*1*/ /*fake_override*/ val pr: T
            public open override /*1*/ /*fake_override*/ fun bar(/*0*/ t: T): T
            public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            public open override /*1*/ /*fake_override*/ fun foo(/*0*/ t: T): T
            public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
            public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
        }

        public final class MyChildClass2</*0*/ T> : override.generics.MyGenericClass<T> {
            public constructor MyChildClass2</*0*/ T>(/*0*/ t: T)
            public open override /*1*/ val p: T
            public final override /*1*/ val pr: T
            public open override /*1*/ fun bar(/*0*/ t: T): T
            public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            public final override /*1*/ fun foo(/*0*/ t: T): T
            public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
            public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
        }

        public open class MyClass : override.generics.MyTrait<kotlin.Int>, override.generics.MyAbstractClass<kotlin.String> {
            public constructor MyClass()
            public open override /*1*/ val pr: kotlin.String = "1"
            public open override /*1*/ fun bar(/*0*/ t: kotlin.String): kotlin.String
            public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            public open override /*1*/ fun foo(/*0*/ t: kotlin.Int): kotlin.Int
            public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
            public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
        }

        public open class MyGenericClass</*0*/ T> : override.generics.MyTrait<T>, override.generics.MyAbstractClass<T>, override.generics.MyProps<T> {
            public constructor MyGenericClass</*0*/ T>(/*0*/ t: T)
            public open override /*1*/ val p: T
            public open override /*1*/ val pr: T
            public open override /*1*/ fun bar(/*0*/ t: T): T
            public open override /*3*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            public open override /*1*/ fun foo(/*0*/ t: T): T
            public open override /*3*/ /*fake_override*/ fun hashCode(): kotlin.Int
            public open override /*3*/ /*fake_override*/ fun toString(): kotlin.String
        }

        public final class MyIllegalClass1 : override.generics.MyTrait<kotlin.Int>, override.generics.MyAbstractClass<kotlin.String> {
            public constructor MyIllegalClass1()
            public abstract override /*1*/ /*fake_override*/ val pr: kotlin.String
            public abstract override /*1*/ /*fake_override*/ fun bar(/*0*/ t: kotlin.String): kotlin.String
            public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ t: kotlin.Int): kotlin.Int
            public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
            public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
        }

        public final class MyIllegalClass2</*0*/ T> : override.generics.MyTrait<kotlin.Int>, override.generics.MyAbstractClass<kotlin.Int> {
            public constructor MyIllegalClass2</*0*/ T>(/*0*/ t: T)
            public final val </*0*/ R> pr: T
            public final fun bar(/*0*/ t: T): T
            public abstract override /*1*/ /*fake_override*/ fun bar(/*0*/ t: kotlin.Int): kotlin.Int
            public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            public final fun foo(/*0*/ t: T): T
            public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ t: kotlin.Int): kotlin.Int
            public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
            public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
        }

        public final class MyIllegalGenericClass1</*0*/ T> : override.generics.MyTrait<T>, override.generics.MyAbstractClass<T> {
            public constructor MyIllegalGenericClass1</*0*/ T>()
            public abstract override /*1*/ /*fake_override*/ val pr: T
            public abstract override /*1*/ /*fake_override*/ fun bar(/*0*/ t: T): T
            public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ t: T): T
            public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
            public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
        }

        public final class MyIllegalGenericClass2</*0*/ T, /*1*/ R> : override.generics.MyTrait<T>, override.generics.MyAbstractClass<R> {
            public constructor MyIllegalGenericClass2</*0*/ T, /*1*/ R>(/*0*/ r: R)
            public open val </*0*/ T> pr: R
            public abstract override /*1*/ /*fake_override*/ fun bar(/*0*/ t: R): R
            public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            public open fun foo(/*0*/ r: R): R
            public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ t: T): T
            public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
            public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
        }

        public abstract class MyLegalAbstractClass1 : override.generics.MyTrait<kotlin.Int>, override.generics.MyAbstractClass<kotlin.String> {
            public constructor MyLegalAbstractClass1()
            public abstract override /*1*/ /*fake_override*/ val pr: kotlin.String
            public abstract override /*1*/ /*fake_override*/ fun bar(/*0*/ t: kotlin.String): kotlin.String
            public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ t: kotlin.Int): kotlin.Int
            public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
            public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
        }

        public abstract class MyLegalAbstractClass2</*0*/ T> : override.generics.MyTrait<kotlin.Int>, override.generics.MyAbstractClass<kotlin.Int> {
            public constructor MyLegalAbstractClass2</*0*/ T>(/*0*/ t: T)
            public final val </*0*/ R> pr: T
            public final fun bar(/*0*/ t: T): T
            public abstract override /*1*/ /*fake_override*/ fun bar(/*0*/ t: kotlin.Int): kotlin.Int
            public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
            public final fun foo(/*0*/ t: T): T
            public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ t: kotlin.Int): kotlin.Int
            public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
            public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
        }

        public interface MyProps</*0*/ T> {
            public abstract val p: 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
        }

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