namespace <root>

// <namespace name="override">
namespace override

// <namespace name="generics">
namespace generics

internal abstract class override.generics.MyAbstractClass</*0*/ T : jet.Any?> : jet.Any {
    public final /*constructor*/ fun </*0*/ T : jet.Any?><init>(): override.generics.MyAbstractClass<T>
    internal abstract fun bar(/*0*/ t: T): T
    internal abstract val pr: T
}
internal abstract class override.generics.MyAbstractClass1 : override.generics.MyTrait<jet.Int>, override.generics.MyAbstractClass<jet.String> {
    public final /*constructor*/ fun <init>(): override.generics.MyAbstractClass1
    internal open override /*1*/ fun bar(/*0*/ t: jet.String): jet.String
    internal open override /*1*/ fun foo(/*0*/ t: jet.Int): jet.Int
    internal abstract override /*1*/ val pr: jet.String
}
internal final class override.generics.MyChildClass : override.generics.MyGenericClass<jet.Int> {
    public final /*constructor*/ fun <init>(): override.generics.MyChildClass
    internal open override /*1*/ fun bar(/*0*/ t: jet.Int): jet.Int
    internal open override /*1*/ fun foo(/*0*/ t: jet.Int): jet.Int
    internal open override /*1*/ val p: jet.Int
    internal open override /*1*/ val pr: jet.Int
}
internal final class override.generics.MyChildClass1</*0*/ T : jet.Any?> : override.generics.MyGenericClass<T> {
    public final /*constructor*/ fun </*0*/ T : jet.Any?><init>(/*0*/ t: T): override.generics.MyChildClass1<T>
    internal open override /*1*/ fun bar(/*0*/ t: T): T
    internal open override /*1*/ fun foo(/*0*/ t: T): T
    internal open override /*1*/ val p: T
    internal open override /*1*/ val pr: T
}
internal final class override.generics.MyChildClass2</*0*/ T : jet.Any?> : override.generics.MyGenericClass<T> {
    public final /*constructor*/ fun </*0*/ T : jet.Any?><init>(/*0*/ t: T): override.generics.MyChildClass2<T>
    internal open override /*1*/ fun bar(/*0*/ t: T): T
    internal final override /*1*/ fun foo(/*0*/ t: T): T
    internal open override /*1*/ val p: T
    internal final override /*1*/ val pr: T
}
internal open class override.generics.MyClass : override.generics.MyTrait<jet.Int>, override.generics.MyAbstractClass<jet.String> {
    public final /*constructor*/ fun <init>(): override.generics.MyClass
    internal open override /*1*/ fun bar(/*0*/ t: jet.String): jet.String
    internal open override /*1*/ fun foo(/*0*/ t: jet.Int): jet.Int
    internal open override /*1*/ val pr: jet.String
}
internal open class override.generics.MyGenericClass</*0*/ T : jet.Any?> : override.generics.MyTrait<T>, override.generics.MyAbstractClass<T>, override.generics.MyProps<T> {
    public final /*constructor*/ fun </*0*/ T : jet.Any?><init>(/*0*/ t: T): override.generics.MyGenericClass<T>
    internal open override /*1*/ fun bar(/*0*/ t: T): T
    internal open override /*1*/ fun foo(/*0*/ t: T): T
    internal open override /*1*/ val p: T
    internal open override /*1*/ val pr: T
}
internal final class override.generics.MyIllegalClass1 : override.generics.MyTrait<jet.Int>, override.generics.MyAbstractClass<jet.String> {
    public final /*constructor*/ fun <init>(): override.generics.MyIllegalClass1
    internal abstract override /*1*/ fun bar(/*0*/ t: jet.String): jet.String
    internal abstract override /*1*/ fun foo(/*0*/ t: jet.Int): jet.Int
    internal abstract override /*1*/ val pr: jet.String
}
internal final class override.generics.MyIllegalClass2</*0*/ T : jet.Any?> : override.generics.MyTrait<jet.Int>, override.generics.MyAbstractClass<jet.Int> {
    public final /*constructor*/ fun </*0*/ T : jet.Any?><init>(/*0*/ t: T): override.generics.MyIllegalClass2<T>
    internal final fun bar(/*0*/ t: T): T
    internal abstract override /*1*/ fun bar(/*0*/ t: jet.Int): jet.Int
    internal final fun foo(/*0*/ t: T): T
    internal abstract override /*1*/ fun foo(/*0*/ t: jet.Int): jet.Int
    internal final val  </*0*/ R : jet.Any?> pr: T
}
internal final class override.generics.MyIllegalGenericClass1</*0*/ T : jet.Any?> : override.generics.MyTrait<T>, override.generics.MyAbstractClass<T> {
    public final /*constructor*/ fun </*0*/ T : jet.Any?><init>(): override.generics.MyIllegalGenericClass1<T>
    internal abstract override /*1*/ fun bar(/*0*/ t: T): T
    internal abstract override /*1*/ fun foo(/*0*/ t: T): T
    internal abstract override /*1*/ val pr: T
}
internal final class override.generics.MyIllegalGenericClass2</*0*/ T : jet.Any?, /*1*/ R : jet.Any?> : override.generics.MyTrait<T>, override.generics.MyAbstractClass<R> {
    public final /*constructor*/ fun </*0*/ T : jet.Any?, /*1*/ R : jet.Any?><init>(/*0*/ r: R): override.generics.MyIllegalGenericClass2<T, R>
    internal abstract override /*1*/ fun bar(/*0*/ t: R): R
    internal open fun foo(/*0*/ r: R): R
    internal abstract override /*1*/ fun foo(/*0*/ t: T): T
    internal open val  </*0*/ T : jet.Any?> pr: R
}
internal abstract class override.generics.MyLegalAbstractClass1 : override.generics.MyTrait<jet.Int>, override.generics.MyAbstractClass<jet.String> {
    public final /*constructor*/ fun <init>(): override.generics.MyLegalAbstractClass1
    internal abstract override /*1*/ fun bar(/*0*/ t: jet.String): jet.String
    internal abstract override /*1*/ fun foo(/*0*/ t: jet.Int): jet.Int
    internal abstract override /*1*/ val pr: jet.String
}
internal abstract class override.generics.MyLegalAbstractClass2</*0*/ T : jet.Any?> : override.generics.MyTrait<jet.Int>, override.generics.MyAbstractClass<jet.Int> {
    public final /*constructor*/ fun </*0*/ T : jet.Any?><init>(/*0*/ t: T): override.generics.MyLegalAbstractClass2<T>
    internal final fun bar(/*0*/ t: T): T
    internal abstract override /*1*/ fun bar(/*0*/ t: jet.Int): jet.Int
    internal final fun foo(/*0*/ t: T): T
    internal abstract override /*1*/ fun foo(/*0*/ t: jet.Int): jet.Int
    internal final val  </*0*/ R : jet.Any?> pr: T
}
internal abstract trait override.generics.MyProps</*0*/ T : jet.Any?> : jet.Any {
    internal abstract val p: T
}
internal abstract trait override.generics.MyTrait</*0*/ T : jet.Any?> : jet.Any {
    internal abstract fun foo(/*0*/ t: T): T
}
// </namespace name="generics">
// </namespace name="override">
