FILE: interfaces.kt
    public abstract interface Ctx : R|kotlin/Any| {
    }
    public abstract interface I1 : R|kotlin/Any| {
        public abstract fun foo(): R|kotlin/Unit|

        context(ctx: R|Ctx|)
        public abstract fun foo(): R|kotlin/Unit|

    }
    public abstract interface I2 : R|kotlin/Any| {
        public open fun foo(): R|kotlin/Unit| {
        }

    }
    public abstract interface I3 : R|kotlin/Any| {
        context(ctx: R|Ctx|)
        public open fun foo(): R|kotlin/Unit| {
        }

    }
FILE: test.kt
    public final class K1 : R|J1| {
        public constructor(): R|K1| {
            super<R|J1|>()
        }

    }
    public final class K2 : R|J2| {
        public constructor(): R|K2| {
            super<R|J2|>()
        }

    }
    public final class K3 : R|I2|, R|I3| {
        public constructor(): R|K3| {
            super<R|kotlin/Any|>()
        }

    }
    public final class K4 : R|I2| {
        public constructor(): R|K4| {
            super<R|kotlin/Any|>()
        }

    }
    public final class K5 : R|I3| {
        public constructor(): R|K5| {
            super<R|kotlin/Any|>()
        }

    }
    public final fun test1(): R|kotlin/Unit| {
        R|/J1.J1|().R|/J1.foo|()
        R|/J2.J2|().R|/I2.foo|()
        R|/K1.K1|().R|/J1.foo|()
        R|/K2.K2|().R|/I2.foo|()
        R|/K3.K3|().R|/I2.foo|()
        R|/K4.K4|().R|/I2.foo|()
        R|/K5.K5|().R|/I3.foo<Inapplicable(INAPPLICABLE): /I3.foo>#|()
    }
    context(ctx: R|Ctx|)
    public final fun test2(): R|kotlin/Unit| {
        R|/J1.J1|().<Ambiguity: foo, [/J1.foo, /J1.foo]>#()
        R|/J2.J2|().<Ambiguity: foo, [/I2.foo, /I3.foo]>#()
        R|/K1.K1|().<Ambiguity: foo, [/J1.foo, /J1.foo]>#()
        R|/K2.K2|().<Ambiguity: foo, [/I2.foo, /I3.foo]>#()
        R|/K3.K3|().<Ambiguity: foo, [/I2.foo, /I3.foo]>#()
        R|/K4.K4|().R|/I2.foo|()
        context(R|<local>/ctx|) R|/K5.K5|().R|/I3.foo|()
    }
