package

public fun </*0*/ S : Base> intersectNullable(/*0*/ vararg elements: S /*kotlin.Array<out S>*/): S?
public fun smartCastAfterIntersection(/*0*/ a: One, /*1*/ b: Two): Base?
public fun test(/*0*/ one: One, /*1*/ two: Two): kotlin.Unit

public interface Base {
    public open fun base(): kotlin.Unit
    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 Base2 {
    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 One : Base, Base2 {
    public open override /*1*/ /*fake_override*/ fun base(): kotlin.Unit
    public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}

public interface Two : Base, Base2 {
    public open override /*1*/ /*fake_override*/ fun base(): kotlin.Unit
    public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
    public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
    public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
