enum class Gender { MALE, FEMALE } inline fun postInline(block: () -> Unit) = block() fun post(block: () -> Unit) = block() fun main(args: Array) { postInline { enumValueOf("MALE") } post { enumValueOf("MALE") } } // The postInline {...} translates to: LINENUMBER 19 L3 LDC "MALE" ASTORE 1 ALOAD 1 INVOKESTATIC Gender.valueOf (Ljava/lang/String;)LGender; // Whereas, post {...} translates to: LINENUMBER 20 L9 INVOKESTATIC kotlin/jvm/internal/Intrinsics.needClassReification ()V GETSTATIC NoCommitKt$main$2.INSTANCE : LNoCommitKt$main$2; CHECKCAST kotlin/jvm/functions/Function0 INVOKESTATIC NoCommitKt.post (Lkotlin/jvm/functions/Function0;)V Notice the Intrinsics.needClassReification() call