package

public fun add1(/*0*/ x: Impl2, /*1*/ y: Base): Impl1
public fun add2(/*0*/ x: Base, /*1*/ y: Impl2): Impl1
public fun error1(/*0*/ x: Impl2, /*1*/ y: Base): Impl1
public fun error2(/*0*/ x: Base, /*1*/ y: Impl2): Impl1
public fun error3(/*0*/ x: Impl2): Impl1
public fun minus3(/*0*/ x: Impl2): Impl1
public operator fun Base.plus(/*0*/ arg: Base): Impl1
public operator fun Base.plus(/*0*/ arg: Impl2): Impl2
public operator fun Impl2.plus(/*0*/ arg: Base): Impl2
public operator fun Base.unaryMinus(): Impl1
public operator fun Impl2.unaryMinus(): Impl2

public interface Base {
    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 Impl1 : Base {
    public constructor Impl1()
    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 Impl2 : Base {
    public constructor Impl2()
    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
}
