fixup! K2: implement checker to detect overload clash by JVM erasure
diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLDiagnosticsFirTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLDiagnosticsFirTestGenerated.java
index f8f59b1..e274aa1 100644
--- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLDiagnosticsFirTestGenerated.java
+++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLDiagnosticsFirTestGenerated.java
@@ -8370,6 +8370,12 @@
       }
 
       @Test
+      @TestMetadata("sequenceCollectionIntersectionOverrideKJJ.kt")
+      public void testSequenceCollectionIntersectionOverrideKJJ() {
+        runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/sequenceCollectionIntersectionOverrideKJJ.kt");
+      }
+
+      @Test
       @TestMetadata("serializableString.kt")
       public void testSerializableString() {
         runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/serializableString.kt");
@@ -8424,6 +8430,46 @@
       }
 
       @Nested
+      @TestMetadata("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges")
+      @TestDataPath("$PROJECT_ROOT")
+      public class Bridges {
+        @Test
+        public void testAllFilesPresentInBridges() {
+          KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverride.kt")
+        public void testBridgeAndFakeOverride() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverride.kt");
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverrideExtensionReceiver.kt")
+        public void testBridgeAndFakeOverrideExtensionReceiver() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideExtensionReceiver.kt");
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverrideFromGeneric.kt")
+        public void testBridgeAndFakeOverrideFromGeneric() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideFromGeneric.kt");
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverrideGenericImplementation.kt")
+        public void testBridgeAndFakeOverrideGenericImplementation() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideGenericImplementation.kt");
+        }
+
+        @Test
+        @TestMetadata("inheritedBridgeAndFakeOverride.kt")
+        public void testInheritedBridgeAndFakeOverride() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/inheritedBridgeAndFakeOverride.kt");
+        }
+      }
+
+      @Nested
       @TestMetadata("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/commonAtomicTypes")
       @TestDataPath("$PROJECT_ROOT")
       public class CommonAtomicTypes {
diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLReversedDiagnosticsFirTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLReversedDiagnosticsFirTestGenerated.java
index 2e65a29..619a1ff 100644
--- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLReversedDiagnosticsFirTestGenerated.java
+++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLReversedDiagnosticsFirTestGenerated.java
@@ -8370,6 +8370,12 @@
       }
 
       @Test
+      @TestMetadata("sequenceCollectionIntersectionOverrideKJJ.kt")
+      public void testSequenceCollectionIntersectionOverrideKJJ() {
+        runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/sequenceCollectionIntersectionOverrideKJJ.kt");
+      }
+
+      @Test
       @TestMetadata("serializableString.kt")
       public void testSerializableString() {
         runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/serializableString.kt");
@@ -8424,6 +8430,46 @@
       }
 
       @Nested
+      @TestMetadata("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges")
+      @TestDataPath("$PROJECT_ROOT")
+      public class Bridges {
+        @Test
+        public void testAllFilesPresentInBridges() {
+          KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverride.kt")
+        public void testBridgeAndFakeOverride() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverride.kt");
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverrideExtensionReceiver.kt")
+        public void testBridgeAndFakeOverrideExtensionReceiver() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideExtensionReceiver.kt");
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverrideFromGeneric.kt")
+        public void testBridgeAndFakeOverrideFromGeneric() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideFromGeneric.kt");
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverrideGenericImplementation.kt")
+        public void testBridgeAndFakeOverrideGenericImplementation() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideGenericImplementation.kt");
+        }
+
+        @Test
+        @TestMetadata("inheritedBridgeAndFakeOverride.kt")
+        public void testInheritedBridgeAndFakeOverride() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/inheritedBridgeAndFakeOverride.kt");
+        }
+      }
+
+      @Nested
       @TestMetadata("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/commonAtomicTypes")
       @TestDataPath("$PROJECT_ROOT")
       public class CommonAtomicTypes {
diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverride.kt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverride.kt
new file mode 100644
index 0000000..a89572f
--- /dev/null
+++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverride.kt
@@ -0,0 +1,24 @@
+// RUN_PIPELINE_TILL: BACKEND
+// LANGUAGE: -ForbidOverloadClashesByErasure
+// ISSUE: KT-13712
+
+interface Restrict
+
+object EmptyRestrict : Restrict
+
+interface RestrictedGeneric<T: Restrict>: Restrict {
+    fun accept(obj: T): Int
+    fun acceptOpen(obj: T)
+}
+
+open class Foo {
+    fun accept(obj: Restrict): Int = 0
+    open fun acceptOpen(obj: Restrict) {
+    }
+}
+
+class Bar : Foo(), RestrictedGeneric<Bar>{
+    override fun <!ACCIDENTAL_OVERLOAD_CLASH_BY_JVM_ERASURE_WARNING!>accept<!>(obj: Bar): Int = 0
+    override fun <!ACCIDENTAL_OVERLOAD_CLASH_BY_JVM_ERASURE_WARNING!>acceptOpen<!>(obj: Bar) {
+    }
+}
diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideExtensionReceiver.kt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideExtensionReceiver.kt
new file mode 100644
index 0000000..ba82934
--- /dev/null
+++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideExtensionReceiver.kt
@@ -0,0 +1,15 @@
+// RUN_PIPELINE_TILL: BACKEND
+// LANGUAGE: -ForbidOverloadClashesByErasure
+// ISSUE: KT-13712
+
+interface B<T> {
+    fun T.foo() {}
+}
+
+open class A {
+    fun Any.foo() {}
+}
+
+class C : B<String>, A() {
+    override fun String.<!ACCIDENTAL_OVERLOAD_CLASH_BY_JVM_ERASURE_WARNING!>foo<!>() {}
+}
diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideFromGeneric.kt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideFromGeneric.kt
new file mode 100644
index 0000000..aff4b8a
--- /dev/null
+++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideFromGeneric.kt
@@ -0,0 +1,19 @@
+// RUN_PIPELINE_TILL: BACKEND
+// LANGUAGE: -ForbidOverloadClashesByErasure
+// ISSUE: KT-13712
+
+interface Restrict
+
+object EmptyRestrict : Restrict
+
+interface RestrictedGeneric<T : Restrict>: Restrict {
+    fun accept(obj: T): Int
+}
+
+open class Foo<D : Restrict> {
+    fun accept(obj: D): Int = 0
+}
+
+class Bar : Foo<EmptyRestrict>(), RestrictedGeneric<Bar> {
+    override fun accept(obj: Bar): Int = 0
+}
diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideGenericImplementation.kt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideGenericImplementation.kt
new file mode 100644
index 0000000..188c89a
--- /dev/null
+++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideGenericImplementation.kt
@@ -0,0 +1,19 @@
+// RUN_PIPELINE_TILL: BACKEND
+// LANGUAGE: -ForbidOverloadClashesByErasure
+// ISSUE: KT-13712
+
+interface Restrict
+
+object EmptyRestrict : Restrict
+
+interface RestrictedGeneric<T  : Restrict>: Restrict {
+    fun accept(obj: T): Int
+}
+
+open class Foo {
+    fun accept(obj: Restrict): Int = 0
+}
+
+class Bar<T> : Foo(), RestrictedGeneric<Bar<T>>{
+    override fun <!ACCIDENTAL_OVERLOAD_CLASH_BY_JVM_ERASURE_WARNING!>accept<!>(obj: Bar<T>): Int = 0
+}
diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/inheritedBridgeAndFakeOverride.kt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/inheritedBridgeAndFakeOverride.kt
new file mode 100644
index 0000000..0602df7
--- /dev/null
+++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/inheritedBridgeAndFakeOverride.kt
@@ -0,0 +1,15 @@
+// RUN_PIPELINE_TILL: BACKEND
+// LANGUAGE: -ForbidOverloadClashesByErasure
+// ISSUE: KT-13712
+
+open class A {
+    fun f(x: Any) {
+    }
+}
+
+interface B<T> {
+    fun f(x: T) {
+    }
+}
+
+class C : B<String>, A()
diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/sequenceCollectionIntersectionOverrideKJJ.kt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/sequenceCollectionIntersectionOverrideKJJ.kt
new file mode 100644
index 0000000..d509c84
--- /dev/null
+++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/sequenceCollectionIntersectionOverrideKJJ.kt
@@ -0,0 +1,16 @@
+// RUN_PIPELINE_TILL: BACKEND
+// LANGUAGE: -ForbidOverloadClashesByErasure
+// JDK_KIND: FULL_JDK_21
+// WITH_STDLIB
+
+// FILE: 1.kt
+import java.util.*
+
+class A : LinkedList<Int>(), SequencedCollection<Int>
+
+class B : LinkedList<Int>(), SequencedCollection<Int> {
+    override fun addFirst(e: Int?) { }
+    override fun reversed(): LinkedList<Int> {
+        return null!!
+    }
+}
diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeDiagnosticsWithLatestLanguageVersionTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeDiagnosticsWithLatestLanguageVersionTestGenerated.java
index c001492..57c46b8 100644
--- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeDiagnosticsWithLatestLanguageVersionTestGenerated.java
+++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeDiagnosticsWithLatestLanguageVersionTestGenerated.java
@@ -8370,6 +8370,12 @@
       }
 
       @Test
+      @TestMetadata("sequenceCollectionIntersectionOverrideKJJ.kt")
+      public void testSequenceCollectionIntersectionOverrideKJJ() {
+        runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/sequenceCollectionIntersectionOverrideKJJ.kt");
+      }
+
+      @Test
       @TestMetadata("serializableString.kt")
       public void testSerializableString() {
         runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/serializableString.kt");
@@ -8424,6 +8430,46 @@
       }
 
       @Nested
+      @TestMetadata("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges")
+      @TestDataPath("$PROJECT_ROOT")
+      public class Bridges {
+        @Test
+        public void testAllFilesPresentInBridges() {
+          KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverride.kt")
+        public void testBridgeAndFakeOverride() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverride.kt");
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverrideExtensionReceiver.kt")
+        public void testBridgeAndFakeOverrideExtensionReceiver() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideExtensionReceiver.kt");
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverrideFromGeneric.kt")
+        public void testBridgeAndFakeOverrideFromGeneric() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideFromGeneric.kt");
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverrideGenericImplementation.kt")
+        public void testBridgeAndFakeOverrideGenericImplementation() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideGenericImplementation.kt");
+        }
+
+        @Test
+        @TestMetadata("inheritedBridgeAndFakeOverride.kt")
+        public void testInheritedBridgeAndFakeOverride() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/inheritedBridgeAndFakeOverride.kt");
+        }
+      }
+
+      @Nested
       @TestMetadata("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/commonAtomicTypes")
       @TestDataPath("$PROJECT_ROOT")
       public class CommonAtomicTypes {
diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/PhasedJvmDiagnosticLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/PhasedJvmDiagnosticLightTreeTestGenerated.java
index 304b86c..8100c0f 100644
--- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/PhasedJvmDiagnosticLightTreeTestGenerated.java
+++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/PhasedJvmDiagnosticLightTreeTestGenerated.java
@@ -58137,6 +58137,12 @@
       }
 
       @Test
+      @TestMetadata("sequenceCollectionIntersectionOverrideKJJ.kt")
+      public void testSequenceCollectionIntersectionOverrideKJJ() {
+        runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/sequenceCollectionIntersectionOverrideKJJ.kt");
+      }
+
+      @Test
       @TestMetadata("serializableString.kt")
       public void testSerializableString() {
         runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/serializableString.kt");
@@ -58191,6 +58197,41 @@
       }
 
       @Nested
+      @TestMetadata("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges")
+      @TestDataPath("$PROJECT_ROOT")
+      public class Bridges {
+        @Test
+        @TestMetadata("bridgeAndFakeOverride.kt")
+        public void testBridgeAndFakeOverride() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverride.kt");
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverrideExtensionReceiver.kt")
+        public void testBridgeAndFakeOverrideExtensionReceiver() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideExtensionReceiver.kt");
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverrideFromGeneric.kt")
+        public void testBridgeAndFakeOverrideFromGeneric() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideFromGeneric.kt");
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverrideGenericImplementation.kt")
+        public void testBridgeAndFakeOverrideGenericImplementation() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideGenericImplementation.kt");
+        }
+
+        @Test
+        @TestMetadata("inheritedBridgeAndFakeOverride.kt")
+        public void testInheritedBridgeAndFakeOverride() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/inheritedBridgeAndFakeOverride.kt");
+        }
+      }
+
+      @Nested
       @TestMetadata("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/commonAtomicTypes")
       @TestDataPath("$PROJECT_ROOT")
       public class CommonAtomicTypes {
diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/PhasedJvmDiagnosticPsiTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/PhasedJvmDiagnosticPsiTestGenerated.java
index e0ad970..eea4844 100644
--- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/PhasedJvmDiagnosticPsiTestGenerated.java
+++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/PhasedJvmDiagnosticPsiTestGenerated.java
@@ -58309,6 +58309,12 @@
       }
 
       @Test
+      @TestMetadata("sequenceCollectionIntersectionOverrideKJJ.kt")
+      public void testSequenceCollectionIntersectionOverrideKJJ() {
+        runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/sequenceCollectionIntersectionOverrideKJJ.kt");
+      }
+
+      @Test
       @TestMetadata("serializableString.kt")
       public void testSerializableString() {
         runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/serializableString.kt");
@@ -58363,6 +58369,41 @@
       }
 
       @Nested
+      @TestMetadata("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges")
+      @TestDataPath("$PROJECT_ROOT")
+      public class Bridges {
+        @Test
+        @TestMetadata("bridgeAndFakeOverride.kt")
+        public void testBridgeAndFakeOverride() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverride.kt");
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverrideExtensionReceiver.kt")
+        public void testBridgeAndFakeOverrideExtensionReceiver() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideExtensionReceiver.kt");
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverrideFromGeneric.kt")
+        public void testBridgeAndFakeOverrideFromGeneric() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideFromGeneric.kt");
+        }
+
+        @Test
+        @TestMetadata("bridgeAndFakeOverrideGenericImplementation.kt")
+        public void testBridgeAndFakeOverrideGenericImplementation() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/bridgeAndFakeOverrideGenericImplementation.kt");
+        }
+
+        @Test
+        @TestMetadata("inheritedBridgeAndFakeOverride.kt")
+        public void testInheritedBridgeAndFakeOverride() {
+          runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/bridges/inheritedBridgeAndFakeOverride.kt");
+        }
+      }
+
+      @Nested
       @TestMetadata("compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/commonAtomicTypes")
       @TestDataPath("$PROJECT_ROOT")
       public class CommonAtomicTypes {
diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirOverrideSignatureClashChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirOverrideSignatureClashChecker.kt
index 167b4af..0ef1d37 100644
--- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirOverrideSignatureClashChecker.kt
+++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirOverrideSignatureClashChecker.kt
@@ -35,7 +35,7 @@
         val overloads = mutableListOf<FirNamedFunctionSymbol>()
         scope.processFunctionsByName(name) {
             if (it !== declaration.symbol && it.valueParameterSymbols.size == declaration.valueParameters.size &&
-                it.receiverParameterSymbol == null && it.contextParameterSymbols.isEmpty()
+                it.contextParameterSymbols.isEmpty()
             ) {
                 overloads += it
             }
@@ -46,16 +46,19 @@
         scope.processDirectlyOverriddenFunctions(declaration.symbol) { overriddenSymbol ->
             for (overloadSymbol in overloads) {
                 val unwrappedOverriddenSymbol = overriddenSymbol.unwrapSubstitutionOverrides()
-                if (unwrappedOverriddenSymbol.receiverParameterSymbol != null ||
-                    unwrappedOverriddenSymbol.contextParameterSymbols.isNotEmpty()
-                ) {
+                if (unwrappedOverriddenSymbol.contextParameterSymbols.isNotEmpty()) {
                     continue
                 }
-                val indexedParameterTypes = unwrappedOverriddenSymbol.valueParameterSymbols.map { it.resolvedReturnType }.withIndex()
+                val indexedParameterTypes = with(unwrappedOverriddenSymbol) {
+                    val valueParameterTypes = valueParameterSymbols.map { it.resolvedReturnType }
+                    (receiverParameterSymbol?.let { listOf(it.resolvedType) + valueParameterTypes } ?: valueParameterTypes).withIndex()
+                }
                 if (indexedParameterTypes.none { it.value is ConeTypeParameterType }) continue
                 if (indexedParameterTypes.all { (index, parameterType) ->
-                        parameterType.computeJvmDescriptorRepresentation() ==
-                                overloadSymbol.valueParameterSymbols[index].resolvedReturnType.computeJvmDescriptorRepresentation()
+                        val overloadType = overloadSymbol.receiverParameterSymbol?.let {
+                            if (index == 0) it.resolvedType else overloadSymbol.valueParameterSymbols[index - 1].resolvedReturnType
+                        } ?: overloadSymbol.valueParameterSymbols[index].resolvedReturnType
+                        parameterType.computeJvmDescriptorRepresentation() == overloadType.computeJvmDescriptorRepresentation()
                     }
                 ) {
                     reporter.reportOn(
diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirNonSuppressibleErrorNames.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirNonSuppressibleErrorNames.kt
index f4d35f8..4e309da 100644
--- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirNonSuppressibleErrorNames.kt
+++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirNonSuppressibleErrorNames.kt
@@ -662,6 +662,7 @@
     "VALUE_CLASS_WITHOUT_JVM_INLINE_ANNOTATION",
     "JVM_INLINE_WITHOUT_VALUE_CLASS",
     "ACCIDENTAL_OVERRIDE_CLASH_BY_JVM_SIGNATURE",
+    "ACCIDENTAL_OVERLOAD_CLASH_BY_JVM_ERASURE_ERROR",
     "IMPLEMENTATION_BY_DELEGATION_WITH_DIFFERENT_GENERIC_SIGNATURE_ERROR",
     "NOT_YET_SUPPORTED_LOCAL_INLINE_FUNCTION",
     "JAVA_TYPE_MISMATCH",