fun String.k(): Function0 { return local fun (): String { return } } fun test1(f: Function0) { return f.invoke() } fun test2(f: @ExtensionFunctionType Function1) { return f.invoke(p1 = "hello") } fun test3(): String { return "hello".k().invoke() } fun test4(ns: String?): String? { return { // BLOCK val tmp_0: Function0? = { // BLOCK val tmp_1: String? = ns when { EQEQ(arg0 = tmp_1, arg1 = null) -> null else -> tmp_1.k() } } when { EQEQ(arg0 = tmp_0, arg1 = null) -> null else -> tmp_0.invoke() } } }