package

internal interface In</*0*/ in 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
}

internal interface Inv</*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
}

internal interface Out</*0*/ out 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
}

internal interface Pair</*0*/ out X, /*1*/ out Y> {
    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
}

internal interface Test</*0*/ in I, /*1*/ out O, /*2*/ P> {
    internal abstract var neOk1: O
    internal abstract var neOk10: In<out I>
    internal abstract var neOk11: I
    internal abstract var neOk12: In<O>
    internal abstract var neOk13: In<In<I>>
    internal abstract var neOk14: Out<I>
    internal abstract var neOk15: Out<Out<I>>
    internal abstract var neOk16: Out<In<O>>
    internal abstract var neOk17: Pair<In<O>, I>
    internal abstract var neOk2: In<I>
    internal abstract var neOk20: Inv<in O>
    internal abstract var neOk21: Inv<in I>
    internal abstract var neOk22: Inv<out O>
    internal abstract var neOk23: Inv<out I>
    internal abstract var neOk3: In<In<O>>
    internal abstract var neOk30: Pair<I, [ERROR : No type element]>
    internal abstract var neOk31: Pair<I, [ERROR : Inv]>
    internal abstract var neOk32: [ERROR : Inv]
    internal abstract var neOk33: Inv<[ERROR : No type element]>
    internal abstract var neOk34: Inv<[ERROR : C]>
    internal abstract var neOk35: [ERROR : Inv]<P, P>
    internal abstract var neOk4: Inv<I>
    internal abstract var neOk5: Inv<O>
    internal abstract var neOk6: In<In<O>>
    internal abstract var neOk7: Pair<In<I>, O>
    internal abstract var neOk8: Inv<in O>
    internal abstract var neOk9: Inv<in I>
    internal abstract var ok1: Inv<P>
    internal abstract var ok2: P
    internal abstract var ok3: Out<In<P>>
    internal abstract var ok4: Pair<In<P>, Out<P>>
    internal abstract var ok5: Inv<out P>
    internal abstract var ok6: Inv<in P>
    internal abstract var ok7: Inv<out P>
    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
}
