package

package typeInferenceExpectedTypeMismatch {
    public fun </*0*/ T> bar(/*0*/ o: typeInferenceExpectedTypeMismatch.Out<T>, /*1*/ i: typeInferenceExpectedTypeMismatch.In<T>): typeInferenceExpectedTypeMismatch.Two<T, T>
    public fun </*0*/ T, /*1*/ R> foo(/*0*/ o: typeInferenceExpectedTypeMismatch.Out<T>, /*1*/ i: typeInferenceExpectedTypeMismatch.In<R>): typeInferenceExpectedTypeMismatch.Two<T, R>
    public fun </*0*/ S> newList(): java.util.ArrayList<S>
    public fun test(): kotlin.Unit
    public fun test1(/*0*/ outA: typeInferenceExpectedTypeMismatch.Out<typeInferenceExpectedTypeMismatch.A>, /*1*/ inB: typeInferenceExpectedTypeMismatch.In<typeInferenceExpectedTypeMismatch.B>): kotlin.Unit
    public fun test2(/*0*/ outA: typeInferenceExpectedTypeMismatch.Out<typeInferenceExpectedTypeMismatch.A>, /*1*/ inC: typeInferenceExpectedTypeMismatch.In<typeInferenceExpectedTypeMismatch.C>): kotlin.Unit
    public fun use(/*0*/ vararg a: kotlin.Any? /*kotlin.Array<out kotlin.Any?>*/): kotlin.Array<out kotlin.Any?>

    public interface 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 interface B : typeInferenceExpectedTypeMismatch.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 interface C : typeInferenceExpectedTypeMismatch.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 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 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 Two</*0*/ T, /*1*/ R> {
        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
    }
}
