class StringBuilder { fun append(s: String) {} } fun buildString(init: StringBuilder.() -> Unit): String {} interface Template class KDocTemplate : Template { fun definition(content: StringBuilder.() -> Unit) {} } fun > U.insert(template: T, build: T.() -> Unit) {} fun test(ordinal: Int) { buildString { insert(KDocTemplate()) { definition { ordinal?.let {} } } } }