interface I abstract class AbstractTest { abstract fun normal(): suspend (String) -> Unit abstract fun extension(): suspend Double.() -> Double abstract fun bigArity(): suspend (I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I) -> Unit } class Test : AbstractTest() { override fun normal() = ::suspendNormal override fun extension() = Double::suspendExtension override fun bigArity() = this::suspendBigArity private suspend fun suspendNormal(s: String) {} private suspend fun suspendBigArity( p01: I, p02: I, p03: I, p04: I, p05: I, p06: I, p07: I, p08: I, p09: I, p10: I, p11: I, p12: I, p13: I, p14: I, p15: I, p16: I, p17: I, p18: I, p19: I, p20: I, p21: I, p22: I, p23: I, p24: I, p25: I, p26: I, p27: I, p28: I, p29: I, p30: I ) {} } private suspend fun Double.suspendExtension(): Double = this // method: Test::normal // jvm signature: ()Lkotlin/reflect/KFunction; // generic signature: ()Lkotlin/reflect/KFunction; // method: Test::extension // jvm signature: ()Lkotlin/reflect/KFunction; // generic signature: ()Lkotlin/reflect/KFunction; // method: Test::bigArity // jvm signature: ()Lkotlin/reflect/KFunction; // generic signature: ()Lkotlin/reflect/KFunction;