package

public fun main(): kotlin.Unit

public open class Boo</*0*/ N : kotlin.Any!> {
    public constructor Boo</*0*/ N : kotlin.Any!>()
    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 open class Foo</*0*/ P1 : Boo<P2!>!, /*1*/ P2 : Boo<P1!>!, /*2*/ P3 : Boo<P1!>!, /*3*/ P4 : Boo<P1!>!> {
    public constructor Foo</*0*/ P1 : Boo<P2!>!, /*1*/ P2 : Boo<P1!>!, /*2*/ P3 : Boo<P1!>!, /*3*/ P4 : Boo<P1!>!>()
    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

    // Static members
    public/*package*/ open fun test1(): (Foo<(raw) Boo<Boo<*>!>!, (raw) Boo<*>!, (raw) Boo<Boo<Boo<*>!>!>!, (raw) Boo<Boo<Boo<*>!>!>!>..Foo<out Boo<out Boo<*>!>!, out Boo<*>!, out Boo<out Boo<out Boo<*>!>!>!, out Boo<out Boo<out Boo<*>!>!>!>?)
}
