FILE: main.kt
    public abstract interface B : R|kotlin/Any| {
        public open fun foo(x: R|kotlin/Int|): R|kotlin/String| {
            ^foo String(B)
        }

    }
    public open class C : R|A<kotlin/String>| {
        public constructor(): R|C| {
            super<R|A<kotlin/String>|>()
        }

    }
    public final class D : R|C|, R|B| {
        public constructor(): R|D| {
            super<R|C|>()
        }

    }
    public final fun main(): R|kotlin/Unit| {
        R|/D.D|().R|/B.foo|(Int(42))
    }
