interface X interface Z interface A : X, Z interface B : X, Z fun interface IFoo { fun accept(t: T) } fun sel(x: T, y: T) = x class G { fun check(x: IFoo) {} } fun box(): String { val g = sel(G(), G()) // g: G g.check {} // (*) target SAM type: IFoo return "OK" }