namespace <root>

internal open class Br : T {
    public final /*constructor*/ fun <init>(/*0*/ t: T): Br
    internal abstract override /*1*/ fun foo(): jet.Tuple0
    internal abstract override /*1*/ val v: jet.Int
}
internal open class Br1 : T {
    public final /*constructor*/ fun <init>(/*0*/ t: T): Br1
    internal open override /*1*/ fun foo(): jet.Tuple0
    internal open override /*1*/ val v: jet.Int
}
internal final class Br2 : Br1 {
    public final /*constructor*/ fun <init>(/*0*/ t: T): Br2
    internal open override /*1*/ fun foo(): jet.Tuple0
    internal open override /*1*/ val v: jet.Int
}
internal final class Br3 : Br {
    public final /*constructor*/ fun <init>(/*0*/ t: T): Br3
    internal abstract override /*1*/ fun foo(): jet.Tuple0
    internal abstract override /*1*/ val v: jet.Int
}
internal abstract trait G</*0*/ T : jet.Any?> : jet.Any {
    internal abstract fun foo(/*0*/ t: T): T
}
internal final class GC : G<jet.Int> {
    public final /*constructor*/ fun <init>(): GC
    internal abstract override /*1*/ fun foo(/*0*/ t: jet.Int): jet.Int
}
internal open class GC1 : G<jet.Int> {
    public final /*constructor*/ fun <init>(/*0*/ g: G<jet.Int>): GC1
    internal open override /*1*/ fun foo(/*0*/ t: jet.Int): jet.Int
}
internal open class GC2 : GC1 {
    public final /*constructor*/ fun <init>(/*0*/ g: G<jet.Int>): GC2
    internal open override /*1*/ fun foo(/*0*/ t: jet.Int): jet.Int
}
internal abstract trait T : jet.Any {
    internal abstract fun foo(): jet.Tuple0
    internal abstract val v: jet.Int
}
