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 c22739e..c32d3b9 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
@@ -2773,46 +2773,6 @@
         }
 
         @Nested
-        @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-        @TestDataPath("$PROJECT_ROOT")
-        public class Issues {
-            @Test
-            public void testAllFilesPresentInIssues() throws Exception {
-                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^(.+)\\.kt$"), null, true);
-            }
-
-            @Test
-            @TestMetadata("kt52757simplified.kt")
-            public void testKt52757simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53109simplified.kt")
-            public void testKt53109simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53639simplified.kt")
-            public void testKt53639simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt55057simplified.kt")
-            public void testKt55057simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt60291simplified.kt")
-            public void testKt60291simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-            }
-        }
-
-        @Nested
         @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
         @TestDataPath("$PROJECT_ROOT")
         public class OneParameter {
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 3675096..70e4d3c 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
@@ -2773,46 +2773,6 @@
         }
 
         @Nested
-        @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-        @TestDataPath("$PROJECT_ROOT")
-        public class Issues {
-            @Test
-            public void testAllFilesPresentInIssues() throws Exception {
-                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^(.+)\\.kt$"), null, true);
-            }
-
-            @Test
-            @TestMetadata("kt52757simplified.kt")
-            public void testKt52757simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53109simplified.kt")
-            public void testKt53109simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53639simplified.kt")
-            public void testKt53639simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt55057simplified.kt")
-            public void testKt55057simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt60291simplified.kt")
-            public void testKt60291simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-            }
-        }
-
-        @Nested
         @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
         @TestDataPath("$PROJECT_ROOT")
         public class OneParameter {
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 280a447..98b74e9 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
@@ -2756,46 +2756,6 @@
         }
 
         @Nested
-        @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-        @TestDataPath("$PROJECT_ROOT")
-        public class Issues {
-            @Test
-            public void testAllFilesPresentInIssues() throws Exception {
-                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
-            }
-
-            @Test
-            @TestMetadata("kt52757simplified.kt")
-            public void testKt52757simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53109simplified.kt")
-            public void testKt53109simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53639simplified.kt")
-            public void testKt53639simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt55057simplified.kt")
-            public void testKt55057simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt60291simplified.kt")
-            public void testKt60291simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-            }
-        }
-
-        @Nested
         @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
         @TestDataPath("$PROJECT_ROOT")
         public class OneParameter {
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 1bedf6c..a0084be 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
@@ -2756,46 +2756,6 @@
         }
 
         @Nested
-        @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-        @TestDataPath("$PROJECT_ROOT")
-        public class Issues {
-            @Test
-            public void testAllFilesPresentInIssues() throws Exception {
-                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
-            }
-
-            @Test
-            @TestMetadata("kt52757simplified.kt")
-            public void testKt52757simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53109simplified.kt")
-            public void testKt53109simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53639simplified.kt")
-            public void testKt53639simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt55057simplified.kt")
-            public void testKt55057simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt60291simplified.kt")
-            public void testKt60291simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-            }
-        }
-
-        @Nested
         @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
         @TestDataPath("$PROJECT_ROOT")
         public class OneParameter {
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 c048630..da0be36 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
@@ -2756,46 +2756,6 @@
         }
 
         @Nested
-        @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-        @TestDataPath("$PROJECT_ROOT")
-        public class Issues {
-            @Test
-            public void testAllFilesPresentInIssues() throws Exception {
-                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
-            }
-
-            @Test
-            @TestMetadata("kt52757simplified.kt")
-            public void testKt52757simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53109simplified.kt")
-            public void testKt53109simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53639simplified.kt")
-            public void testKt53639simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt55057simplified.kt")
-            public void testKt55057simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt60291simplified.kt")
-            public void testKt60291simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-            }
-        }
-
-        @Nested
         @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
         @TestDataPath("$PROJECT_ROOT")
         public class OneParameter {
diff --git a/compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt b/compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt
deleted file mode 100644
index 0eeeba2..0000000
--- a/compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt
+++ /dev/null
@@ -1,23 +0,0 @@
-// ISSUE: KT-52757
-
-class Buildee<T> {
-    var assignee: (T) -> Unit = {}
-}
-
-fun <T> build(block: Buildee<T>.() -> Unit): Buildee<T> {
-    return Buildee<T>().apply(block)
-}
-
-class TargetType
-
-fun typeInfoSource(value: TargetType) {}
-
-fun box(): String {
-    // K1: could not load module <error module>
-    // K2/Native: org.jetbrains.kotlin.backend.common.linkage.issues.IrDisallowedErrorNode: Class found but error nodes are not allowed.
-    build {
-        assignee = ::typeInfoSource
-        assignee = {}
-    }
-    return "OK"
-}
diff --git a/compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt b/compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt
deleted file mode 100644
index e0ef2a2..0000000
--- a/compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt
+++ /dev/null
@@ -1,22 +0,0 @@
-// ISSUE: KT-53109
-
-class Buildee<T> {
-    var assignee: (T) -> Unit = {}
-}
-
-fun <T> build(block: Buildee<T>.() -> Unit): Buildee<T> {
-    return Buildee<T>().apply(block)
-}
-
-class TargetType
-
-fun typeInfoSource(value: TargetType) {}
-
-fun box(): String {
-    // K1: could not load module <error module>
-    // K2/Native: org.jetbrains.kotlin.backend.common.linkage.issues.IrDisallowedErrorNode: Class found but error nodes are not allowed.
-    build {
-        assignee = { typeInfoSource(it) }
-    }
-    return "OK"
-}
diff --git a/compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt b/compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt
deleted file mode 100644
index e69be94..0000000
--- a/compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt
+++ /dev/null
@@ -1,31 +0,0 @@
-// ISSUE: KT-53639
-
-class Buildee<T> {
-    fun yield(value: T) {}
-}
-fun <T> Buildee<T>.extension() {}
-
-fun <T> build(block: Buildee<T>.() -> Unit): Buildee<T> {
-    return Buildee<T>().apply(block)
-}
-
-fun <T> execute(
-    lambda1: () -> Buildee<T>,
-    lambda2: Buildee<T>.() -> Unit
-): Buildee<T> {
-    return lambda1().apply(lambda2)
-}
-
-class TargetType
-
-@Suppress("BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION")
-fun box(): String {
-    // K2/JVM: java.lang.IllegalStateException: Cannot serialize error type: ERROR CLASS: Cannot infer argument for type parameter T
-    // K2/Native & K2/WASM & K2/JS: org.jetbrains.kotlin.backend.common.linkage.issues.IrDisallowedErrorNode: Class found but error nodes are not allowed.
-    val temp = execute(
-        { build { yield(TargetType()) } },
-        { extension() },
-    )
-    val result: Buildee<TargetType> = temp // K1: TYPE_MISMATCH (expected Buildee<TargetType>, actual Buildee<Any?>)
-    return "OK"
-}
diff --git a/compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt b/compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt
deleted file mode 100644
index 2a2111e..0000000
--- a/compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt
+++ /dev/null
@@ -1,34 +0,0 @@
-// ISSUE: KT-55057
-// WITH_STDLIB
-
-import kotlin.experimental.ExperimentalTypeInference
-
-class Buildee<PTV>
-
-fun <PTV> Buildee<PTV>.yieldWithoutAnnotation(value: PTV) {}
-
-@OptIn(ExperimentalTypeInference::class)
-@BuilderInference // note: that annotation was never intended to be used on functions without lambdas
-fun <PTV> Buildee<PTV>.yieldWithAnnotation(t: PTV) {}
-
-fun <PTV> build(block: Buildee<PTV>.() -> Unit): Buildee<PTV> {
-    return Buildee<PTV>().apply(block)
-}
-
-class TargetType
-
-fun <T> make(): Buildee<T> = Buildee()
-
-fun box(): String {
-    // K1&K2: NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER
-    build {
-        yieldWithoutAnnotation(make<TargetType>())
-        yieldWithoutAnnotation(make()) // K1&K2: NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER
-    }
-    // K1&K2: OK — TypeVariable(PTV) of build is inferred into Buildee<Buildee<TargetType>>
-    build {
-        yieldWithAnnotation(make<TargetType>())
-        yieldWithAnnotation(make()) // K1&K2: OK — TypeVariable(T) of make is inferred into Buildee<TargetType>
-    }
-    return "OK"
-}
diff --git a/compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt b/compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt
deleted file mode 100644
index 87dc88f..0000000
--- a/compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-// ISSUE: KT-60291
-
-class Buildee<T> {
-    fun yield(value: T) {}
-}
-
-fun <T> build(block: Buildee<T>.() -> Unit): Buildee<T> {
-    return Buildee<T>().apply(block)
-}
-
-fun <T> execute(vararg values: Buildee<T>) {}
-
-class TargetType
-
-@Suppress("BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION")
-fun box(): String {
-    // K2/JVM: java.lang.IllegalStateException: Cannot serialize error type: ERROR CLASS: Cannot infer argument for type parameter T
-    // K2/Native & K2/WASM & K2/JS: org.jetbrains.kotlin.backend.common.linkage.issues.IrDisallowedErrorNode: Class found but error nodes are not allowed.
-    execute(
-        build { yield(TargetType()) },
-        build { }
-    )
-    return "OK"
-}
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 beb7304..f7eb0e1 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
@@ -2576,46 +2576,6 @@
         }
 
         @Nested
-        @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-        @TestDataPath("$PROJECT_ROOT")
-        public class Issues {
-            @Test
-            public void testAllFilesPresentInIssues() throws Exception {
-                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
-            }
-
-            @Test
-            @TestMetadata("kt52757simplified.kt")
-            public void testKt52757simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53109simplified.kt")
-            public void testKt53109simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53639simplified.kt")
-            public void testKt53639simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt55057simplified.kt")
-            public void testKt55057simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt60291simplified.kt")
-            public void testKt60291simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-            }
-        }
-
-        @Nested
         @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
         @TestDataPath("$PROJECT_ROOT")
         public class OneParameter {
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 42c0b37..ba722b1 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
@@ -2756,46 +2756,6 @@
         }
 
         @Nested
-        @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-        @TestDataPath("$PROJECT_ROOT")
-        public class Issues {
-            @Test
-            public void testAllFilesPresentInIssues() throws Exception {
-                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
-            }
-
-            @Test
-            @TestMetadata("kt52757simplified.kt")
-            public void testKt52757simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53109simplified.kt")
-            public void testKt53109simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53639simplified.kt")
-            public void testKt53639simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt55057simplified.kt")
-            public void testKt55057simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt60291simplified.kt")
-            public void testKt60291simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-            }
-        }
-
-        @Nested
         @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
         @TestDataPath("$PROJECT_ROOT")
         public class OneParameter {
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 42c61c9..ee23cb5 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
@@ -2756,46 +2756,6 @@
         }
 
         @Nested
-        @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-        @TestDataPath("$PROJECT_ROOT")
-        public class Issues {
-            @Test
-            public void testAllFilesPresentInIssues() throws Exception {
-                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
-            }
-
-            @Test
-            @TestMetadata("kt52757simplified.kt")
-            public void testKt52757simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53109simplified.kt")
-            public void testKt53109simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53639simplified.kt")
-            public void testKt53639simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt55057simplified.kt")
-            public void testKt55057simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt60291simplified.kt")
-            public void testKt60291simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-            }
-        }
-
-        @Nested
         @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
         @TestDataPath("$PROJECT_ROOT")
         public class OneParameter {
diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java
index 182cffc..c4e688a 100644
--- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java
+++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java
@@ -2403,44 +2403,6 @@
             KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
         }
 
-        @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-        @TestDataPath("$PROJECT_ROOT")
-        @RunWith(JUnit3RunnerWithInners.class)
-        public static class Issues extends AbstractLightAnalysisModeTest {
-            private void runTest(String testDataFilePath) throws Exception {
-                KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
-            }
-
-            public void testAllFilesPresentInIssues() throws Exception {
-                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
-            }
-
-            @TestMetadata("kt52757simplified.kt")
-            public void testKt52757simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-            }
-
-            @TestMetadata("kt53109simplified.kt")
-            public void testKt53109simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-            }
-
-            @TestMetadata("kt53639simplified.kt")
-            public void testKt53639simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-            }
-
-            @TestMetadata("kt55057simplified.kt")
-            public void testKt55057simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-            }
-
-            @TestMetadata("kt60291simplified.kt")
-            public void testKt60291simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-            }
-        }
-
         @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
         @TestDataPath("$PROJECT_ROOT")
         @RunWith(JUnit3RunnerWithInners.class)
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 6eb81df..8bb2f81 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
@@ -1862,46 +1862,6 @@
         }
 
         @Nested
-        @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-        @TestDataPath("$PROJECT_ROOT")
-        public class Issues {
-            @Test
-            public void testAllFilesPresentInIssues() throws Exception {
-                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
-            }
-
-            @Test
-            @TestMetadata("kt52757simplified.kt")
-            public void testKt52757simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53109simplified.kt")
-            public void testKt53109simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53639simplified.kt")
-            public void testKt53639simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt55057simplified.kt")
-            public void testKt55057simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt60291simplified.kt")
-            public void testKt60291simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-            }
-        }
-
-        @Nested
         @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
         @TestDataPath("$PROJECT_ROOT")
         public class OneParameter {
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 a15718d..5687fc8 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
@@ -1862,46 +1862,6 @@
         }
 
         @Nested
-        @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-        @TestDataPath("$PROJECT_ROOT")
-        public class Issues {
-            @Test
-            public void testAllFilesPresentInIssues() throws Exception {
-                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true);
-            }
-
-            @Test
-            @TestMetadata("kt52757simplified.kt")
-            public void testKt52757simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53109simplified.kt")
-            public void testKt53109simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53639simplified.kt")
-            public void testKt53639simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt55057simplified.kt")
-            public void testKt55057simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt60291simplified.kt")
-            public void testKt60291simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-            }
-        }
-
-        @Nested
         @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
         @TestDataPath("$PROJECT_ROOT")
         public class OneParameter {
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 2c7daea..bea821c 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
@@ -1862,46 +1862,6 @@
         }
 
         @Nested
-        @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-        @TestDataPath("$PROJECT_ROOT")
-        public class Issues {
-            @Test
-            public void testAllFilesPresentInIssues() throws Exception {
-                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
-            }
-
-            @Test
-            @TestMetadata("kt52757simplified.kt")
-            public void testKt52757simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53109simplified.kt")
-            public void testKt53109simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53639simplified.kt")
-            public void testKt53639simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt55057simplified.kt")
-            public void testKt55057simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt60291simplified.kt")
-            public void testKt60291simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-            }
-        }
-
-        @Nested
         @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
         @TestDataPath("$PROJECT_ROOT")
         public class OneParameter {
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 2e256e5..60ca29b 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
@@ -1862,46 +1862,6 @@
         }
 
         @Nested
-        @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-        @TestDataPath("$PROJECT_ROOT")
-        public class Issues {
-            @Test
-            public void testAllFilesPresentInIssues() throws Exception {
-                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true);
-            }
-
-            @Test
-            @TestMetadata("kt52757simplified.kt")
-            public void testKt52757simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53109simplified.kt")
-            public void testKt53109simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53639simplified.kt")
-            public void testKt53639simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt55057simplified.kt")
-            public void testKt55057simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt60291simplified.kt")
-            public void testKt60291simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-            }
-        }
-
-        @Nested
         @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
         @TestDataPath("$PROJECT_ROOT")
         public class OneParameter {
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 40a04e8..fe091f7 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
@@ -1921,49 +1921,6 @@
             }
 
             @Nested
-            @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-            @TestDataPath("$PROJECT_ROOT")
-            @Tag("frontend-fir")
-            @FirPipeline()
-            @UseExtTestCaseGroupProvider()
-            public class Issues {
-                @Test
-                public void testAllFilesPresentInIssues() throws Exception {
-                    KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
-                }
-
-                @Test
-                @TestMetadata("kt52757simplified.kt")
-                public void testKt52757simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-                }
-
-                @Test
-                @TestMetadata("kt53109simplified.kt")
-                public void testKt53109simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-                }
-
-                @Test
-                @TestMetadata("kt53639simplified.kt")
-                public void testKt53639simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-                }
-
-                @Test
-                @TestMetadata("kt55057simplified.kt")
-                public void testKt55057simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-                }
-
-                @Test
-                @TestMetadata("kt60291simplified.kt")
-                public void testKt60291simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-                }
-            }
-
-            @Nested
             @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
             @TestDataPath("$PROJECT_ROOT")
             @Tag("frontend-fir")
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 bcbfa83..1b12bfc 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
@@ -1967,51 +1967,6 @@
             }
 
             @Nested
-            @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-            @TestDataPath("$PROJECT_ROOT")
-            @Tag("frontend-fir")
-            @FirPipeline()
-            @UseExtTestCaseGroupProvider()
-            @UsePartialLinkage(mode = Mode.DISABLED)
-            @Tag("no-partial-linkage-may-be-skipped")
-            public class Issues {
-                @Test
-                public void testAllFilesPresentInIssues() throws Exception {
-                    KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
-                }
-
-                @Test
-                @TestMetadata("kt52757simplified.kt")
-                public void testKt52757simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-                }
-
-                @Test
-                @TestMetadata("kt53109simplified.kt")
-                public void testKt53109simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-                }
-
-                @Test
-                @TestMetadata("kt53639simplified.kt")
-                public void testKt53639simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-                }
-
-                @Test
-                @TestMetadata("kt55057simplified.kt")
-                public void testKt55057simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-                }
-
-                @Test
-                @TestMetadata("kt60291simplified.kt")
-                public void testKt60291simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-                }
-            }
-
-            @Nested
             @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
             @TestDataPath("$PROJECT_ROOT")
             @Tag("frontend-fir")
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 5ec0d8d..98ad02c 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
@@ -1875,48 +1875,6 @@
             }
 
             @Nested
-            @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-            @TestDataPath("$PROJECT_ROOT")
-            @UseExtTestCaseGroupProvider()
-            @DisabledTestsIfProperty(sourceLocations = { "compiler/testData/codegen/box/coroutines/featureIntersection/defaultExpect.kt", "compiler/testData/codegen/box/multiplatform/defaultArguments/*.kt", "compiler/testData/codegen/box/multiplatform/migratedOldTests/*.kt", "compiler/testData/codegen/boxInline/multiplatform/defaultArguments/receiversAndParametersInLambda.kt" }, property = ClassLevelProperty.TEST_MODE, propertyValue = "ONE_STAGE_MULTI_MODULE")
-            public class Issues {
-                @Test
-                public void testAllFilesPresentInIssues() throws Exception {
-                    KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
-                }
-
-                @Test
-                @TestMetadata("kt52757simplified.kt")
-                public void testKt52757simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-                }
-
-                @Test
-                @TestMetadata("kt53109simplified.kt")
-                public void testKt53109simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-                }
-
-                @Test
-                @TestMetadata("kt53639simplified.kt")
-                public void testKt53639simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-                }
-
-                @Test
-                @TestMetadata("kt55057simplified.kt")
-                public void testKt55057simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-                }
-
-                @Test
-                @TestMetadata("kt60291simplified.kt")
-                public void testKt60291simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-                }
-            }
-
-            @Nested
             @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
             @TestDataPath("$PROJECT_ROOT")
             @UseExtTestCaseGroupProvider()
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 0cff8ed..9263188 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
@@ -1922,49 +1922,6 @@
             }
 
             @Nested
-            @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-            @TestDataPath("$PROJECT_ROOT")
-            @UseExtTestCaseGroupProvider()
-            @UsePartialLinkage(mode = Mode.DISABLED)
-            @Tag("no-partial-linkage-may-be-skipped")
-            public class Issues {
-                @Test
-                public void testAllFilesPresentInIssues() throws Exception {
-                    KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
-                }
-
-                @Test
-                @TestMetadata("kt52757simplified.kt")
-                public void testKt52757simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-                }
-
-                @Test
-                @TestMetadata("kt53109simplified.kt")
-                public void testKt53109simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-                }
-
-                @Test
-                @TestMetadata("kt53639simplified.kt")
-                public void testKt53639simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-                }
-
-                @Test
-                @TestMetadata("kt55057simplified.kt")
-                public void testKt55057simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-                }
-
-                @Test
-                @TestMetadata("kt60291simplified.kt")
-                public void testKt60291simplified() throws Exception {
-                    runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-                }
-            }
-
-            @Nested
             @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
             @TestDataPath("$PROJECT_ROOT")
             @UseExtTestCaseGroupProvider()
diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxTestGenerated.java
index 2ad1b84..7f69bf9 100644
--- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxTestGenerated.java
+++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxTestGenerated.java
@@ -1850,46 +1850,6 @@
         }
 
         @Nested
-        @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-        @TestDataPath("$PROJECT_ROOT")
-        public class Issues {
-            @Test
-            public void testAllFilesPresentInIssues() throws Exception {
-                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true);
-            }
-
-            @Test
-            @TestMetadata("kt52757simplified.kt")
-            public void testKt52757simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53109simplified.kt")
-            public void testKt53109simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53639simplified.kt")
-            public void testKt53639simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt55057simplified.kt")
-            public void testKt55057simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt60291simplified.kt")
-            public void testKt60291simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-            }
-        }
-
-        @Nested
         @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
         @TestDataPath("$PROJECT_ROOT")
         public class OneParameter {
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 578d15a..cb9b8c1 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
@@ -1850,46 +1850,6 @@
         }
 
         @Nested
-        @TestMetadata("compiler/testData/codegen/box/builderInference/issues")
-        @TestDataPath("$PROJECT_ROOT")
-        public class Issues {
-            @Test
-            public void testAllFilesPresentInIssues() throws Exception {
-                KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference/issues"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true);
-            }
-
-            @Test
-            @TestMetadata("kt52757simplified.kt")
-            public void testKt52757simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt52757simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53109simplified.kt")
-            public void testKt53109simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53109simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt53639simplified.kt")
-            public void testKt53639simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt53639simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt55057simplified.kt")
-            public void testKt55057simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt55057simplified.kt");
-            }
-
-            @Test
-            @TestMetadata("kt60291simplified.kt")
-            public void testKt60291simplified() throws Exception {
-                runTest("compiler/testData/codegen/box/builderInference/issues/kt60291simplified.kt");
-            }
-        }
-
-        @Nested
         @TestMetadata("compiler/testData/codegen/box/builderInference/oneParameter")
         @TestDataPath("$PROJECT_ROOT")
         public class OneParameter {
