// FIR_IDENTICAL class Controller { fun yield(t: T): Boolean = true } fun generate(g: suspend Controller.() -> Unit): S = TODO() interface Base interface Derived : Base fun foo( base: Base, derived: Derived, ) { val t = generate { twoBooleans(yield(base), yield(derived)) } // Should be Base, not just Derived t } fun twoBooleans(x: Boolean, y: Boolean) {}