class A { fun B.foo() {} } interface B fun bar(a: A, b: B) { with (a) { with (b) { foo() } } } Resolved call: Resulting descriptor: fun B.foo(): Unit defined in A Explicit receiver kind = NO_EXPLICIT_RECEIVER Dispatch receiver = AExt{fun A.``(): Unit defined in bar} Extension receiver = BExt{fun B.``(): Unit defined in bar.``}