Experiment
diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java
index c3bf8d2..dd920d3 100644
--- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java
+++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java
@@ -24649,12 +24649,30 @@
     }
 
     @Test
+    @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+    public void testInlinedLambdaWithErasedParamType() {
+      runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+    }
+
+    @Test
     @TestMetadata("innerInlineFunCapturesOuter.kt")
     public void testInnerInlineFunCapturesOuter() {
       runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
     }
 
     @Test
+    @TestMetadata("kt66017.kt")
+    public void testKt66017() {
+      runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+    }
+
+    @Test
+    @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+    public void testKt66017_inlineFromTheSameModule() {
+      runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+    }
+
+    @Test
     @TestMetadata("lambdaAsAny.kt")
     public void testLambdaAsAny() {
       runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java
index 6506352..ae3df49 100644
--- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java
+++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java
@@ -24649,12 +24649,30 @@
     }
 
     @Test
+    @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+    public void testInlinedLambdaWithErasedParamType() {
+      runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+    }
+
+    @Test
     @TestMetadata("innerInlineFunCapturesOuter.kt")
     public void testInnerInlineFunCapturesOuter() {
       runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
     }
 
     @Test
+    @TestMetadata("kt66017.kt")
+    public void testKt66017() {
+      runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+    }
+
+    @Test
+    @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+    public void testKt66017_inlineFromTheSameModule() {
+      runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+    }
+
+    @Test
     @TestMetadata("lambdaAsAny.kt")
     public void testLambdaAsAny() {
       runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java
index c855920..7b2771b 100644
--- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java
+++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java
@@ -24572,12 +24572,30 @@
     }
 
     @Test
+    @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+    public void testInlinedLambdaWithErasedParamType() {
+      runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+    }
+
+    @Test
     @TestMetadata("innerInlineFunCapturesOuter.kt")
     public void testInnerInlineFunCapturesOuter() {
       runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
     }
 
     @Test
+    @TestMetadata("kt66017.kt")
+    public void testKt66017() {
+      runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+    }
+
+    @Test
+    @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+    public void testKt66017_inlineFromTheSameModule() {
+      runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+    }
+
+    @Test
     @TestMetadata("lambdaAsAny.kt")
     public void testLambdaAsAny() {
       runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated.java
index 7f210c56..baebd44 100644
--- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated.java
+++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated.java
@@ -24572,12 +24572,30 @@
     }
 
     @Test
+    @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+    public void testInlinedLambdaWithErasedParamType() {
+      runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+    }
+
+    @Test
     @TestMetadata("innerInlineFunCapturesOuter.kt")
     public void testInnerInlineFunCapturesOuter() {
       runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
     }
 
     @Test
+    @TestMetadata("kt66017.kt")
+    public void testKt66017() {
+      runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+    }
+
+    @Test
+    @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+    public void testKt66017_inlineFromTheSameModule() {
+      runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+    }
+
+    @Test
     @TestMetadata("lambdaAsAny.kt")
     public void testLambdaAsAny() {
       runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java
index 06625a6..a4e1d61 100644
--- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java
+++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java
@@ -24572,12 +24572,30 @@
     }
 
     @Test
+    @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+    public void testInlinedLambdaWithErasedParamType() {
+      runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+    }
+
+    @Test
     @TestMetadata("innerInlineFunCapturesOuter.kt")
     public void testInnerInlineFunCapturesOuter() {
       runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
     }
 
     @Test
+    @TestMetadata("kt66017.kt")
+    public void testKt66017() {
+      runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+    }
+
+    @Test
+    @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+    public void testKt66017_inlineFromTheSameModule() {
+      runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+    }
+
+    @Test
     @TestMetadata("lambdaAsAny.kt")
     public void testLambdaAsAny() {
       runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt
index 95ee094..c849667 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt
@@ -13,7 +13,6 @@
 import org.jetbrains.kotlin.backend.common.lower.inline.LocalClassesInInlineLambdasLowering
 import org.jetbrains.kotlin.backend.common.lower.loops.ForLoopsLowering
 import org.jetbrains.kotlin.backend.common.phaser.*
-import org.jetbrains.kotlin.config.CommonConfigurationKeys
 import org.jetbrains.kotlin.ir.backend.js.lower.*
 import org.jetbrains.kotlin.ir.backend.js.lower.calls.CallsLowering
 import org.jetbrains.kotlin.ir.backend.js.lower.cleanup.CleanupLowering
@@ -215,6 +214,7 @@
             it.innerClassesSupport,
             alwaysCreateTemporaryVariablesForArguments = true,
             inlineArgumentsWithOriginalOffset = true,
+            insertAdditionalImplicitCasts = true
         )
     },
     name = "FunctionInliningPhase",
diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLoweringPhases.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLoweringPhases.kt
index b5616ac..8291584 100644
--- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLoweringPhases.kt
+++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLoweringPhases.kt
@@ -18,13 +18,11 @@
 import org.jetbrains.kotlin.descriptors.DescriptorVisibility
 import org.jetbrains.kotlin.ir.declarations.*
 import org.jetbrains.kotlin.ir.inline.FunctionInlining
-import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
 import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
 import org.jetbrains.kotlin.ir.util.PatchDeclarationParentsVisitor
 import org.jetbrains.kotlin.ir.util.isAnonymousObject
 import org.jetbrains.kotlin.ir.util.isExpect
 import org.jetbrains.kotlin.ir.util.parentAsClass
-import org.jetbrains.kotlin.ir.util.resolveFakeOverride
 import org.jetbrains.kotlin.ir.visitors.acceptVoid
 import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities
 import org.jetbrains.kotlin.name.NameUtils
@@ -299,7 +297,8 @@
             innerClassesSupport = context.innerClassesSupport,
             alwaysCreateTemporaryVariablesForArguments = true,
             regenerateInlinedAnonymousObjects = true,
-            inlineArgumentsWithOriginalOffset = true
+            inlineArgumentsWithOriginalOffset = true,
+            insertAdditionalImplicitCasts = true
         )
     },
     name = "FunctionInliningPhase",
diff --git a/compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt b/compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt
new file mode 100644
index 0000000..fe2c616
--- /dev/null
+++ b/compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt
@@ -0,0 +1,15 @@
+class A<T>(val prop: T)
+
+inline fun <T> A<T>.process(action: (T) -> Unit) {
+    action(prop)
+}
+
+inline fun acceptInt(p: Int, action: (Int) -> Unit) {
+    action(p)
+}
+
+fun box(): String {
+    var x = 0
+    A(1).process { acceptInt(it) { p -> x += p } }
+    return ('N' + x).toString() + "K"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/inline/kt66017.kt b/compiler/testData/codegen/box/inline/kt66017.kt
new file mode 100644
index 0000000..5817001
--- /dev/null
+++ b/compiler/testData/codegen/box/inline/kt66017.kt
@@ -0,0 +1,10 @@
+// WITH_STDLIB
+
+fun box(): String {
+    listOf(1).forEach { size ->
+        repeat(size) {
+            return "OK"
+        }
+    }
+    return "Fail"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt b/compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt
new file mode 100644
index 0000000..a1bfea2
--- /dev/null
+++ b/compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt
@@ -0,0 +1,20 @@
+// WITH_STDLIB
+inline fun <T> Iterable<T>.myForEach(action: (T) -> Unit): Unit {
+    for (element in this) action(element)
+}
+
+inline fun myRepeat(times: Int, action: (Int) -> Unit) {
+    for (index in 0 until times) {
+        action(index)
+    }
+}
+
+
+fun box(): String {
+    listOf(1).myForEach { size ->
+        myRepeat(size) {
+            return "OK"
+        }
+    }
+    return "Fail"
+}
\ No newline at end of file
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java
index ddb31c5..e582037 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java
@@ -24572,12 +24572,30 @@
     }
 
     @Test
+    @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+    public void testInlinedLambdaWithErasedParamType() {
+      runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+    }
+
+    @Test
     @TestMetadata("innerInlineFunCapturesOuter.kt")
     public void testInnerInlineFunCapturesOuter() {
       runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
     }
 
     @Test
+    @TestMetadata("kt66017.kt")
+    public void testKt66017() {
+      runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+    }
+
+    @Test
+    @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+    public void testKt66017_inlineFromTheSameModule() {
+      runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+    }
+
+    @Test
     @TestMetadata("lambdaAsAny.kt")
     public void testLambdaAsAny() {
       runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java
index d4a48e0..a4be871 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java
@@ -23336,6 +23336,24 @@
     }
 
     @Test
+    @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+    public void testInlinedLambdaWithErasedParamType() {
+      runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+    }
+
+    @Test
+    @TestMetadata("kt66017.kt")
+    public void testKt66017() {
+      runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+    }
+
+    @Test
+    @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+    public void testKt66017_inlineFromTheSameModule() {
+      runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+    }
+
+    @Test
     @TestMetadata("lambdaAsAny.kt")
     public void testLambdaAsAny() {
       runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java
index 964f61f..f7fb639 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java
@@ -24572,12 +24572,30 @@
     }
 
     @Test
+    @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+    public void testInlinedLambdaWithErasedParamType() {
+      runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+    }
+
+    @Test
     @TestMetadata("innerInlineFunCapturesOuter.kt")
     public void testInnerInlineFunCapturesOuter() {
       runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
     }
 
     @Test
+    @TestMetadata("kt66017.kt")
+    public void testKt66017() {
+      runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+    }
+
+    @Test
+    @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+    public void testKt66017_inlineFromTheSameModule() {
+      runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+    }
+
+    @Test
     @TestMetadata("lambdaAsAny.kt")
     public void testLambdaAsAny() {
       runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java
index cd5ea96..13aaa80 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java
@@ -24572,12 +24572,30 @@
     }
 
     @Test
+    @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+    public void testInlinedLambdaWithErasedParamType() {
+      runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+    }
+
+    @Test
     @TestMetadata("innerInlineFunCapturesOuter.kt")
     public void testInnerInlineFunCapturesOuter() {
       runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
     }
 
     @Test
+    @TestMetadata("kt66017.kt")
+    public void testKt66017() {
+      runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+    }
+
+    @Test
+    @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+    public void testKt66017_inlineFromTheSameModule() {
+      runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+    }
+
+    @Test
     @TestMetadata("lambdaAsAny.kt")
     public void testLambdaAsAny() {
       runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java
index 0f6a7e8..b772cd1 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java
@@ -24572,12 +24572,30 @@
     }
 
     @Test
+    @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+    public void testInlinedLambdaWithErasedParamType() {
+      runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+    }
+
+    @Test
     @TestMetadata("innerInlineFunCapturesOuter.kt")
     public void testInnerInlineFunCapturesOuter() {
       runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
     }
 
     @Test
+    @TestMetadata("kt66017.kt")
+    public void testKt66017() {
+      runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+    }
+
+    @Test
+    @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+    public void testKt66017_inlineFromTheSameModule() {
+      runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+    }
+
+    @Test
     @TestMetadata("lambdaAsAny.kt")
     public void testLambdaAsAny() {
       runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java
index acd8c0b..fffefba 100644
--- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java
+++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java
@@ -20603,11 +20603,26 @@
       runTest("compiler/testData/codegen/box/inline/inlineCtor.kt");
     }
 
+    @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+    public void testInlinedLambdaWithErasedParamType() {
+      runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+    }
+
     @TestMetadata("innerInlineFunCapturesOuter.kt")
     public void testInnerInlineFunCapturesOuter() {
       runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
     }
 
+    @TestMetadata("kt66017.kt")
+    public void testKt66017() {
+      runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+    }
+
+    @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+    public void testKt66017_inlineFromTheSameModule() {
+      runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+    }
+
     @TestMetadata("lambdaAsAny.kt")
     public void testLambdaAsAny() {
       runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java
index 2a1222c..5f71e2c 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java
@@ -18734,12 +18734,30 @@
     }
 
     @Test
+    @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+    public void testInlinedLambdaWithErasedParamType() {
+      runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+    }
+
+    @Test
     @TestMetadata("innerInlineFunCapturesOuter.kt")
     public void testInnerInlineFunCapturesOuter() {
       runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
     }
 
     @Test
+    @TestMetadata("kt66017.kt")
+    public void testKt66017() {
+      runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+    }
+
+    @Test
+    @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+    public void testKt66017_inlineFromTheSameModule() {
+      runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+    }
+
+    @Test
     @TestMetadata("lambdaAsAny.kt")
     public void testLambdaAsAny() {
       runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java
index d36bd9b..2a7d501 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java
@@ -18734,12 +18734,30 @@
     }
 
     @Test
+    @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+    public void testInlinedLambdaWithErasedParamType() {
+      runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+    }
+
+    @Test
     @TestMetadata("innerInlineFunCapturesOuter.kt")
     public void testInnerInlineFunCapturesOuter() {
       runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
     }
 
     @Test
+    @TestMetadata("kt66017.kt")
+    public void testKt66017() {
+      runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+    }
+
+    @Test
+    @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+    public void testKt66017_inlineFromTheSameModule() {
+      runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+    }
+
+    @Test
     @TestMetadata("lambdaAsAny.kt")
     public void testLambdaAsAny() {
       runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java
index af4ec7c..fede296 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java
@@ -18734,12 +18734,30 @@
     }
 
     @Test
+    @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+    public void testInlinedLambdaWithErasedParamType() {
+      runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+    }
+
+    @Test
     @TestMetadata("innerInlineFunCapturesOuter.kt")
     public void testInnerInlineFunCapturesOuter() {
       runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
     }
 
     @Test
+    @TestMetadata("kt66017.kt")
+    public void testKt66017() {
+      runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+    }
+
+    @Test
+    @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+    public void testKt66017_inlineFromTheSameModule() {
+      runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+    }
+
+    @Test
     @TestMetadata("lambdaAsAny.kt")
     public void testLambdaAsAny() {
       runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java
index df0923d5..7877c1b 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java
@@ -18734,12 +18734,30 @@
     }
 
     @Test
+    @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+    public void testInlinedLambdaWithErasedParamType() {
+      runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+    }
+
+    @Test
     @TestMetadata("innerInlineFunCapturesOuter.kt")
     public void testInnerInlineFunCapturesOuter() {
       runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
     }
 
     @Test
+    @TestMetadata("kt66017.kt")
+    public void testKt66017() {
+      runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+    }
+
+    @Test
+    @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+    public void testKt66017_inlineFromTheSameModule() {
+      runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+    }
+
+    @Test
     @TestMetadata("lambdaAsAny.kt")
     public void testLambdaAsAny() {
       runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/NativeLoweringPhases.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/NativeLoweringPhases.kt
index 8aa8ec8..ef6bd60 100644
--- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/NativeLoweringPhases.kt
+++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/NativeLoweringPhases.kt
@@ -9,33 +9,31 @@
 import org.jetbrains.kotlin.backend.common.FileLoweringPass
 import org.jetbrains.kotlin.backend.common.lower.*
 import org.jetbrains.kotlin.backend.common.lower.coroutines.AddContinuationToNonLocalSuspendFunctionsLowering
-import org.jetbrains.kotlin.ir.inline.FunctionInlining
 import org.jetbrains.kotlin.backend.common.lower.inline.LocalClassesExtractionFromInlineFunctionsLowering
 import org.jetbrains.kotlin.backend.common.lower.inline.LocalClassesInInlineFunctionsLowering
 import org.jetbrains.kotlin.backend.common.lower.inline.LocalClassesInInlineLambdasLowering
 import org.jetbrains.kotlin.backend.common.lower.loops.ForLoopsLowering
 import org.jetbrains.kotlin.backend.common.lower.optimizations.LivenessAnalysis
 import org.jetbrains.kotlin.backend.common.lower.optimizations.PropertyAccessorInlineLowering
-import org.jetbrains.kotlin.backend.common.phaser.*
+import org.jetbrains.kotlin.backend.common.phaser.AbstractNamedCompilerPhase
+import org.jetbrains.kotlin.backend.common.phaser.SimpleNamedCompilerPhase
+import org.jetbrains.kotlin.backend.common.phaser.createSimpleNamedCompilerPhase
 import org.jetbrains.kotlin.backend.common.runOnFilePostfix
-import org.jetbrains.kotlin.backend.konan.Context
-import org.jetbrains.kotlin.backend.konan.NativeGenerationState
-import org.jetbrains.kotlin.backend.konan.driver.PhaseEngine
 import org.jetbrains.kotlin.backend.konan.*
+import org.jetbrains.kotlin.backend.konan.driver.PhaseEngine
 import org.jetbrains.kotlin.backend.konan.driver.utilities.getDefaultIrActions
 import org.jetbrains.kotlin.backend.konan.ir.FunctionsWithoutBoundCheckGenerator
 import org.jetbrains.kotlin.backend.konan.lower.*
-import org.jetbrains.kotlin.backend.konan.lower.ImportCachesAbiTransformer
 import org.jetbrains.kotlin.backend.konan.lower.InitializersLowering
-import org.jetbrains.kotlin.backend.konan.lower.InlineClassPropertyAccessorsLowering
-import org.jetbrains.kotlin.backend.konan.lower.RedundantCoercionsCleaner
-import org.jetbrains.kotlin.backend.konan.lower.ReturnsInsertionLowering
-import org.jetbrains.kotlin.backend.konan.lower.UnboxInlineLowering
 import org.jetbrains.kotlin.backend.konan.optimizations.KonanBCEForLoopBodyTransformer
 import org.jetbrains.kotlin.ir.IrElement
-import org.jetbrains.kotlin.ir.declarations.*
+import org.jetbrains.kotlin.ir.declarations.IrDeclaration
+import org.jetbrains.kotlin.ir.declarations.IrFile
+import org.jetbrains.kotlin.ir.declarations.IrFunction
+import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
 import org.jetbrains.kotlin.ir.expressions.IrBody
 import org.jetbrains.kotlin.ir.expressions.IrSuspensionPoint
+import org.jetbrains.kotlin.ir.inline.FunctionInlining
 import org.jetbrains.kotlin.ir.interpreter.IrInterpreterConfiguration
 import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
 import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
@@ -347,7 +345,8 @@
                     FunctionInlining(
                             context.context,
                             NativeInlineFunctionResolver(context.context, context),
-                            alwaysCreateTemporaryVariablesForArguments = context.shouldContainDebugInfo()
+                            alwaysCreateTemporaryVariablesForArguments = context.shouldContainDebugInfo(),
+                            insertAdditionalImplicitCasts = true
                     ).lower(irFile)
                 }
             }
diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java
index 4866f7e..c410dcb 100644
--- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java
+++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java
@@ -20023,12 +20023,30 @@
       }
 
       @Test
+      @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+      public void testInlinedLambdaWithErasedParamType() {
+        runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+      }
+
+      @Test
       @TestMetadata("innerInlineFunCapturesOuter.kt")
       public void testInnerInlineFunCapturesOuter() {
         runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
       }
 
       @Test
+      @TestMetadata("kt66017.kt")
+      public void testKt66017() {
+        runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+      }
+
+      @Test
+      @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+      public void testKt66017_inlineFromTheSameModule() {
+        runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+      }
+
+      @Test
       @TestMetadata("lambdaAsAny.kt")
       public void testLambdaAsAny() {
         runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java
index cfe97f2..451c9db 100644
--- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java
+++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java
@@ -20453,12 +20453,30 @@
       }
 
       @Test
+      @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+      public void testInlinedLambdaWithErasedParamType() {
+        runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+      }
+
+      @Test
       @TestMetadata("innerInlineFunCapturesOuter.kt")
       public void testInnerInlineFunCapturesOuter() {
         runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
       }
 
       @Test
+      @TestMetadata("kt66017.kt")
+      public void testKt66017() {
+        runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+      }
+
+      @Test
+      @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+      public void testKt66017_inlineFromTheSameModule() {
+        runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+      }
+
+      @Test
       @TestMetadata("lambdaAsAny.kt")
       public void testLambdaAsAny() {
         runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java
index 088f191..07c4f8b 100644
--- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java
+++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java
@@ -19593,12 +19593,30 @@
       }
 
       @Test
+      @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+      public void testInlinedLambdaWithErasedParamType() {
+        runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+      }
+
+      @Test
       @TestMetadata("innerInlineFunCapturesOuter.kt")
       public void testInnerInlineFunCapturesOuter() {
         runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
       }
 
       @Test
+      @TestMetadata("kt66017.kt")
+      public void testKt66017() {
+        runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+      }
+
+      @Test
+      @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+      public void testKt66017_inlineFromTheSameModule() {
+        runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+      }
+
+      @Test
       @TestMetadata("lambdaAsAny.kt")
       public void testLambdaAsAny() {
         runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java
index c624345..676a107 100644
--- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java
+++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java
@@ -20024,12 +20024,30 @@
       }
 
       @Test
+      @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+      public void testInlinedLambdaWithErasedParamType() {
+        runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+      }
+
+      @Test
       @TestMetadata("innerInlineFunCapturesOuter.kt")
       public void testInnerInlineFunCapturesOuter() {
         runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
       }
 
       @Test
+      @TestMetadata("kt66017.kt")
+      public void testKt66017() {
+        runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+      }
+
+      @Test
+      @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+      public void testKt66017_inlineFromTheSameModule() {
+        runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+      }
+
+      @Test
       @TestMetadata("lambdaAsAny.kt")
       public void testLambdaAsAny() {
         runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxTestGenerated.java
index 3086df4..afc110c 100644
--- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxTestGenerated.java
+++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxTestGenerated.java
@@ -18764,12 +18764,30 @@
     }
 
     @Test
+    @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+    public void testInlinedLambdaWithErasedParamType() {
+      runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+    }
+
+    @Test
     @TestMetadata("innerInlineFunCapturesOuter.kt")
     public void testInnerInlineFunCapturesOuter() {
       runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
     }
 
     @Test
+    @TestMetadata("kt66017.kt")
+    public void testKt66017() {
+      runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+    }
+
+    @Test
+    @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+    public void testKt66017_inlineFromTheSameModule() {
+      runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+    }
+
+    @Test
     @TestMetadata("lambdaAsAny.kt")
     public void testLambdaAsAny() {
       runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");
diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java
index 07d30db..0b326d3 100644
--- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java
+++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java
@@ -18764,12 +18764,30 @@
     }
 
     @Test
+    @TestMetadata("inlinedLambdaWithErasedParamType.kt")
+    public void testInlinedLambdaWithErasedParamType() {
+      runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
+    }
+
+    @Test
     @TestMetadata("innerInlineFunCapturesOuter.kt")
     public void testInnerInlineFunCapturesOuter() {
       runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
     }
 
     @Test
+    @TestMetadata("kt66017.kt")
+    public void testKt66017() {
+      runTest("compiler/testData/codegen/box/inline/kt66017.kt");
+    }
+
+    @Test
+    @TestMetadata("kt66017_inlineFromTheSameModule.kt")
+    public void testKt66017_inlineFromTheSameModule() {
+      runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
+    }
+
+    @Test
     @TestMetadata("lambdaAsAny.kt")
     public void testLambdaAsAny() {
       runTest("compiler/testData/codegen/box/inline/lambdaAsAny.kt");