// CHECK JVM_IR:
//   Mangled name: #k@kotlin.String(){}kotlin.Function0<kotlin.String>
//   Public signature: /k|-4623891636485044145[0]
//   Public signature debug description: k@kotlin.String(){}kotlin.Function0<kotlin.String>
// CHECK JS_IR NATIVE:
//   Mangled name: #k@kotlin.String(){}
//   Public signature: /k|603037284564559001[0]
//   Public signature debug description: k@kotlin.String(){}
fun String.k(): Function0<String>

// CHECK:
//   Mangled name: #test1(kotlin.Function0<kotlin.Unit>){}
//   Public signature: /test1|-2870537507416699845[0]
//   Public signature debug description: test1(kotlin.Function0<kotlin.Unit>){}
fun test1(f: Function0<Unit>): Unit

// CHECK:
//   Mangled name: #test2(kotlin.Function1<kotlin.String,kotlin.Unit>){}
//   Public signature: /test2|4596316013814715028[0]
//   Public signature debug description: test2(kotlin.Function1<kotlin.String,kotlin.Unit>){}
fun test2(f: @ExtensionFunctionType Function1<String, Unit>): Unit

// CHECK JVM_IR:
//   Mangled name: #test3(){}kotlin.String
//   Public signature: /test3|3344305992477585251[0]
//   Public signature debug description: test3(){}kotlin.String
// CHECK JS_IR NATIVE:
//   Mangled name: #test3(){}
//   Public signature: /test3|-3759735065270951803[0]
//   Public signature debug description: test3(){}
fun test3(): String

// CHECK JVM_IR:
//   Mangled name: #test4(kotlin.String?){}kotlin.String?
//   Public signature: /test4|-1434334118883225411[0]
//   Public signature debug description: test4(kotlin.String?){}kotlin.String?
// CHECK JS_IR NATIVE:
//   Mangled name: #test4(kotlin.String?){}
//   Public signature: /test4|-2246924836724040051[0]
//   Public signature debug description: test4(kotlin.String?){}
fun test4(ns: String?): String?

