[FIR, IR] Cleanup. Drop no longer used ExpectActualCheckingCompatibility.Compatible

KT-62631

1. Drop no longer used ExpectActualCheckingCompatibility.Compatible
2. Merge ExpectActualCheckingCompatibility.Incompatible & ExpectActualCheckingCompatibility
3. Rename ExpectActualCheckingCompatibility to ExpectActualIncompatibility
diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt
index 0daaf93..ef4081e 100644
--- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt
+++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt
@@ -25,7 +25,7 @@
 import org.jetbrains.kotlin.lexer.KtTokens
 import org.jetbrains.kotlin.mpp.RegularClassSymbolMarker
 import org.jetbrains.kotlin.resolve.calls.mpp.AbstractExpectActualChecker
-import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCheckingCompatibility
+import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualIncompatibility
 import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualMatchingCompatibility
 import org.jetbrains.kotlin.resolve.multiplatform.MemberIncompatibility
 import org.jetbrains.kotlin.utils.addToStdlib.partitionIsInstance
@@ -186,12 +186,12 @@
         }
 
         val (classScopesIncompatibilities, normalIncompatibilities) =
-            checkingIncompatibilities.partitionIsInstance<_, ExpectActualCheckingCompatibility.ClassScopes<FirBasedSymbol<*>>>()
+            checkingIncompatibilities.partitionIsInstance<_, ExpectActualIncompatibility.ClassScopes<FirBasedSymbol<*>>>()
 
         for (incompatibility in normalIncompatibilities) {
             check(expectedSingleCandidate != null) // It can't be null, because checkingIncompatibilities is not empty
             // A nicer diagnostic for functions with default params
-            if (declaration is FirFunction && incompatibility == ExpectActualCheckingCompatibility.ActualFunctionWithDefaultParameters) {
+            if (declaration is FirFunction && incompatibility == ExpectActualIncompatibility.ActualFunctionWithDefaultParameters) {
                 reporter.reportOn(declaration.source, FirErrors.ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS, context)
             } else {
                 reporter.reportOn(
@@ -205,7 +205,7 @@
             }
         }
         // CLASS_SCOPE incompatibilities might be confusing if class kinds or class modalities don't match
-        if (normalIncompatibilities.none { it is ExpectActualCheckingCompatibility.ClassKind || it is ExpectActualCheckingCompatibility.Modality }) {
+        if (normalIncompatibilities.none { it is ExpectActualIncompatibility.ClassKind || it is ExpectActualIncompatibility.Modality }) {
             for (incompatibility in classScopesIncompatibilities) {
                 reportClassScopesIncompatibility(symbol, expectedSingleCandidate, incompatibility, reporter, source, context)
             }
@@ -215,7 +215,7 @@
     private fun reportClassScopesIncompatibility(
         symbol: FirBasedSymbol<FirDeclaration>,
         expectedSingleCandidate: FirBasedSymbol<*>?,
-        checkingCompatibility: ExpectActualCheckingCompatibility.ClassScopes<FirBasedSymbol<*>>,
+        checkingCompatibility: ExpectActualIncompatibility.ClassScopes<FirBasedSymbol<*>>,
         reporter: DiagnosticReporter,
         source: KtSourceElement?,
         context: CheckerContext,
@@ -237,13 +237,13 @@
 
         if (nonTrivialIncompatibleMembers.isNotEmpty()) {
             val (defaultArgsIncompatibleMembers, otherIncompatibleMembers) =
-                nonTrivialIncompatibleMembers.partition { it.incompatibility == ExpectActualCheckingCompatibility.DefaultParametersInExpectActualizedByFakeOverride }
+                nonTrivialIncompatibleMembers.partition { it.incompatibility == ExpectActualIncompatibility.DefaultParametersInExpectActualizedByFakeOverride }
 
             if (defaultArgsIncompatibleMembers.isNotEmpty()) { // report a nicer diagnostic for DefaultArgumentsInExpectActualizedByFakeOverride
                 val problematicExpectMembers = defaultArgsIncompatibleMembers
                     .map {
                         it.expect as? FirNamedFunctionSymbol
-                            ?: error("${ExpectActualCheckingCompatibility.DefaultParametersInExpectActualizedByFakeOverride} can be reported only for ${FirNamedFunctionSymbol::class}")
+                            ?: error("${ExpectActualIncompatibility.DefaultParametersInExpectActualizedByFakeOverride} can be reported only for ${FirNamedFunctionSymbol::class}")
                     }
                 reporter.reportOn(
                     source,
@@ -292,7 +292,7 @@
         expectContainingClass: FirRegularClassSymbol?,
         expectActualMatchingContext: FirExpectActualMatchingContext,
         context: CheckerContext,
-    ): List<ExpectActualCheckingCompatibility.Incompatible<FirBasedSymbol<*>>> =
+    ): List<ExpectActualIncompatibility<FirBasedSymbol<*>>> =
         when {
             actualSymbol is FirCallableSymbol<*> && expectSymbol is FirCallableSymbol<*> -> {
                 AbstractExpectActualChecker.getCallablesCompatibility(
@@ -379,35 +379,35 @@
             actualContainingClass.primaryConstructorIfAny(platformSession)?.valueParameterSymbols?.singleOrNull() == symbol.correspondingValueParameterFromPrimaryConstructor
 }
 
-private fun ExpectActualCheckingCompatibility.Incompatible<*>.toDiagnostic() = when (this) {
-    ExpectActualCheckingCompatibility.ActualFunctionWithDefaultParameters -> error("unreachable")
-    is ExpectActualCheckingCompatibility.ClassScopes<*> -> error("unreachable")
+private fun ExpectActualIncompatibility<*>.toDiagnostic() = when (this) {
+    ExpectActualIncompatibility.ActualFunctionWithDefaultParameters -> error("unreachable")
+    is ExpectActualIncompatibility.ClassScopes<*> -> error("unreachable")
 
-    ExpectActualCheckingCompatibility.ClassKind -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_CLASS_KIND
-    ExpectActualCheckingCompatibility.ClassModifiers -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_CLASS_MODIFIERS
-    ExpectActualCheckingCompatibility.ClassTypeParameterCount -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_CLASS_TYPE_PARAMETER_COUNT
-    ExpectActualCheckingCompatibility.ClassTypeParameterUpperBounds -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_CLASS_TYPE_PARAMETER_UPPER_BOUNDS
-    ExpectActualCheckingCompatibility.ContextParameterNames -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_CONTEXT_PARAMETER_NAMES
-    ExpectActualCheckingCompatibility.DefaultParametersInExpectActualizedByFakeOverride -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_DEFAULT_PARAMETERS_IN_EXPECT_ACTUALIZED_BY_FAKE_OVERRIDE
-    ExpectActualCheckingCompatibility.EnumEntries -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_ENUM_ENTRIES
-    ExpectActualCheckingCompatibility.FunInterfaceModifier -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_FUN_INTERFACE_MODIFIER
-    ExpectActualCheckingCompatibility.FunctionModifiersDifferent -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_FUNCTION_MODIFIERS_DIFFERENT
-    ExpectActualCheckingCompatibility.FunctionModifiersNotSubset -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_FUNCTION_MODIFIERS_NOT_SUBSET
-    ExpectActualCheckingCompatibility.IllegalRequiresOpt -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_ILLEGAL_REQUIRES_OPT_IN
-    ExpectActualCheckingCompatibility.NestedTypeAlias -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_NESTED_TYPE_ALIAS
-    ExpectActualCheckingCompatibility.ParameterNames -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_PARAMETER_NAMES
-    ExpectActualCheckingCompatibility.PropertyConstModifier -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_PROPERTY_CONST_MODIFIER
-    ExpectActualCheckingCompatibility.PropertyKind -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_PROPERTY_KIND
-    ExpectActualCheckingCompatibility.PropertyLateinitModifier -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_PROPERTY_LATEINIT_MODIFIER
-    ExpectActualCheckingCompatibility.ReturnType -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_RETURN_TYPE
-    ExpectActualCheckingCompatibility.Supertypes -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_SUPERTYPES
-    ExpectActualCheckingCompatibility.TypeParameterNames -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_TYPE_PARAMETER_NAMES
-    ExpectActualCheckingCompatibility.TypeParameterReified -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_TYPE_PARAMETER_REIFIED
-    ExpectActualCheckingCompatibility.TypeParameterVariance -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_TYPE_PARAMETER_VARIANCE
-    ExpectActualCheckingCompatibility.ValueParameterCrossinline -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_VALUE_PARAMETER_CROSSINLINE
-    ExpectActualCheckingCompatibility.ValueParameterNoinline -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_VALUE_PARAMETER_NOINLINE
-    ExpectActualCheckingCompatibility.ValueParameterVararg -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_VALUE_PARAMETER_VARARG
-    is ExpectActualCheckingCompatibility.Modality -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_MODALITY
-    is ExpectActualCheckingCompatibility.PropertySetterVisibility -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_PROPERTY_SETTER_VISIBILITY
-    is ExpectActualCheckingCompatibility.Visibility -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_VISIBILITY
+    ExpectActualIncompatibility.ClassKind -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_CLASS_KIND
+    ExpectActualIncompatibility.ClassModifiers -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_CLASS_MODIFIERS
+    ExpectActualIncompatibility.ClassTypeParameterCount -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_CLASS_TYPE_PARAMETER_COUNT
+    ExpectActualIncompatibility.ClassTypeParameterUpperBounds -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_CLASS_TYPE_PARAMETER_UPPER_BOUNDS
+    ExpectActualIncompatibility.ContextParameterNames -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_CONTEXT_PARAMETER_NAMES
+    ExpectActualIncompatibility.DefaultParametersInExpectActualizedByFakeOverride -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_DEFAULT_PARAMETERS_IN_EXPECT_ACTUALIZED_BY_FAKE_OVERRIDE
+    ExpectActualIncompatibility.EnumEntries -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_ENUM_ENTRIES
+    ExpectActualIncompatibility.FunInterfaceModifier -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_FUN_INTERFACE_MODIFIER
+    ExpectActualIncompatibility.FunctionModifiersDifferent -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_FUNCTION_MODIFIERS_DIFFERENT
+    ExpectActualIncompatibility.FunctionModifiersNotSubset -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_FUNCTION_MODIFIERS_NOT_SUBSET
+    ExpectActualIncompatibility.IllegalRequiresOpt -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_ILLEGAL_REQUIRES_OPT_IN
+    ExpectActualIncompatibility.NestedTypeAlias -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_NESTED_TYPE_ALIAS
+    ExpectActualIncompatibility.ParameterNames -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_PARAMETER_NAMES
+    ExpectActualIncompatibility.PropertyConstModifier -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_PROPERTY_CONST_MODIFIER
+    ExpectActualIncompatibility.PropertyKind -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_PROPERTY_KIND
+    ExpectActualIncompatibility.PropertyLateinitModifier -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_PROPERTY_LATEINIT_MODIFIER
+    ExpectActualIncompatibility.ReturnType -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_RETURN_TYPE
+    ExpectActualIncompatibility.Supertypes -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_SUPERTYPES
+    ExpectActualIncompatibility.TypeParameterNames -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_TYPE_PARAMETER_NAMES
+    ExpectActualIncompatibility.TypeParameterReified -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_TYPE_PARAMETER_REIFIED
+    ExpectActualIncompatibility.TypeParameterVariance -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_TYPE_PARAMETER_VARIANCE
+    ExpectActualIncompatibility.ValueParameterCrossinline -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_VALUE_PARAMETER_CROSSINLINE
+    ExpectActualIncompatibility.ValueParameterNoinline -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_VALUE_PARAMETER_NOINLINE
+    ExpectActualIncompatibility.ValueParameterVararg -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_VALUE_PARAMETER_VARARG
+    is ExpectActualIncompatibility.Modality -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_MODALITY
+    is ExpectActualIncompatibility.PropertySetterVisibility -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_PROPERTY_SETTER_VISIBILITY
+    is ExpectActualIncompatibility.Visibility -> FirErrors.EXPECT_ACTUAL_INCOMPATIBILITY_VISIBILITY
 }
diff --git a/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/ExpectActualCollector.kt b/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/ExpectActualCollector.kt
index baac6d4..e8cc7ea 100644
--- a/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/ExpectActualCollector.kt
+++ b/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/ExpectActualCollector.kt
@@ -24,7 +24,7 @@
 import org.jetbrains.kotlin.name.ClassId
 import org.jetbrains.kotlin.resolve.calls.mpp.AbstractExpectActualChecker
 import org.jetbrains.kotlin.resolve.calls.mpp.AbstractExpectActualMatcher
-import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCheckingCompatibility
+import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualIncompatibility
 import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualMatchingCompatibility
 import java.io.File
 
@@ -452,7 +452,7 @@
         override fun onIncompatibleMembersFromClassScope(
             expectSymbol: DeclarationSymbolMarker,
             actualSymbol: DeclarationSymbolMarker,
-            incompatibility: ExpectActualCheckingCompatibility.Incompatible<*>,
+            incompatibility: ExpectActualIncompatibility<*>,
             containingExpectClassSymbol: RegularClassSymbolMarker?,
             containingActualClassSymbol: RegularClassSymbolMarker?,
         ) {
diff --git a/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizationErrors.kt b/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizationErrors.kt
index 2e64bf1..112666b 100644
--- a/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizationErrors.kt
+++ b/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizationErrors.kt
@@ -17,7 +17,7 @@
 import org.jetbrains.kotlin.ir.util.RenderIrElementVisitorForDiagnosticText
 import org.jetbrains.kotlin.platform.isCommon
 import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualAnnotationsIncompatibilityType
-import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCheckingCompatibility
+import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualIncompatibility
 import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualMatchingCompatibility
 
 internal object IrActualizationErrors {
@@ -26,7 +26,7 @@
     val EXPECT_ACTUAL_IR_MISMATCH by error3<PsiElement, String, String, ExpectActualMatchingCompatibility.Mismatch>(
         SourceElementPositioningStrategies.EXPECT_ACTUAL_MODIFIER
     )
-    val EXPECT_ACTUAL_IR_INCOMPATIBILITY by error3<PsiElement, String, String, ExpectActualCheckingCompatibility.Incompatible<*>>(
+    val EXPECT_ACTUAL_IR_INCOMPATIBILITY by error3<PsiElement, String, String, ExpectActualIncompatibility<*>>(
         SourceElementPositioningStrategies.EXPECT_ACTUAL_MODIFIER
     )
     val ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT by warning3<PsiElement, IrSymbol, IrSymbol, ExpectActualAnnotationsIncompatibilityType<IrConstructorCall>>(
@@ -112,7 +112,7 @@
     val MISMATCH = Renderer<ExpectActualMatchingCompatibility.Mismatch> {
         it.reason
     }
-    val INCOMPATIBILITY = Renderer<ExpectActualCheckingCompatibility.Incompatible<*>> {
+    val INCOMPATIBILITY = Renderer<ExpectActualIncompatibility<*>> {
         it.reason
     }
     val EXPECT_ACTUAL_ANNOTATION_INCOMPATIBILITY =
diff --git a/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizerUtils.kt b/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizerUtils.kt
index 52ca2ea..e5dd781 100644
--- a/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizerUtils.kt
+++ b/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizerUtils.kt
@@ -15,7 +15,7 @@
 import org.jetbrains.kotlin.ir.util.*
 import org.jetbrains.kotlin.name.StandardClassIds
 import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualAnnotationsIncompatibilityType
-import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCheckingCompatibility
+import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualIncompatibility
 import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualMatchingCompatibility
 
 internal fun recordActualForExpectDeclaration(
@@ -102,7 +102,7 @@
 internal fun IrDiagnosticReporter.reportExpectActualIrIncompatibility(
     expectSymbol: IrSymbol,
     actualSymbol: IrSymbol,
-    incompatibility: ExpectActualCheckingCompatibility.Incompatible<*>,
+    incompatibility: ExpectActualIncompatibility<*>,
 ) {
     val expectDeclaration = expectSymbol.owner as IrDeclaration
     val actualDeclaration = actualSymbol.owner as IrDeclaration
diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualChecker.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualChecker.kt
index 9b5138b..a48e258 100644
--- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualChecker.kt
+++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualChecker.kt
@@ -14,7 +14,7 @@
 import org.jetbrains.kotlin.name.StandardClassIds
 import org.jetbrains.kotlin.resolve.calls.mpp.AbstractExpectActualMatcher.matchSingleExpectAgainstPotentialActuals
 import org.jetbrains.kotlin.resolve.checkers.OptInNames
-import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCheckingCompatibility
+import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualIncompatibility
 import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualMatchingCompatibility
 import org.jetbrains.kotlin.resolve.multiplatform.MemberIncompatibility
 import org.jetbrains.kotlin.types.model.TypeSubstitutorMarker
@@ -35,7 +35,7 @@
         actualClassLikeSymbol: ClassLikeSymbolMarker,
         context: ExpectActualMatchingContext<T>,
         languageVersionSettings: LanguageVersionSettings,
-    ): List<ExpectActualCheckingCompatibility.Incompatible<T>> {
+    ): List<ExpectActualIncompatibility<T>> {
         val result = with(context) {
             getClassifiersCompatibility(
                 expectClassSymbol,
@@ -45,7 +45,7 @@
             )
         }
         @Suppress("UNCHECKED_CAST")
-        return result as List<ExpectActualCheckingCompatibility.Incompatible<T>>
+        return result as List<ExpectActualIncompatibility<T>>
     }
 
     fun <T : DeclarationSymbolMarker> getCallablesCompatibility(
@@ -55,7 +55,7 @@
         actualContainingClass: RegularClassSymbolMarker?,
         context: ExpectActualMatchingContext<T>,
         languageVersionSettings: LanguageVersionSettings,
-    ): List<ExpectActualCheckingCompatibility.Incompatible<T>> = with(context) {
+    ): List<ExpectActualIncompatibility<T>> = with(context) {
         val expectTypeParameters = expectContainingClass?.typeParameters.orEmpty()
         val actualTypeParameters = actualContainingClass?.typeParameters.orEmpty()
         val parentSubstitutor = (expectTypeParameters zipIfSizesAreEqual actualTypeParameters)
@@ -69,7 +69,7 @@
             languageVersionSettings,
         )
         @Suppress("UNCHECKED_CAST")
-        result as List<ExpectActualCheckingCompatibility.Incompatible<T>>
+        result as List<ExpectActualIncompatibility<T>>
     }
 
     fun <T : DeclarationSymbolMarker> checkSingleExpectTopLevelDeclarationAgainstMatchedActual(
@@ -96,7 +96,7 @@
         actualClassLikeSymbol: ClassLikeSymbolMarker,
         parentSubstitutor: TypeSubstitutorMarker?,
         languageVersionSettings: LanguageVersionSettings,
-    ): List<ExpectActualCheckingCompatibility.Incompatible<*>> = buildList {
+    ): List<ExpectActualIncompatibility<*>> = buildList {
         // Can't check FQ names here because nested expected class may be implemented via actual typealias's expansion with the other FQ name
         require(nameOf(expectClassSymbol) == nameOf(actualClassLikeSymbol)) {
             "This function should be invoked only for declarations with the same name: $expectClassSymbol, $actualClassLikeSymbol"
@@ -105,37 +105,37 @@
         val actualClass = computeActualClassFromPotentialActualTypealias(
             expectClassSymbol,
             actualClassLikeSymbol,
-            onNestedTypealias = { return@getClassifiersCompatibility listOf(ExpectActualCheckingCompatibility.NestedTypeAlias) },
+            onNestedTypealias = { return@getClassifiersCompatibility listOf(ExpectActualIncompatibility.NestedTypeAlias) },
             // do not report extra error on erroneous typealias
             onErroneousTypealias = { return@getClassifiersCompatibility emptyList() },
         )!!
 
         if (!areCompatibleClassKinds(expectClassSymbol, actualClass)) {
-            add(ExpectActualCheckingCompatibility.ClassKind)
+            add(ExpectActualIncompatibility.ClassKind)
         } else {
             // Don't report modality mismatch when classifiers don't match by ClassKind.
             // Different classifiers might have different modality (e.g. interface vs class)
             if (!areCompatibleModalities(expectClassSymbol.modality, actualClass.modality)) {
-                add(ExpectActualCheckingCompatibility.Modality(expectClassSymbol.modality, actualClass.modality))
+                add(ExpectActualIncompatibility.Modality(expectClassSymbol.modality, actualClass.modality))
             }
         }
 
         if (!equalBy(expectClassSymbol, actualClass) { listOf(it.isCompanion, it.isInner, it.isInlineOrValue) }) {
-            add(ExpectActualCheckingCompatibility.ClassModifiers)
+            add(ExpectActualIncompatibility.ClassModifiers)
         }
 
         if (expectClassSymbol.isFun && (!actualClass.isFun || !actualClass.isSamInterface())) {
-            add(ExpectActualCheckingCompatibility.FunInterfaceModifier)
+            add(ExpectActualIncompatibility.FunInterfaceModifier)
         }
 
         val expectTypeParameterSymbols = expectClassSymbol.typeParameters
         val actualTypeParameterSymbols = actualClass.typeParameters
         if (expectTypeParameterSymbols.size != actualTypeParameterSymbols.size) {
-            add(ExpectActualCheckingCompatibility.ClassTypeParameterCount)
+            add(ExpectActualIncompatibility.ClassTypeParameterCount)
         }
 
         if (!areCompatibleClassVisibilities(expectClassSymbol, actualClass)) {
-            add(ExpectActualCheckingCompatibility.Visibility)
+            add(ExpectActualIncompatibility.Visibility)
         }
 
         val substitutor = (expectTypeParameterSymbols zipIfSizesAreEqual actualTypeParameterSymbols)?.let {
@@ -143,18 +143,18 @@
         }
 
         if (substitutor != null && !areCompatibleTypeParameterUpperBounds(expectTypeParameterSymbols, actualTypeParameterSymbols, substitutor)) {
-            add(ExpectActualCheckingCompatibility.ClassTypeParameterUpperBounds)
+            add(ExpectActualIncompatibility.ClassTypeParameterUpperBounds)
         }
 
         getTypeParametersVarianceOrReifiedIncompatibility(expectTypeParameterSymbols, actualTypeParameterSymbols)
             ?.let { add(it) }
 
         if (substitutor != null && !areCompatibleSupertypes(expectClassSymbol, actualClass, substitutor)) {
-            add(ExpectActualCheckingCompatibility.Supertypes)
+            add(ExpectActualIncompatibility.Supertypes)
         }
 
         if (isIllegalRequiresOptInAnnotation(on = actualClass, expectClassSymbol, languageVersionSettings)) {
-            add(ExpectActualCheckingCompatibility.IllegalRequiresOpt)
+            add(ExpectActualIncompatibility.IllegalRequiresOpt)
         }
 
         if (substitutor != null) {
@@ -197,7 +197,7 @@
         actualClassSymbol: RegularClassSymbolMarker,
         substitutor: TypeSubstitutorMarker,
         languageVersionSettings: LanguageVersionSettings,
-    ): ExpectActualCheckingCompatibility.Incompatible<*>? {
+    ): ExpectActualIncompatibility<*>? {
         val mismatchedMembers: ArrayList<Pair<DeclarationSymbolMarker, Map<ExpectActualMatchingCompatibility.Mismatch, List<DeclarationSymbolMarker?>>>> =
             ArrayList()
         val incompatibleMembers: ArrayList<MemberIncompatibility<*>> =
@@ -235,13 +235,13 @@
             val aEntries = expectClassSymbol.collectEnumEntryNames()
             val bEntries = actualClassSymbol.collectEnumEntryNames()
 
-            if (!bEntries.containsAll(aEntries)) return ExpectActualCheckingCompatibility.EnumEntries
+            if (!bEntries.containsAll(aEntries)) return ExpectActualIncompatibility.EnumEntries
         }
 
         // TODO: check static scope?
 
         return when (mismatchedMembers.isNotEmpty() || incompatibleMembers.isNotEmpty()) {
-            true -> ExpectActualCheckingCompatibility.ClassScopes(mismatchedMembers, incompatibleMembers)
+            true -> ExpectActualIncompatibility.ClassScopes(mismatchedMembers, incompatibleMembers)
             false -> null
         }
     }
@@ -346,7 +346,7 @@
         expectContainingClass: RegularClassSymbolMarker?,
         actualContainingClass: RegularClassSymbolMarker?,
         languageVersionSettings: LanguageVersionSettings,
-    ): List<ExpectActualCheckingCompatibility.Incompatible<*>> = buildList {
+    ): List<ExpectActualIncompatibility<*>> = buildList {
         checkCallablesInvariants(expectDeclaration, actualDeclaration)
 
         if (areEnumConstructors(expectDeclaration, actualDeclaration, expectContainingClass, actualContainingClass)) {
@@ -372,7 +372,7 @@
                 dynamicTypesEqualToAnything = false
             )
         ) {
-            add(ExpectActualCheckingCompatibility.ReturnType)
+            add(ExpectActualIncompatibility.ReturnType)
         }
 
         if (
@@ -380,7 +380,7 @@
             expectDeclaration.hasStableParameterNames &&
             sizesAreEqualAndElementsNotEqualBy(expectedValueParameters, actualValueParameters) { nameOf(it) }
         ) {
-            add(ExpectActualCheckingCompatibility.ParameterNames)
+            add(ExpectActualIncompatibility.ParameterNames)
         }
 
         if (
@@ -389,11 +389,11 @@
             expectDeclaration.hasStableParameterNames &&
             sizesAreEqualAndElementsNotEqualBy(expectedContextParameters, actualContextParameters) { nameOf(it) }
         ) {
-            add(ExpectActualCheckingCompatibility.ContextParameterNames)
+            add(ExpectActualIncompatibility.ContextParameterNames)
         }
 
         if (sizesAreEqualAndElementsNotEqualBy(expectedTypeParameters, actualTypeParameters) { nameOf(it) }) {
-            add(ExpectActualCheckingCompatibility.TypeParameterNames)
+            add(ExpectActualIncompatibility.TypeParameterNames)
         }
 
         val expectModality = expectDeclaration.modality
@@ -406,7 +406,7 @@
                 actualContainingClass?.modality
             )
         ) {
-            add(ExpectActualCheckingCompatibility.Modality(expectModality, actualModality))
+            add(ExpectActualIncompatibility.Modality(expectModality, actualModality))
         }
 
         if (!areCompatibleCallableVisibilities(
@@ -417,7 +417,7 @@
                 languageVersionSettings
             )
         ) {
-            add(ExpectActualCheckingCompatibility.Visibility)
+            add(ExpectActualIncompatibility.Visibility)
         }
 
         getTypeParametersVarianceOrReifiedIncompatibility(expectedTypeParameters, actualTypeParameters)?.let { add(it) }
@@ -429,7 +429,7 @@
             (actualDeclaration.isFakeOverride(actualContainingClass) || actualDeclaration.isDelegatedMember) &&
             expectDeclaration.valueParameters.any { it.hasDefaultValueNonRecursive }
         ) {
-            add(ExpectActualCheckingCompatibility.DefaultParametersInExpectActualizedByFakeOverride)
+            add(ExpectActualIncompatibility.DefaultParametersInExpectActualizedByFakeOverride)
         }
 
         if (shouldCheckDefaultParams &&
@@ -447,21 +447,21 @@
             // If default params came from common supertypes of actual class and expect class then it's a valid code.
             // Here we filter out such default params.
             if ((actualOverriddenDeclarations - expectOverriddenDeclarations).flatMap { it.valueParameters }.any { it.hasDefaultValue }) {
-                add(ExpectActualCheckingCompatibility.ActualFunctionWithDefaultParameters)
+                add(ExpectActualIncompatibility.ActualFunctionWithDefaultParameters)
             }
         }
 
         if (sizesAreEqualAndElementsNotEqualBy(expectedValueParameters, actualValueParameters) { it.isVararg }) {
-            add(ExpectActualCheckingCompatibility.ValueParameterVararg)
+            add(ExpectActualIncompatibility.ValueParameterVararg)
         }
 
         // Adding noinline/crossinline to parameters is disallowed, except if the expected declaration was not inline at all
         if (expectDeclaration is SimpleFunctionSymbolMarker && expectDeclaration.isInline) {
             if (expectedValueParameters.indices.any { i -> !expectedValueParameters[i].isNoinline && actualValueParameters[i].isNoinline }) {
-                add(ExpectActualCheckingCompatibility.ValueParameterNoinline)
+                add(ExpectActualIncompatibility.ValueParameterNoinline)
             }
             if (expectedValueParameters.indices.any { i -> !expectedValueParameters[i].isCrossinline && actualValueParameters[i].isCrossinline }) {
-                add(ExpectActualCheckingCompatibility.ValueParameterCrossinline)
+                add(ExpectActualIncompatibility.ValueParameterCrossinline)
             }
         }
 
@@ -571,14 +571,14 @@
     private fun ExpectActualMatchingContext<*>.getTypeParametersVarianceOrReifiedIncompatibility(
         expectTypeParameterSymbols: List<TypeParameterSymbolMarker>,
         actualTypeParameterSymbols: List<TypeParameterSymbolMarker>,
-    ): ExpectActualCheckingCompatibility.Incompatible<*>? {
+    ): ExpectActualIncompatibility<*>? {
         if (sizesAreEqualAndElementsNotEqualBy(expectTypeParameterSymbols, actualTypeParameterSymbols) { it.variance }) {
-            return ExpectActualCheckingCompatibility.TypeParameterVariance
+            return ExpectActualIncompatibility.TypeParameterVariance
         }
 
         // Removing "reified" from an expected function's type parameter is fine
         if ((expectTypeParameterSymbols zipIfSizesAreEqual actualTypeParameterSymbols)?.any { (e, a) -> !e.isReified && a.isReified } == true) {
-            return ExpectActualCheckingCompatibility.TypeParameterReified
+            return ExpectActualIncompatibility.TypeParameterReified
         }
 
         return null
@@ -587,9 +587,9 @@
     private fun ExpectActualMatchingContext<*>.getFunctionsIncompatibility(
         expectFunction: CallableSymbolMarker,
         actualFunction: CallableSymbolMarker,
-    ): ExpectActualCheckingCompatibility.Incompatible<*>? {
+    ): ExpectActualIncompatibility<*>? {
         if (!equalBy(expectFunction, actualFunction) { f -> f.isSuspend }) {
-            return ExpectActualCheckingCompatibility.FunctionModifiersDifferent
+            return ExpectActualIncompatibility.FunctionModifiersDifferent
         }
 
         if (
@@ -597,7 +597,7 @@
             expectFunction.isInline && !actualFunction.isInline ||
             expectFunction.isOperator && !actualFunction.isOperator
         ) {
-            return ExpectActualCheckingCompatibility.FunctionModifiersNotSubset
+            return ExpectActualIncompatibility.FunctionModifiersNotSubset
         }
 
         return null
@@ -608,13 +608,13 @@
         actual: PropertySymbolMarker,
         expectContainingClass: RegularClassSymbolMarker?,
         languageVersionSettings: LanguageVersionSettings,
-    ): ExpectActualCheckingCompatibility.Incompatible<*>? {
+    ): ExpectActualIncompatibility<*>? {
         return when {
-            !equalBy(expected, actual) { p -> p.isVar } -> ExpectActualCheckingCompatibility.PropertyKind
-            !equalBy(expected, actual) { p -> p.isLateinit } -> ExpectActualCheckingCompatibility.PropertyLateinitModifier
-            expected.isConst && !actual.isConst -> ExpectActualCheckingCompatibility.PropertyConstModifier
+            !equalBy(expected, actual) { p -> p.isVar } -> ExpectActualIncompatibility.PropertyKind
+            !equalBy(expected, actual) { p -> p.isLateinit } -> ExpectActualIncompatibility.PropertyLateinitModifier
+            expected.isConst && !actual.isConst -> ExpectActualIncompatibility.PropertyConstModifier
             !arePropertySettersWithCompatibleVisibilities(expected, actual, expectContainingClass, languageVersionSettings) ->
-                ExpectActualCheckingCompatibility.PropertySetterVisibility
+                ExpectActualIncompatibility.PropertySetterVisibility
             else -> null
         }
     }
diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/ExpectActualMatchingContext.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/ExpectActualMatchingContext.kt
index 87d854d..e0d6596 100644
--- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/ExpectActualMatchingContext.kt
+++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/ExpectActualMatchingContext.kt
@@ -13,7 +13,7 @@
 import org.jetbrains.kotlin.name.ClassId
 import org.jetbrains.kotlin.name.FqName
 import org.jetbrains.kotlin.name.Name
-import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCheckingCompatibility
+import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualIncompatibility
 import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualMatchingCompatibility
 import org.jetbrains.kotlin.types.Variance
 import org.jetbrains.kotlin.types.model.KotlinTypeMarker
@@ -162,7 +162,7 @@
     fun onIncompatibleMembersFromClassScope(
         expectSymbol: DeclarationSymbolMarker,
         actualSymbol: DeclarationSymbolMarker,
-        incompatibility: ExpectActualCheckingCompatibility.Incompatible<*>,
+        incompatibility: ExpectActualIncompatibility<*>,
         containingExpectClassSymbol: RegularClassSymbolMarker?,
         containingActualClassSymbol: RegularClassSymbolMarker?,
     ) {}
diff --git a/core/compiler.common/src/org/jetbrains/kotlin/resolve/multiplatform/ExpectActualCompatibility.kt b/core/compiler.common/src/org/jetbrains/kotlin/resolve/multiplatform/ExpectActualCompatibility.kt
index ea9493a6..cdc1ee5 100644
--- a/core/compiler.common/src/org/jetbrains/kotlin/resolve/multiplatform/ExpectActualCompatibility.kt
+++ b/core/compiler.common/src/org/jetbrains/kotlin/resolve/multiplatform/ExpectActualCompatibility.kt
@@ -14,7 +14,7 @@
  * All mismatches that can be fixed by introducing an overload without this mismatch.
  * In other words: "overloadable" mismatches
  *
- * @see ExpectActualCheckingCompatibility
+ * @see ExpectActualIncompatibility
  */
 sealed class ExpectActualMatchingCompatibility {
     sealed class Mismatch(val reason: String) : ExpectActualMatchingCompatibility()
@@ -36,68 +36,79 @@
  *
  * @see ExpectActualMatchingCompatibility
  */
-sealed class ExpectActualCheckingCompatibility<out D> {
-    sealed class Incompatible<out D>(val reason: String) : ExpectActualCheckingCompatibility<D>()
-
-    object ClassTypeParameterCount : Incompatible<Nothing>(TYPE_PARAMETER_COUNT)
+sealed class ExpectActualIncompatibility<out D>(val reason: String) {
+    object ClassTypeParameterCount : ExpectActualIncompatibility<Nothing>(TYPE_PARAMETER_COUNT)
 
     // Callables
-    object ReturnType : Incompatible<Nothing>("the return types are different")
-    object ParameterNames : Incompatible<Nothing>("the parameter names are different")
-    object ContextParameterNames : Incompatible<Nothing>("the context parameter names are different")
-    object TypeParameterNames : Incompatible<Nothing>("the names of type parameters are different")
-    object ValueParameterVararg : Incompatible<Nothing>("some value parameter is vararg in one declaration and non-vararg in the other")
+    object ReturnType : ExpectActualIncompatibility<Nothing>("the return types are different")
+    object ParameterNames : ExpectActualIncompatibility<Nothing>("the parameter names are different")
+    object ContextParameterNames : ExpectActualIncompatibility<Nothing>("the context parameter names are different")
+    object TypeParameterNames : ExpectActualIncompatibility<Nothing>("the names of type parameters are different")
+    object ValueParameterVararg :
+        ExpectActualIncompatibility<Nothing>("some value parameter is vararg in one declaration and non-vararg in the other")
+
     object ValueParameterNoinline :
-        Incompatible<Nothing>("some value parameter is noinline in one declaration and not noinline in the other")
+        ExpectActualIncompatibility<Nothing>("some value parameter is noinline in one declaration and not noinline in the other")
+
     object ValueParameterCrossinline :
-        Incompatible<Nothing>("some value parameter is crossinline in one declaration and not crossinline in the other")
+        ExpectActualIncompatibility<Nothing>("some value parameter is crossinline in one declaration and not crossinline in the other")
 
     // Functions
-    object FunctionModifiersDifferent : Incompatible<Nothing>("the modifiers are different (suspend)")
+    object FunctionModifiersDifferent : ExpectActualIncompatibility<Nothing>("the modifiers are different (suspend)")
     object FunctionModifiersNotSubset :
-        Incompatible<Nothing>("some modifiers on 'expect' declaration are missing on the 'actual' one (infix, inline, operator)")
+        ExpectActualIncompatibility<Nothing>("some modifiers on 'expect' declaration are missing on the 'actual' one (infix, inline, operator)")
+
     object ActualFunctionWithDefaultParameters :
-        Incompatible<Nothing>("the 'actual' function cannot have default argument values, they should be declared in the 'expect' function")
+        ExpectActualIncompatibility<Nothing>("the 'actual' function cannot have default argument values, they should be declared in the 'expect' function")
+
     object DefaultParametersInExpectActualizedByFakeOverride :
-        Incompatible<Nothing>("default parameter values inside 'expect' declaration are not allowed for methods actualized via fake override")
+        ExpectActualIncompatibility<Nothing>("default parameter values inside 'expect' declaration are not allowed for methods actualized via fake override")
 
     // Properties
-    object PropertyKind : Incompatible<Nothing>("the property kinds are different (val vs var)")
-    object PropertyLateinitModifier : Incompatible<Nothing>("the modifiers are different (lateinit)")
-    object PropertyConstModifier : Incompatible<Nothing>("the modifiers are different (const)")
-    object PropertySetterVisibility : Incompatible<Nothing>("the setter visibilities are different")
+    object PropertyKind : ExpectActualIncompatibility<Nothing>("the property kinds are different (val vs var)")
+    object PropertyLateinitModifier : ExpectActualIncompatibility<Nothing>("the modifiers are different (lateinit)")
+    object PropertyConstModifier : ExpectActualIncompatibility<Nothing>("the modifiers are different (const)")
+    object PropertySetterVisibility : ExpectActualIncompatibility<Nothing>("the setter visibilities are different")
 
     // Classifiers
-    object ClassKind : Incompatible<Nothing>("the class kinds are different (class, interface, object, enum, annotation)")
-    object ClassModifiers : Incompatible<Nothing>("the modifiers are different (companion, inner, inline, value)")
-    object FunInterfaceModifier : Incompatible<Nothing>("the 'actual' declaration for 'fun expect interface' is not a functional interface")
-    object Supertypes : Incompatible<Nothing>("some supertypes are missing in the 'actual' declaration")
-    object NestedTypeAlias : Incompatible<Nothing>("actualization by nested type alias is prohibited")
+    object ClassKind :
+        ExpectActualIncompatibility<Nothing>("the class kinds are different (class, interface, object, enum, annotation)")
+
+    object ClassModifiers : ExpectActualIncompatibility<Nothing>("the modifiers are different (companion, inner, inline, value)")
+    object FunInterfaceModifier :
+        ExpectActualIncompatibility<Nothing>("the 'actual' declaration for 'fun expect interface' is not a functional interface")
+
+    object Supertypes : ExpectActualIncompatibility<Nothing>("some supertypes are missing in the 'actual' declaration")
+    object NestedTypeAlias : ExpectActualIncompatibility<Nothing>("actualization by nested type alias is prohibited")
     class ClassScopes<D>(
         val mismatchedMembers: List<Pair</* expect */ D, Map<Mismatch, /* actuals */ Collection<D>>>>,
         val incompatibleMembers: List<MemberIncompatibility<D>>,
-    ) : Incompatible<D>("some 'expect' members have no 'actual' ones")
-    object EnumEntries : Incompatible<Nothing>("some entries from 'expect enum' are missing in the 'actual enum'")
-    object IllegalRequiresOpt : Incompatible<Nothing>("opt-in annotations are prohibited to be 'expect' or 'actual'. Instead, declare annotation once in common sources")
+    ) : ExpectActualIncompatibility<D>("some 'expect' members have no 'actual' ones")
+
+    object EnumEntries : ExpectActualIncompatibility<Nothing>("some entries from 'expect enum' are missing in the 'actual enum'")
+    object IllegalRequiresOpt :
+        ExpectActualIncompatibility<Nothing>("opt-in annotations are prohibited to be 'expect' or 'actual'. Instead, declare annotation once in common sources")
 
     // Common
     class Modality(
         expectModality: org.jetbrains.kotlin.descriptors.Modality?,
         actualModality: org.jetbrains.kotlin.descriptors.Modality?,
-    ) : Incompatible<Nothing>(
+    ) : ExpectActualIncompatibility<Nothing>(
         "the modalities are different ('${expectModality.toString().lowercase()}' vs '${actualModality.toString().lowercase()}')"
     )
 
-    object Visibility : Incompatible<Nothing>("the visibilities are different")
+    object Visibility : ExpectActualIncompatibility<Nothing>("the visibilities are different")
 
-    object ClassTypeParameterUpperBounds : Incompatible<Nothing>(TYPE_PARAMETER_UPPER_BOUNDS)
-    object TypeParameterVariance : Incompatible<Nothing>("declaration-site variances of type parameters are different")
-    object TypeParameterReified : Incompatible<Nothing>("some type parameter is reified in one declaration and non-reified in the other")
-    object Compatible : ExpectActualCheckingCompatibility<Nothing>()
+    object ClassTypeParameterUpperBounds : ExpectActualIncompatibility<Nothing>(TYPE_PARAMETER_UPPER_BOUNDS)
+    object TypeParameterVariance :
+        ExpectActualIncompatibility<Nothing>("declaration-site variances of type parameters are different")
+
+    object TypeParameterReified :
+        ExpectActualIncompatibility<Nothing>("some type parameter is reified in one declaration and non-reified in the other")
 }
 
 data class MemberIncompatibility<out D>(
     val expect: D,
     val actual: D,
-    val incompatibility: ExpectActualCheckingCompatibility.Incompatible<D>,
+    val incompatibility: ExpectActualIncompatibility<D>,
 )