FILE: main.kt public abstract interface KB : R|kotlin/Any| { public abstract override fun getFoo(): R|F| public abstract override fun getBar(): R|F| } public abstract interface D1 : R|JA|, R|KB| { } public abstract interface E1 : R|D1| { public abstract override fun getFoo(): R|kotlin/String| public abstract override fun getBar(): R|kotlin/String| } public abstract interface D2 : R|KB|, R|JA| { } public abstract interface E2 : R|D2| { public abstract override fun getFoo(): R|kotlin/String| public abstract override fun getBar(): R|kotlin/String| } public final fun main(d1: R|D1|, e1: R|E1|, d2: R|D2|, e2: R|E2|): R|kotlin/Unit| { R|/d1|.R|/KB.foo| R|/d1|.# R|/e1|.R|/E1.foo| R|/e1|.# R|/d2|.R|/KB.foo| R|/d2|.# R|/e2|.R|/E2.foo| R|/e2|.# }