FILE: main.kt
    public final fun foo1(x: R|MyFunction<kotlin/Int, kotlin/String>|): R|kotlin/Unit| {
    }
    public final fun foo2(x: R|MyFunction<in kotlin/Number, out kotlin/CharSequence>|): R|kotlin/Unit| {
    }
    public final fun <X, Y> foo3(f: R|MyFunction<X, Y>|, x: R|X|): R|kotlin/Unit| {
    }
    public final fun main(): R|kotlin/Unit| {
        R|/foo1|(R|/MyFunction|<R|kotlin/Int|, R|kotlin/String|>(<L> = MyFunction@fun <anonymous>(x: R|kotlin/Int!|): R|kotlin/String!| <inline=NoInline>  {
            ^ R|<local>/x|.R|kotlin/Int.toInt|().R|kotlin/Int.toString|()
        }
        ))
        R|/foo2|(R|/MyFunction|<R|kotlin/Number|, R|kotlin/String!|>(<L> = MyFunction@fun <anonymous>(x: R|kotlin/Number!|): R|kotlin/String!| <inline=NoInline>  {
            ^ R|<local>/x|.R|kotlin/Number.toInt|().R|kotlin/Int.toString|()
        }
        ))
        R|/foo2<Inapplicable(INAPPLICABLE): /foo2>#|(R|/MyFunction|<R|kotlin/Int!|, R|kotlin/String!|>(<L> = MyFunction@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/String!| <inline=NoInline>  {
            ^ R|<local>/x|.R|kotlin/Int.toString|()
        }
        ))
        R|/foo3|<R|kotlin/Int|, R|kotlin/String!|>(R|/MyFunction|<R|kotlin/Int|, R|kotlin/String!|>(<L> = MyFunction@fun <anonymous>(x: R|kotlin/Int!|): R|kotlin/String!| <inline=NoInline>  {
            ^ R|<local>/x|.R|kotlin/Int.plus|(Int(1)).R|kotlin/Int.toString|()
        }
        ), Int(1))
        R|/foo3|<R|kotlin/Int|, R|kotlin/String!|>(R|/MyFunction|<R|kotlin/Int|, R|kotlin/String!|>(<L> = MyFunction@fun <anonymous>(x: R|kotlin/Number|): R|kotlin/String!| <inline=NoInline>  {
            ^ R|<local>/x|.R|kotlin/Number.toInt|().R|kotlin/Int.toString|()
        }
        ), Int(2))
    }
