FILE: typeAliasWithTypeArguments.kt
    public abstract interface A : R|kotlin/Any| {
        public abstract fun foo(): R|kotlin/Unit|

    }
    public abstract interface B : R|kotlin/Any| {
        public abstract fun bar(): R|kotlin/Unit|

    }
    public abstract interface C : R|kotlin/Any| {
        public abstract fun baz(): R|kotlin/Unit|

    }
    public abstract interface Inv<K, T> : R|kotlin/Any| {
        public abstract fun k(): R|K|

        public abstract fun t(): R|T|

    }
    public final typealias Inv0 = R|Inv<A, B>|
    public final typealias Inv1<X> = R|Inv<A, X>|
    public final typealias Inv2<X, Y> = R|Inv<X, Y>|
    public final typealias Inv3<X, Y, Z> = R|Inv<X, Z>|
    public final fun testBase(inv: R|Inv<A, B>|): R|kotlin/Unit| {
        R|<local>/inv|.R|SubstitutionOverride</Inv.k: R|A|>|()
        R|<local>/inv|.R|SubstitutionOverride</Inv.t: R|B|>|()
    }
    public final fun test_0(inv: R|Inv0|): R|kotlin/Unit| {
        R|<local>/inv|.R|SubstitutionOverride</Inv.k: R|A|>|().R|/A.foo|()
        R|<local>/inv|.R|SubstitutionOverride</Inv.t: R|B|>|().R|/B.bar|()
    }
    public final fun test_1(inv: R|Inv1<B>|): R|kotlin/Unit| {
        R|<local>/inv|.R|SubstitutionOverride</Inv.k: R|A|>|().R|/A.foo|()
        R|<local>/inv|.R|SubstitutionOverride</Inv.t: R|B|>|().R|/B.bar|()
    }
    public final fun test_2(inv: R|Inv2<A, B>|): R|kotlin/Unit| {
        R|<local>/inv|.R|SubstitutionOverride</Inv.k: R|A|>|().R|/A.foo|()
        R|<local>/inv|.R|SubstitutionOverride</Inv.t: R|B|>|().R|/B.bar|()
    }
    public final fun test_3(inv: R|Inv3<A, B, C>|): R|kotlin/Unit| {
        R|<local>/inv|.R|SubstitutionOverride</Inv.k: R|A|>|().R|/A.foo|()
        R|<local>/inv|.R|SubstitutionOverride</Inv.t: R|C|>|().<Unresolved name: bar>#()
        R|<local>/inv|.R|SubstitutionOverride</Inv.t: R|C|>|().R|/C.baz|()
    }
    public final typealias Inv02<A1, B1, C1> = R|Inv<Inv<A1, B1>, C1>|
    public final fun test_4(inv: R|Inv02<A, B, C>|): R|kotlin/Unit| {
        R|<local>/inv|.R|SubstitutionOverride</Inv.k: R|Inv<A, B>|>|().R|SubstitutionOverride</Inv.k: R|A|>|().R|/A.foo|()
        R|<local>/inv|.R|SubstitutionOverride</Inv.k: R|Inv<A, B>|>|().R|SubstitutionOverride</Inv.t: R|B|>|().R|/B.bar|()
        R|<local>/inv|.R|SubstitutionOverride</Inv.t: R|C|>|().R|/C.baz|()
    }
    public abstract interface In<in T> : R|kotlin/Any| {
        public abstract fun take(x: R|T|): R|kotlin/Unit|

    }
    public abstract interface Out<out T> : R|kotlin/Any| {
        public abstract fun value(): R|T|

    }
    public abstract interface Invariant<T> : R|kotlin/Any| {
        public abstract fun take(x: R|T|): R|kotlin/Unit|

        public abstract fun value(): R|T|

    }
    public final typealias In1<X> = R|In<X>|
    public final typealias Out1<X> = R|Out<X>|
    public final typealias Invariant1<X> = R|Invariant<X>|
    public final fun test_5(a: R|A|, in1: R|In1<A>|, in2: R|In1<in A>|, in3: R|In1<out A>|): R|kotlin/Unit| {
        R|<local>/in1|.R|SubstitutionOverride</In.take: R|kotlin/Unit|>|(R|<local>/a|)
        R|<local>/in2|.R|SubstitutionOverride</In.take: R|kotlin/Unit|>|(R|<local>/a|)
        R|<local>/in3|.<Unresolved name: take>#(R|<local>/a|)
    }
    public final fun test_6(a: R|A|, out1: R|Out1<A>|, out2: R|Out1<in A>|, out3: R|Out1<out A>|): R|kotlin/Unit| {
        R|<local>/out1|.R|SubstitutionOverride</Out.value: R|A|>|().R|/A.foo|()
        R|<local>/out2|.<Unresolved name: value>#().<Unresolved name: foo>#()
        R|<local>/out3|.R|SubstitutionOverride</Out.value: R|CapturedType(out A)|>|().R|/A.foo|()
    }
    public final fun test_7(a: R|A|, inv1: R|Invariant1<A>|, inv2: R|Invariant1<in A>|, inv3: R|Invariant1<out A>|): R|kotlin/Unit| {
        R|<local>/inv1|.R|SubstitutionOverride</Invariant.value: R|A|>|().R|/A.foo|()
        R|<local>/inv2|.R|SubstitutionOverride</Invariant.value: R|CapturedType(in A)|>|().<Unresolved name: foo>#()
        R|<local>/inv3|.R|SubstitutionOverride</Invariant.value: R|CapturedType(out A)|>|().R|/A.foo|()
        R|<local>/inv1|.R|SubstitutionOverride</Invariant.take: R|kotlin/Unit|>|(R|<local>/a|)
        R|<local>/inv2|.R|SubstitutionOverride</Invariant.take: R|kotlin/Unit|>|(R|<local>/a|)
        R|<local>/inv3|.<Inapplicable(INAPPLICABLE): /Invariant.take>#(R|<local>/a|)
    }
