diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/fir/FirDiagnosticsCompilerResultsReporter.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/fir/FirDiagnosticsCompilerResultsReporter.kt index 62fe8c3fadc..abcafcab8f1 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/fir/FirDiagnosticsCompilerResultsReporter.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/fir/FirDiagnosticsCompilerResultsReporter.kt @@ -29,8 +29,7 @@ object FirDiagnosticsCompilerResultsReporter { AnalyzerWithCompilerReport.reportSpecialErrors( diagnosticsCollector.diagnostics.any { it.factory == FirErrors.INCOMPATIBLE_CLASS }, diagnosticsCollector.diagnostics.any { it.factory == FirErrors.PRE_RELEASE_CLASS }, - hasUnstableClasses = false, // TODO (KT-61598): report FIR_COMPILED_CLASS and IR_WITH_UNSTABLE_ABI_COMPILED_CLASS - hasFirUnstableClasses = false, // TODO (KT-61598): report FIR_COMPILED_CLASS and IR_WITH_UNSTABLE_ABI_COMPILED_CLASS + hasUnstableClasses = false, // TODO (KT-61598): report IR_WITH_UNSTABLE_ABI_COMPILED_CLASS messageCollector, ) } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/AnalyzerWithCompilerReport.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/AnalyzerWithCompilerReport.kt index 725fee45912..e8e1795f215 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/AnalyzerWithCompilerReport.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/AnalyzerWithCompilerReport.kt @@ -185,7 +185,6 @@ class AnalyzerWithCompilerReport( diagnostics.any { it.factory == Errors.INCOMPATIBLE_CLASS }, diagnostics.any { it.factory == Errors.PRE_RELEASE_CLASS }, diagnostics.any { it.factory == Errors.IR_WITH_UNSTABLE_ABI_COMPILED_CLASS }, - diagnostics.any { it.factory == Errors.FIR_COMPILED_CLASS }, messageCollector, ) } @@ -195,7 +194,6 @@ class AnalyzerWithCompilerReport( hasIncompatibleClasses: Boolean, hasPrereleaseClasses: Boolean, hasUnstableClasses: Boolean, - hasFirUnstableClasses: Boolean, messageCollector: MessageCollector, ) { if (hasIncompatibleClasses) { @@ -222,14 +220,6 @@ class AnalyzerWithCompilerReport( "Remove them from the classpath or use '-Xallow-unstable-dependencies' to suppress errors" ) } - - if (hasFirUnstableClasses) { - messageCollector.report( - ERROR, - "Classes compiled by the new Kotlin compiler frontend were found in dependencies. " + - "Remove them from the classpath or use '-Xallow-unstable-dependencies' to suppress errors" - ) - } } fun reportSyntaxErrors(file: PsiElement, reporter: DiagnosticMessageReporter): SyntaxErrorReport { diff --git a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmBackendExtension.kt b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmBackendExtension.kt index 4ce6b8e670e..e9ae40f8e8c 100644 --- a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmBackendExtension.kt +++ b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmBackendExtension.kt @@ -44,7 +44,6 @@ class FirJvmBackendExtension( companion object { fun generateMetadataExtraFlags(abiStability: JvmAbiStability?): Int = JvmAnnotationNames.METADATA_JVM_IR_FLAG or - JvmAnnotationNames.METADATA_FIR_FLAG or - (if (abiStability == JvmAbiStability.STABLE) JvmAnnotationNames.METADATA_JVM_IR_STABLE_ABI_FLAG else 0) + (if (abiStability != JvmAbiStability.UNSTABLE) JvmAnnotationNames.METADATA_JVM_IR_STABLE_ABI_FLAG else 0) } } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/JvmClassFileBasedSymbolProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/JvmClassFileBasedSymbolProvider.kt index 712651feba2..434d63490b3 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/JvmClassFileBasedSymbolProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/JvmClassFileBasedSymbolProvider.kt @@ -136,7 +136,6 @@ class JvmClassFileBasedSymbolProvider( private val KotlinJvmBinaryClass.abiStability: DeserializedContainerAbiStability get() = when { session.languageVersionSettings.getFlag(AnalysisFlags.allowUnstableDependencies) -> DeserializedContainerAbiStability.STABLE - classHeader.isUnstableFirBinary -> DeserializedContainerAbiStability.FIR_UNSTABLE classHeader.isUnstableJvmIrBinary -> DeserializedContainerAbiStability.IR_UNSTABLE else -> DeserializedContainerAbiStability.STABLE } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/MissingDependencyClassChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/MissingDependencyClassChecker.kt index 2df4da03bc9..84f5ffe3820 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/MissingDependencyClassChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/MissingDependencyClassChecker.kt @@ -59,9 +59,6 @@ object MissingDependencyClassChecker : CallChecker { if (source.isPreReleaseInvisible) { return PRE_RELEASE_CLASS.on(reportOn, source.presentableString) } - if (source.abiStability == DeserializedContainerAbiStability.FIR_UNSTABLE) { - return FIR_COMPILED_CLASS.on(reportOn, source.presentableString) - } if (source.abiStability == DeserializedContainerAbiStability.IR_UNSTABLE) { return IR_WITH_UNSTABLE_ABI_COMPILED_CLASS.on(reportOn, source.presentableString) } diff --git a/compiler/testData/compileKotlinAgainstCustomBinaries/againstFir/output.fir.txt b/compiler/testData/compileKotlinAgainstCustomBinaries/againstFir/output.fir.txt deleted file mode 100644 index d86bac9de59..00000000000 --- a/compiler/testData/compileKotlinAgainstCustomBinaries/againstFir/output.fir.txt +++ /dev/null @@ -1 +0,0 @@ -OK diff --git a/compiler/testData/compileKotlinAgainstCustomBinaries/againstFir/output.txt b/compiler/testData/compileKotlinAgainstCustomBinaries/againstFir/output.txt index 0bb485238a7..d86bac9de59 100644 --- a/compiler/testData/compileKotlinAgainstCustomBinaries/againstFir/output.txt +++ b/compiler/testData/compileKotlinAgainstCustomBinaries/againstFir/output.txt @@ -1,8 +1 @@ -error: classes compiled by the new Kotlin compiler frontend were found in dependencies. Remove them from the classpath or use '-Xallow-unstable-dependencies' to suppress errors -compiler/testData/compileKotlinAgainstCustomBinaries/againstFir/source.kt:4:5: error: class 'lib.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler - get { Box("OK").value } - ^ -compiler/testData/compileKotlinAgainstCustomBinaries/againstFir/source.kt:4:11: error: class 'lib.Box' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler - get { Box("OK").value } - ^ -COMPILATION_ERROR +OK diff --git a/compiler/testData/compileKotlinAgainstCustomBinaries/againstFirWithUnstableAbi/output.txt b/compiler/testData/compileKotlinAgainstCustomBinaries/againstFirWithUnstableAbi/output.txt index 675e7533238..2f06bcf4fae 100644 --- a/compiler/testData/compileKotlinAgainstCustomBinaries/againstFirWithUnstableAbi/output.txt +++ b/compiler/testData/compileKotlinAgainstCustomBinaries/againstFirWithUnstableAbi/output.txt @@ -1,8 +1,8 @@ -error: classes compiled by the new Kotlin compiler frontend were found in dependencies. Remove them from the classpath or use '-Xallow-unstable-dependencies' to suppress errors -compiler/testData/compileKotlinAgainstCustomBinaries/againstFirWithUnstableAbi/source.kt:4:5: error: class 'lib.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler +error: classes compiled by an unstable version of the Kotlin compiler were found in dependencies. Remove them from the classpath or use '-Xallow-unstable-dependencies' to suppress errors +compiler/testData/compileKotlinAgainstCustomBinaries/againstFirWithUnstableAbi/source.kt:4:5: error: class 'lib.AKt' is compiled by an unstable version of the Kotlin compiler and cannot be loaded by this compiler get { Box("OK").value } ^ -compiler/testData/compileKotlinAgainstCustomBinaries/againstFirWithUnstableAbi/source.kt:4:11: error: class 'lib.Box' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler +compiler/testData/compileKotlinAgainstCustomBinaries/againstFirWithUnstableAbi/source.kt:4:11: error: class 'lib.Box' is compiled by an unstable version of the Kotlin compiler and cannot be loaded by this compiler get { Box("OK").value } ^ COMPILATION_ERROR diff --git a/compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/output.fir.txt b/compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/output.fir.txt deleted file mode 100644 index d86bac9de59..00000000000 --- a/compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/output.fir.txt +++ /dev/null @@ -1 +0,0 @@ -OK diff --git a/compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/output.txt b/compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/output.txt index f343913497a..d86bac9de59 100644 --- a/compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/output.txt +++ b/compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/output.txt @@ -1,26 +1 @@ -error: classes compiled by the new Kotlin compiler frontend were found in dependencies. Remove them from the classpath or use '-Xallow-unstable-dependencies' to suppress errors -compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/source.kt:6:16: error: class 'a.A' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler -fun baz(param: A) { - ^ -compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/source.kt:7:23: error: class 'a.A' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler - val constructor = A() - ^ -compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/source.kt:8:22: error: class 'a.A' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler - val methodCall = param.hashCode() - ^ -compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/source.kt:9:30: error: class 'a.A' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler - val supertype = object : A() {} - ^ -compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/source.kt:11:13: error: class 'a.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler - val x = foo() - ^ -compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/source.kt:12:13: error: class 'a.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler - val y = bar - ^ -compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/source.kt:13:5: error: class 'a.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler - bar = 239 - ^ -compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipMetadataVersionCheck/source.kt:14:12: error: class 'a.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler - val z: TA = "" - ^ -COMPILATION_ERROR +OK diff --git a/compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/output.fir.txt b/compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/output.fir.txt deleted file mode 100644 index d86bac9de59..00000000000 --- a/compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/output.fir.txt +++ /dev/null @@ -1 +0,0 @@ -OK diff --git a/compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/output.txt b/compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/output.txt index 83ff5c94886..d86bac9de59 100644 --- a/compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/output.txt +++ b/compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/output.txt @@ -1,26 +1 @@ -error: classes compiled by the new Kotlin compiler frontend were found in dependencies. Remove them from the classpath or use '-Xallow-unstable-dependencies' to suppress errors -compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/source.kt:6:16: error: class 'a.A' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler -fun baz(param: A) { - ^ -compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/source.kt:7:23: error: class 'a.A' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler - val constructor = A() - ^ -compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/source.kt:8:22: error: class 'a.A' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler - val methodCall = param.hashCode() - ^ -compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/source.kt:9:30: error: class 'a.A' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler - val supertype = object : A() {} - ^ -compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/source.kt:11:13: error: class 'a.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler - val x = foo() - ^ -compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/source.kt:12:13: error: class 'a.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler - val y = bar - ^ -compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/source.kt:13:5: error: class 'a.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler - bar = 239 - ^ -compiler/testData/compileKotlinAgainstCustomBinaries/releaseCompilerAgainstPreReleaseLibrarySkipPrereleaseCheck/source.kt:14:12: error: class 'a.AKt' is compiled by the new Kotlin compiler frontend and cannot be loaded by the old compiler - val z: TA = "" - ^ -COMPILATION_ERROR +OK diff --git a/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/JvmAnnotationNames.java b/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/JvmAnnotationNames.java index a068ad5d746..bd45c1f0bdf 100644 --- a/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/JvmAnnotationNames.java +++ b/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/JvmAnnotationNames.java @@ -31,6 +31,7 @@ public final class JvmAnnotationNames { public static final int METADATA_STRICT_VERSION_SEMANTICS_FLAG = 1 << 3; public static final int METADATA_JVM_IR_FLAG = 1 << 4; public static final int METADATA_JVM_IR_STABLE_ABI_FLAG = 1 << 5; + @SuppressWarnings("unused") public static final int METADATA_FIR_FLAG = 1 << 6; public static final int METADATA_PUBLIC_ABI_FLAG = 1 << 7; diff --git a/core/compiler.common/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedContainerSource.kt b/core/compiler.common/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedContainerSource.kt index e3ee7f218df..b529f5b04d9 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedContainerSource.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedContainerSource.kt @@ -27,12 +27,10 @@ enum class DeserializedContainerAbiStability { // Either the container is stable, or this compiler is configured to ignore ABI stability of dependencies. STABLE, - // The container is unstable because it is compiled with FIR, and this compiler is _not_ configured to ignore that. - FIR_UNSTABLE, - // The container is unstable because either: // 1) it is compiled with JVM IR prior to 1.4.30, or // 2) it is compiled with JVM IR >= 1.4.30 with the `-Xabi-stability=unstable` compiler option, + // 3) it is compiled with FIR prior to 2.0.0, // and this compiler is _not_ configured to ignore that. IR_UNSTABLE, } diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/DeserializedDescriptorResolver.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/DeserializedDescriptorResolver.kt index 223362ad86e..a16d755fb6a 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/DeserializedDescriptorResolver.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/DeserializedDescriptorResolver.kt @@ -112,7 +112,6 @@ class DeserializedDescriptorResolver { private val KotlinJvmBinaryClass.abiStability: DeserializedContainerAbiStability get() = when { components.configuration.allowUnstableDependencies -> DeserializedContainerAbiStability.STABLE - classHeader.isUnstableFirBinary -> DeserializedContainerAbiStability.FIR_UNSTABLE classHeader.isUnstableJvmIrBinary -> DeserializedContainerAbiStability.IR_UNSTABLE else -> DeserializedContainerAbiStability.STABLE } diff --git a/core/deserialization.common.jvm/src/org/jetbrains/kotlin/load/kotlin/header/KotlinClassHeader.kt b/core/deserialization.common.jvm/src/org/jetbrains/kotlin/load/kotlin/header/KotlinClassHeader.kt index f0cf70fe6c8..b3cb1be28a9 100644 --- a/core/deserialization.common.jvm/src/org/jetbrains/kotlin/load/kotlin/header/KotlinClassHeader.kt +++ b/core/deserialization.common.jvm/src/org/jetbrains/kotlin/load/kotlin/header/KotlinClassHeader.kt @@ -62,9 +62,6 @@ class KotlinClassHeader( val isUnstableJvmIrBinary: Boolean get() = extraInt.has(METADATA_JVM_IR_FLAG) && !extraInt.has(METADATA_JVM_IR_STABLE_ABI_FLAG) - val isUnstableFirBinary: Boolean - get() = extraInt.has(METADATA_FIR_FLAG) && !extraInt.has(METADATA_JVM_IR_STABLE_ABI_FLAG) - val isPreRelease: Boolean get() = extraInt.has(METADATA_PRE_RELEASE_FLAG) diff --git a/libraries/stdlib/jvm/runtime/kotlin/Metadata.kt b/libraries/stdlib/jvm/runtime/kotlin/Metadata.kt index dfe79ab9a1f..f09c6224829 100644 --- a/libraries/stdlib/jvm/runtime/kotlin/Metadata.kt +++ b/libraries/stdlib/jvm/runtime/kotlin/Metadata.kt @@ -75,7 +75,8 @@ public annotation class Metadata( * * 4 - this class file is compiled with the new Kotlin compiler backend (JVM IR) introduced in Kotlin 1.4. * * 5 - this class file has stable metadata and ABI. This is used only for class files compiled with JVM IR (see flag #4) or FIR (#6), * and prevents metadata incompatibility diagnostics from being reported where the class is used. - * * 6 - this class file is compiled with the new Kotlin compiler frontend (FIR). + * * 6 - this class file is compiled with the K2 compiler frontend (FIR). Only valid before metadata version 2.0.0. + * Starting from metadata version 2.0.0, this flag is not set anymore, even though FIR is always used. * * 7 - this class is used in the scope of an inline function and implicitly part of the public ABI. Only valid from * metadata version 1.6.0. */ diff --git a/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/Kapt4StubGenerator.kt b/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/Kapt4StubGenerator.kt index 65c5087a966..fd229510860 100644 --- a/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/Kapt4StubGenerator.kt +++ b/plugins/kapt4/src/org/jetbrains/kotlin/kapt4/Kapt4StubGenerator.kt @@ -965,7 +965,7 @@ internal class Kapt4StubGenerator { data1 = lightClass.files.map { JvmFileClassUtil.manglePartName(qualifiedName.replace('.', '/'), it.name) }.toTypedArray(), - extraInt = METADATA_JVM_IR_FLAG or METADATA_FIR_FLAG or METADATA_JVM_IR_STABLE_ABI_FLAG + extraInt = METADATA_JVM_IR_FLAG or METADATA_JVM_IR_STABLE_ABI_FLAG ) private fun elementMapping(lightClass: PsiClass): Multimap =