package

public fun </*0*/ T : kotlin.Int?> bar(): kotlin.Unit
public fun </*0*/ T : kotlin.Any> foo(): kotlin.Unit
public fun test(): kotlin.Unit
public fun </*0*/ T : kotlin.Int> kotlin.Int.buzz(): kotlin.Unit

public open class A {
    public constructor A()
    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 B</*0*/ T : A> {
    public constructor B</*0*/ T : A>()
    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 C</*0*/ T : B<kotlin.Int>, /*1*/ X : (B<kotlin.Char>) -> Pair<B<kotlin.Any>, B<A>>> : B<kotlin.Any> {
    public constructor C</*0*/ T : B<kotlin.Int>, /*1*/ X : (B<kotlin.Char>) -> Pair<B<kotlin.Any>, B<A>>>()
    public final val a: B<kotlin.Char>
    public abstract val x: (B<kotlin.Char>) -> B<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 final class Pair</*0*/ A, /*1*/ B> {
    public constructor Pair</*0*/ A, /*1*/ B>()
    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
}

package boundsWithSubstitutors {
    public val a: boundsWithSubstitutors.B<boundsWithSubstitutors.C>
    public val a1: boundsWithSubstitutors.B<kotlin.Int>
    public val b: boundsWithSubstitutors.X<kotlin.Any, boundsWithSubstitutors.X<boundsWithSubstitutors.A<boundsWithSubstitutors.C>, boundsWithSubstitutors.C>>
    public val b0: boundsWithSubstitutors.X<kotlin.Any, kotlin.Any?>
    public val b1: boundsWithSubstitutors.X<kotlin.Any, boundsWithSubstitutors.X<boundsWithSubstitutors.A<boundsWithSubstitutors.C>, kotlin.String>>

    public open class A</*0*/ T> {
        public constructor A</*0*/ 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 final class B</*0*/ X : boundsWithSubstitutors.A<X>> {
        public constructor B</*0*/ X : boundsWithSubstitutors.A<X>>()
        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 final class C : boundsWithSubstitutors.A<boundsWithSubstitutors.C> {
        public constructor C()
        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 final class X</*0*/ A, /*1*/ B : A> {
        public constructor X</*0*/ A, /*1*/ B : A>()
        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
    }
}
