// FIR_IDENTICAL interface Controller { fun yield(t: F) } fun generate(g: suspend Controller.() -> Unit): S = TODO() interface Topic fun subscribe(topic: Topic, handler: E) {} fun messageBusFlow( topic: Topic, initialValue: (suspend () -> K)? = null, listener: suspend Controller.() -> L ) { generate { initialValue?.let { yield(it()) } subscribe(topic, listener()) } }