// -- Module: <module1> --
package

package test1 {

    public open class Test1 {
        public constructor Test1()
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public open fun foo(/*0*/ x: kotlin.Int): kotlin.Unit
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }
}

// -- Module: <module2> --
package

public fun main(/*0*/ x: test1.Test1, /*1*/ y: test2.Test2): kotlin.Unit

package test2 {

    public open class Test2 : test1.Test1 {
        public constructor Test2()
        public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
        public open override /*1*/ /*fake_override*/ fun foo(/*0*/ p0: kotlin.Int): kotlin.Unit
        public open fun foo2(/*0*/ x: kotlin.Int!): kotlin.Unit
        public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
        public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
    }
}

