package

public 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
}

public 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
}

public 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
}

public 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
}

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