interface A { fun foo() {} } interface B : A, E {} interface C : B {} interface D : B {} interface E : F {} interface F : D, C {} interface G : F {} interface H : F {} val a : A? = null val b : B? = null val c : C? = null val d : D? = null val e : E? = null val f : F? = null val g : G? = null val h : H? = null fun test() { a?.foo() b?.foo() c?.foo() d?.foo() e?.foo() f?.foo() g?.foo() h?.foo() }