FILE: inferenceFromCallableReferenceType.kt
    public final fun <T, E> foo(x: R|kotlin/Function1<T, E>|): R|kotlin/Unit| {
    }
    public final fun <T, E> foo2(x: R|kotlin/Function2<A, T, E>|): R|kotlin/Unit| {
    }
    public final class A : R|kotlin/Any| {
        public constructor(): R|A| {
            super<R|kotlin/Any|>()
        }

        public final fun baz(x: R|kotlin/String|): R|kotlin/Int| {
            ^baz when (lval <bangbang>: R|kotlin/Nothing?| = Null(null)) {
                ==($subj$, Null(null)) ->  {
                    throw R|kotlin/KotlinNullPointerException.KotlinNullPointerException|()
                }
                else ->  {
                    R|<local>/<bangbang>|
                }
            }

        }

    }
    public final fun bar(x: R|kotlin/String|): R|kotlin/Int| {
        ^bar when (lval <bangbang>: R|kotlin/Nothing?| = Null(null)) {
            ==($subj$, Null(null)) ->  {
                throw R|kotlin/KotlinNullPointerException.KotlinNullPointerException|()
            }
            else ->  {
                R|<local>/<bangbang>|
            }
        }

    }
    public final fun main(): R|kotlin/Unit| {
        R|/foo|<R|kotlin/String|, R|kotlin/Int|>(::R|/bar|)
        R|/foo|<R|kotlin/String|, R|kotlin/Int|>(R|/A.A|()::R|/A.baz|)
        R|/foo2|<R|kotlin/String|, R|kotlin/Int|>(Q|A|::R|/A.baz|)
    }
