fun generate(c: Controller.() -> Unit): E = TODO() interface In { fun call(t: T1) {} } interface Controller { val prop: In fun get(): F } fun id(f: F): F = TODO() fun select(e1: F2, e: F2): F2 = e fun main() { generate { prop.call("") }.length generate { id(prop).call("") }.length generate { prop.call("") get().length id(get()).length }.length generate { select("", get()).length }.length }