package

public fun </*0*/ T : kotlin.Any> doA(/*0*/ i: A<T?>): kotlin.Unit
public fun </*0*/ T : kotlin.Any> doIn(/*0*/ i: In<T?>): kotlin.Unit
public fun </*0*/ T : kotlin.Any> doOut(/*0*/ o: Out<T?>): T
public fun </*0*/ T : kotlin.Any> doT(/*0*/ t: T?): T
public fun test(/*0*/ out: Out<kotlin.Int>, /*1*/ i: In<kotlin.Int>, /*2*/ inv: A<kotlin.Int>): kotlin.Unit

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