Merge branch 'master' into rr/zofia.wiora/KTL-3009-full-position-in-compiler-logger
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/psiUtils.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/psiUtils.kt
index 32b1776..5bac8da 100644
--- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/psiUtils.kt
+++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/psiUtils.kt
@@ -166,10 +166,17 @@
         else -> visibilityByModifiers
     }
 
-internal val KtClassOrObject.visibility: Visibility?
-    get() = when {
-        isLocal -> Visibilities.Local
-        else -> visibilityByModifiers
+/**
+ * The compiler forces the class-like declarations to have proper visibility right
+ * away during their constructions and forbids its changes later, so the visibility might be
+ * computed from the PSI directly
+ */
+internal val KtClassLikeDeclaration.visibility: Visibility
+    get() = when (this) {
+        // TODO: KT-80716 replaced with native isLocal check
+        is KtTypeAlias if getClassId() == null -> Visibilities.Local
+        is KtClassOrObject if isLocal -> Visibilities.Local
+        else -> visibilityByModifiers ?: Visibilities.Public
     }
 
 internal val KtProperty.visibility: Visibility?
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirNamedClassSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirNamedClassSymbol.kt
index bb57579..76420c3 100644
--- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirNamedClassSymbol.kt
+++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirNamedClassSymbol.kt
@@ -14,7 +14,6 @@
 import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
 import org.jetbrains.kotlin.analysis.api.symbols.*
 import org.jetbrains.kotlin.analysis.api.types.KaType
-import org.jetbrains.kotlin.descriptors.Visibilities
 import org.jetbrains.kotlin.descriptors.Visibility
 import org.jetbrains.kotlin.fir.declarations.utils.*
 import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
@@ -79,14 +78,6 @@
             backingPsi?.kaSymbolModality ?: firSymbol.modality.asKaSymbolModality
         }
 
-    override val visibility: KaSymbolVisibility
-        get() = withValidityAssertion {
-            backingPsi?.visibility?.asKaSymbolVisibility ?: when (val visibility = firSymbol.possiblyRawVisibility) {
-                Visibilities.Unknown -> if (firSymbol.fir.isLocal) KaSymbolVisibility.LOCAL else KaSymbolVisibility.PUBLIC
-                else -> visibility.asKaSymbolVisibility
-            }
-        }
-
     override val compilerVisibility: Visibility
         get() = withValidityAssertion { backingPsi?.visibility ?: firSymbol.visibility }
 
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirTypeAliasSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirTypeAliasSymbol.kt
index 05e079f..a15c7e6 100644
--- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirTypeAliasSymbol.kt
+++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirTypeAliasSymbol.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Copyright 2010-2025 JetBrains s.r.o. and Kotlin Programming Language contributors.
  * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
  */
 
@@ -11,14 +11,15 @@
 import org.jetbrains.kotlin.analysis.api.fir.findPsi
 import org.jetbrains.kotlin.analysis.api.fir.location
 import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KaFirClassLikeSymbolPointer
-import org.jetbrains.kotlin.analysis.api.fir.visibilityByModifiers
+import org.jetbrains.kotlin.analysis.api.fir.visibility
 import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaCannotCreateSymbolPointerForLocalLibraryDeclarationException
 import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaUnsupportedSymbolLocation
 import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
-import org.jetbrains.kotlin.analysis.api.symbols.*
+import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolLocation
+import org.jetbrains.kotlin.analysis.api.symbols.KaTypeAliasSymbol
+import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol
 import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer
 import org.jetbrains.kotlin.analysis.api.types.KaType
-import org.jetbrains.kotlin.descriptors.Visibilities
 import org.jetbrains.kotlin.descriptors.Visibility
 import org.jetbrains.kotlin.fir.declarations.utils.isActual
 import org.jetbrains.kotlin.fir.declarations.utils.isExpect
@@ -56,16 +57,8 @@
     override val classId: ClassId?
         get() = withValidityAssertion { backingPsi?.getClassId() ?: firSymbol.getClassId() }
 
-    override val visibility: KaSymbolVisibility
-        get() = withValidityAssertion {
-            backingPsi?.visibilityByModifiers?.asKaSymbolVisibility ?: when (val visibility = firSymbol.possiblyRawVisibility) {
-                Visibilities.Unknown -> KaSymbolVisibility.PUBLIC
-                else -> visibility.asKaSymbolVisibility
-            }
-        }
-
     override val compilerVisibility: Visibility
-        get() = withValidityAssertion { backingPsi?.visibilityByModifiers ?: firSymbol.visibility }
+        get() = withValidityAssertion { backingPsi?.visibility ?: firSymbol.visibility }
 
     override val typeParameters: List<KaTypeParameterSymbol>
         get() = withValidityAssertion {
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/firSymbolUtils.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/firSymbolUtils.kt
index 3af71dd..717f214 100644
--- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/firSymbolUtils.kt
+++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/firSymbolUtils.kt
@@ -11,7 +11,6 @@
 import org.jetbrains.kotlin.analysis.api.fir.utils.asKaInitializerValue
 import org.jetbrains.kotlin.analysis.api.impl.base.KaBaseContextReceiver
 import org.jetbrains.kotlin.analysis.api.impl.base.symbols.asKaSymbolModality
-import org.jetbrains.kotlin.analysis.api.platform.resolution.KaResolutionActivityTracker
 import org.jetbrains.kotlin.analysis.api.symbols.KaContextParameterSymbol
 import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolModality
 import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol
@@ -19,8 +18,10 @@
 import org.jetbrains.kotlin.analysis.api.types.KaType
 import org.jetbrains.kotlin.descriptors.ClassKind
 import org.jetbrains.kotlin.descriptors.Modality
-import org.jetbrains.kotlin.descriptors.Visibility
-import org.jetbrains.kotlin.fir.declarations.*
+import org.jetbrains.kotlin.fir.declarations.FirDeclaration
+import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
+import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
+import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
 import org.jetbrains.kotlin.fir.declarations.utils.modality
 import org.jetbrains.kotlin.fir.expressions.FirPropertyAccessExpression
 import org.jetbrains.kotlin.fir.references.impl.FirPropertyFromParameterResolvedNamedReference
@@ -135,21 +136,3 @@
         is FirClassLikeSymbol<*> -> modality
         else -> Modality.FINAL
     }.asKaSymbolModality
-
-/**
- * Issue: KT-58572
- *
- * Visibility computation can be requested from Java resolution via light classes,
- * so [resolvedStatus][FirClassLikeSymbol.resolvedStatus] can be called only if there is no pending resolution
- * on the stack.
- * Otherwise, only [rawStatus][FirClassLikeSymbol.rawStatus] can be requested in this case to avoid
- * potential contract violation.
- * However, the status still might be already resolved at this moment,
- * so the resolved status still might be returned in this case.
- */
-internal val FirClassLikeSymbol<*>.possiblyRawVisibility: Visibility
-    get() = if (KaResolutionActivityTracker.getInstance()?.isKotlinResolutionActive == true) {
-        rawStatus
-    } else {
-        resolvedStatus
-    }.visibility
diff --git a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.capturing.txt b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.capturing.txt
index 940f573..0599ff4 100644
--- a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.capturing.txt
+++ b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.capturing.txt
@@ -5,7 +5,14 @@
 Local[name: $context-Ctx1; isMutated: false; displayText: $context-Ctx1]
     <unused var>: R|Ctx1|
     R|Ctx1|
+Local[name: $context-Ctx3; isMutated: false; displayText: $context-Ctx3]
+    <unused var>: R|Ctx3|
+    R|Ctx3|
+Local[name: $context-_anonymous_; isMutated: false; displayText: $context-_anonymous_]
+    <unused var>: R|<anonymous>|
+    R|<anonymous>|
 Local[name: x; isMutated: false; displayText: x]
     x: R|kotlin/Int|
     R|kotlin/Int|
-No captured files
+Captured files:
+contextParameter.kt
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.ir.txt b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.ir.txt
index 47e0af5..237b365 100644
--- a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.ir.txt
+++ b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.ir.txt
@@ -8,10 +8,14 @@
       FUN name:run visibility:public modality:FINAL returnType:kotlin.Int
         VALUE_PARAMETER kind:Regular name:p0 index:0 type:<root>.Ctx2
         VALUE_PARAMETER kind:Regular name:p1 index:1 type:<root>.Ctx1
-        VALUE_PARAMETER kind:Regular name:p2 index:2 type:kotlin.Int
+        VALUE_PARAMETER kind:Regular name:p2 index:2 type:<root>.Ctx3
+        VALUE_PARAMETER kind:Regular name:p3 index:3 type:<root>.ContextParameterKt.check.<no name provided>
+        VALUE_PARAMETER kind:Regular name:p4 index:4 type:kotlin.Int
         EXPRESSION_BODY
           BLOCK type=kotlin.Int origin=null
-            CALL 'public final fun bar (ctx2: <root>.Ctx2, ctx1: <root>.Ctx1, x: kotlin.Int): kotlin.Int declared in <root>.ContextParameterKt' type=kotlin.Int origin=null
+            CALL 'public final fun bar (ctx2: <root>.Ctx2, ctx1: <root>.Ctx1, ctx3: <root>.Ctx3, ctx4: <root>.Ctx4, x: kotlin.Int): kotlin.Int declared in <root>.ContextParameterKt' type=kotlin.Int origin=null
               ARG ctx2: GET_VAR 'p0: <root>.Ctx2 declared in <root>.CodeFragment.run' type=<root>.Ctx2 origin=null
               ARG ctx1: GET_VAR 'p1: <root>.Ctx1 declared in <root>.CodeFragment.run' type=<root>.Ctx1 origin=null
-              ARG x: GET_VAR 'p2: kotlin.Int declared in <root>.CodeFragment.run' type=kotlin.Int origin=null
+              ARG ctx3: GET_VAR 'p2: <root>.Ctx3 declared in <root>.CodeFragment.run' type=<root>.Ctx3 origin=null
+              ARG ctx4: GET_VAR 'p3: <root>.ContextParameterKt.check.<no name provided> declared in <root>.CodeFragment.run' type=<root>.ContextParameterKt.check.<no name provided> origin=null
+              ARG x: GET_VAR 'p4: kotlin.Int declared in <root>.CodeFragment.run' type=kotlin.Int origin=null
diff --git a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.kt b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.kt
index add1b15..30af8ab 100644
--- a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.kt
+++ b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.kt
@@ -11,13 +11,20 @@
     fun boo(x: Int) = 10 + x
 }
 
+class Ctx3 {
+    fun coo() = 100
+}
 
-context(ctx2: Ctx2, ctx1: Ctx1)
-fun bar(x: Int) = ctx2.boo(x) + ctx1.foo()
+interface Ctx4
+
+context(ctx2: Ctx2, ctx1: Ctx1, ctx3: Ctx3, ctx4: Ctx4)
+fun bar(x: Int) = ctx2.boo(x) + ctx1.foo() + ctx3.coo()
 
 context(_: Ctx1, _: Ctx2)
 fun check(x: Int) {
-    <caret_context>bar(x)
+    context(Ctx3(), object: Ctx4 {}) {
+        <caret_context>bar(x)
+    }
 }
 
 fun main() {
diff --git a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.txt b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.txt
index 6744262..bb9de43 100644
--- a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.txt
+++ b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.txt
@@ -1,5 +1,6 @@
 public final class CodeFragment {
     // source: 'fragment.kt'
+    inner (anonymous) class ContextParameterKt$check$1
     public method <init>(): void
-    public final static method run(p0: Ctx2, p1: Ctx1, p2: int): int
-}
+    public final static method run(p0: Ctx2, p1: Ctx1, p2: Ctx3, p3: ContextParameterKt$check$1, p4: int): int
+}
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/contextualProperty.ir.txt b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/contextualProperty.ir.txt
index 7e20e6f..8359911 100644
--- a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/contextualProperty.ir.txt
+++ b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/contextualProperty.ir.txt
@@ -9,5 +9,5 @@
         VALUE_PARAMETER kind:Regular name:p0 index:0 type:kotlin.String
         EXPRESSION_BODY
           BLOCK type=kotlin.String origin=null
-            CALL 'public final fun <get-hello> (<unused var>: kotlin.String): kotlin.String declared in <root>.ContextKt' type=kotlin.String origin=GET_PROPERTY
-              ARG <unused var>: GET_VAR 'p0: kotlin.String declared in <root>.CodeFragment.run' type=kotlin.String origin=null
+            CALL 'public final fun <get-hello> ($context-String: kotlin.String): kotlin.String declared in <root>.ContextKt' type=kotlin.String origin=GET_PROPERTY
+              ARG $context-String: GET_VAR 'p0: kotlin.String declared in <root>.CodeFragment.run' type=kotlin.String origin=null
diff --git a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightClassForDecompiledDeclaration.kt b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightClassForDecompiledDeclaration.kt
index 4c9635d..7fed5a2 100644
--- a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightClassForDecompiledDeclaration.kt
+++ b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightClassForDecompiledDeclaration.kt
@@ -222,7 +222,6 @@
     override fun hashCode(): Int = qualifiedName?.hashCode() ?: kotlinOrigin?.fqName?.hashCode() ?: 0
     override fun copy(): PsiElement = this
     override fun clone(): Any = this
-    override fun toString(): String = "${this.javaClass.simpleName} of $parent"
     override fun getName(): String? = clsDelegate.name
     override fun isValid(): Boolean = file.isValid && clsDelegate.isValid && (kotlinOrigin?.isValid != false)
 }
\ No newline at end of file
diff --git a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightFieldForDecompiledDeclaration.kt b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightFieldForDecompiledDeclaration.kt
index 806e6dd..1dfbf1b 100644
--- a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightFieldForDecompiledDeclaration.kt
+++ b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightFieldForDecompiledDeclaration.kt
@@ -70,8 +70,6 @@
 
     override fun clone(): Any = this
 
-    override fun toString(): String = "${this.javaClass.simpleName} of $fldParent"
-
     override fun isValid(): Boolean = parent.isValid
 
     override fun isEquivalentTo(another: PsiElement?): Boolean {
diff --git a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightMethodForDecompiledDeclaration.kt b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightMethodForDecompiledDeclaration.kt
index 03ec569..14da983 100644
--- a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightMethodForDecompiledDeclaration.kt
+++ b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightMethodForDecompiledDeclaration.kt
@@ -99,8 +99,6 @@
 
     override fun clone(): Any = this
 
-    override fun toString(): String = "${this.javaClass.simpleName} of $funParent"
-
     override fun isValid(): Boolean = parent.isValid
 
     override fun getOriginalElement() = funDelegate
diff --git a/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/KtLightElementBase.kt b/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/KtLightElementBase.kt
index 8f96993..6d52131 100644
--- a/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/KtLightElementBase.kt
+++ b/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/KtLightElementBase.kt
@@ -13,7 +13,7 @@
 import org.jetbrains.kotlin.psi.KtElement
 
 abstract class KtLightElementBase(private var parent: PsiElement) : LightElement(parent.manager, KotlinLanguage.INSTANCE) {
-    override fun toString() = "${this.javaClass.simpleName} of $parent"
+    override fun toString() = "${this::class.simpleName.orEmpty()} of $parent"
     override fun getParent(): PsiElement = parent
 
     abstract val kotlinOrigin: KtElement?
diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compile/CodeFragmentCapturedValueAnalyzer.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compile/CodeFragmentCapturedValueAnalyzer.kt
index 2733db8..56b3d2c 100644
--- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compile/CodeFragmentCapturedValueAnalyzer.kt
+++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compile/CodeFragmentCapturedValueAnalyzer.kt
@@ -18,12 +18,12 @@
 import org.jetbrains.kotlin.descriptors.ClassKind
 import org.jetbrains.kotlin.fir.FirElement
 import org.jetbrains.kotlin.fir.FirSession
-import org.jetbrains.kotlin.fir.anonymousContextParameterName
 import org.jetbrains.kotlin.fir.declarations.*
 import org.jetbrains.kotlin.fir.declarations.utils.isInline
 import org.jetbrains.kotlin.fir.declarations.utils.isLocal
 import org.jetbrains.kotlin.fir.expressions.*
 import org.jetbrains.kotlin.fir.extensions.captureValueInAnalyze
+import org.jetbrains.kotlin.fir.generatedContextParameterName
 import org.jetbrains.kotlin.fir.references.FirSuperReference
 import org.jetbrains.kotlin.fir.references.FirThisReference
 import org.jetbrains.kotlin.fir.references.toResolvedCallableSymbol
@@ -46,7 +46,6 @@
 import org.jetbrains.kotlin.psi.KtCodeFragment
 import org.jetbrains.kotlin.psi.KtFile
 import org.jetbrains.kotlin.psi.KtFunction
-import org.jetbrains.kotlin.resolve.jvm.JvmConstants
 import java.util.*
 
 @KaImplementationDetail
@@ -256,9 +255,7 @@
         when (symbol) {
             is FirValueParameterSymbol -> {
                 val isCrossingInlineBounds = isCrossingInlineBounds(element, symbol)
-                val name = symbol.anonymousContextParameterName(session, JvmConstants.INVALID_CHARS)
-                    ?.let { Name.identifier(it) }
-                    ?: symbol.name
+                val name = symbol.generatedContextParameterName ?: symbol.name
                 val capturedValue = CodeFragmentCapturedValue.Local(name, isMutated, isCrossingInlineBounds, depth)
                 register(CodeFragmentCapturedSymbol(capturedValue, symbol, symbol.resolvedReturnTypeRef))
             }
diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterSubstitutionFunction.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterSubstitutionFunction.txt
index 10d49ae..e1a2886 100644
--- a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterSubstitutionFunction.txt
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterSubstitutionFunction.txt
@@ -15,7 +15,7 @@
         }
 
     }
-    public final [ResolvedTo(BODY_RESOLVE)] val withContextProp: R|@ContextFunctionTypeParams(1) context(MyClass) () -> kotlin/Unit| = context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|MyClass|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<MyClass, kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=NoInline>  {
+    public final [ResolvedTo(BODY_RESOLVE)] val withContextProp: R|@ContextFunctionTypeParams(1) context(MyClass) () -> kotlin/Unit| = context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-MyClass] <unused var>: R|MyClass|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<MyClass, kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=NoInline>  {
         ==(context(R|<local>/<unused var>|) R|/myContextOf|<R|MyClass|>(), R|/MyClass.MyClass|())
     }
 
diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterSubstitutionProperty.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterSubstitutionProperty.txt
index 5135d67..eb53cbd 100644
--- a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterSubstitutionProperty.txt
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterSubstitutionProperty.txt
@@ -15,7 +15,7 @@
         }
 
     }
-    public final [ResolvedTo(BODY_RESOLVE)] val withContextProp: R|@ContextFunctionTypeParams(1) context(MyClass) () -> kotlin/Unit| = context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|MyClass|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<MyClass, kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=NoInline>  {
+    public final [ResolvedTo(BODY_RESOLVE)] val withContextProp: R|@ContextFunctionTypeParams(1) context(MyClass) () -> kotlin/Unit| = context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-MyClass] <unused var>: R|MyClass|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<MyClass, kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=NoInline>  {
         ==(context(R|<local>/<unused var>|) R|/myContextOf|<R|MyClass|>, R|/MyClass.MyClass|())
     }
 
diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterTypeSubstitutionFunction.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterTypeSubstitutionFunction.txt
index 8b1addf..6c832e5 100644
--- a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterTypeSubstitutionFunction.txt
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterTypeSubstitutionFunction.txt
@@ -24,7 +24,7 @@
     context([ResolvedTo(CONTRACTS)] a: R|A|)
     public final [ResolvedTo(CONTRACTS)] fun usage1(): R|A| { LAZY_BLOCK }
     public final [ResolvedTo(BODY_RESOLVE)] fun context1(): R|A| {
-        ^context1 R|/myContext|<R|B|, R|A|>(R|/B.B|(), <L> = context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|B|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<TypeVariable(T), TypeVariable(R)>] myContext@fun <anonymous>(): R|A| <inline=Inline, kind=UNKNOWN>  {
+        ^context1 R|/myContext|<R|B|, R|A|>(R|/B.B|(), <L> = context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-B] <unused var>: R|B|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<TypeVariable(T), TypeVariable(R)>] myContext@fun <anonymous>(): R|A| <inline=Inline, kind=UNKNOWN>  {
             ^ context(R|<local>/<unused var>|) R|/usage1|()
         }
         )
diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextReceiverSubstitutionFunction.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextReceiverSubstitutionFunction.txt
index 154bde5..5615196 100644
--- a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextReceiverSubstitutionFunction.txt
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextReceiverSubstitutionFunction.txt
@@ -15,7 +15,7 @@
         }
 
     }
-    public final [ResolvedTo(BODY_RESOLVE)] val withContextProp: R|@ContextFunctionTypeParams(1) context(MyClass) () -> kotlin/Unit| = context([ResolvedTo(BODY_RESOLVE)] <unused var>@R|MyClass|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<MyClass, kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=NoInline>  {
+    public final [ResolvedTo(BODY_RESOLVE)] val withContextProp: R|@ContextFunctionTypeParams(1) context(MyClass) () -> kotlin/Unit| = context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-MyClass] <unused var>@R|MyClass|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<MyClass, kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=NoInline>  {
         ==(context(this@R|context of special/anonymous|) R|/myContextOf|<R|MyClass|>(), R|/MyClass.MyClass|())
     }
 
diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextReceiverSubstitutionProperty.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextReceiverSubstitutionProperty.txt
index 31d1e5f..d588673 100644
--- a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextReceiverSubstitutionProperty.txt
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextReceiverSubstitutionProperty.txt
@@ -15,7 +15,7 @@
         }
 
     }
-    public final [ResolvedTo(BODY_RESOLVE)] val withContextProp: R|@ContextFunctionTypeParams(1) context(MyClass) () -> kotlin/Unit| = context([ResolvedTo(BODY_RESOLVE)] <unused var>@R|MyClass|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<MyClass, kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=NoInline>  {
+    public final [ResolvedTo(BODY_RESOLVE)] val withContextProp: R|@ContextFunctionTypeParams(1) context(MyClass) () -> kotlin/Unit| = context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-MyClass] <unused var>@R|MyClass|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<MyClass, kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=NoInline>  {
         ==(context(this@R|context of special/anonymous|) R|/myContextOf|<R|MyClass|>, R|/MyClass.MyClass|())
     }
 
diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/declarations/contextParametersInTypes.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/declarations/contextParametersInTypes.txt
index c9f6390..e2cbfb3 100644
--- a/analysis/low-level-api-fir/testData/getOrBuildFir/declarations/contextParametersInTypes.txt
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/declarations/contextParametersInTypes.txt
@@ -3,7 +3,7 @@
 FIR source kind: KtRealSourceElementKind
 
 FIR element rendered:
-context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|T1|)
+context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-Any] <unused var>: R|T1|)
 public final suspend [ResolvedTo(BODY_RESOLVE)] fun <[ResolvedTo(BODY_RESOLVE)] T1, [ResolvedTo(BODY_RESOLVE)] T2, [ResolvedTo(BODY_RESOLVE)] R> myContext([ResolvedTo(BODY_RESOLVE)] p1: R|@ContextFunctionTypeParams(2) context(lib/A, lib/B) kotlin/Int.(kotlin/Int) -> kotlin/Int|, [ResolvedTo(BODY_RESOLVE)] p2: R|@ContextFunctionTypeParams(2) @R|lib/MyAnnotation|()  context(lib/A, lib/B) kotlin/Int.(kotlin/Int) -> kotlin/Int|, [ResolvedTo(BODY_RESOLVE)] p3: R|@ContextFunctionTypeParams(2) (context(lib/A, lib/B) kotlin/Int.(kotlin/Int) -> kotlin/Int)?|, [ResolvedTo(BODY_RESOLVE)] p4: R|@ContextFunctionTypeParams(2) suspend context(lib/A, lib/B) kotlin/Int.(kotlin/Int) -> kotlin/Int|, [ResolvedTo(BODY_RESOLVE)] block: R|@ContextFunctionTypeParams(1) context(T2) () -> R|): R|R| {
     ^myContext Null(null)!!
 }
@@ -12,7 +12,7 @@
 FILE: [ResolvedTo(IMPORTS)] contextParametersInTypes.kt
     package lib
 
-    context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|T1|)
+    context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-Any] <unused var>: R|T1|)
     public final suspend [ResolvedTo(BODY_RESOLVE)] fun <[ResolvedTo(BODY_RESOLVE)] T1, [ResolvedTo(BODY_RESOLVE)] T2, [ResolvedTo(BODY_RESOLVE)] R> myContext([ResolvedTo(BODY_RESOLVE)] p1: R|@ContextFunctionTypeParams(2) context(lib/A, lib/B) kotlin/Int.(kotlin/Int) -> kotlin/Int|, [ResolvedTo(BODY_RESOLVE)] p2: R|@ContextFunctionTypeParams(2) @R|lib/MyAnnotation|()  context(lib/A, lib/B) kotlin/Int.(kotlin/Int) -> kotlin/Int|, [ResolvedTo(BODY_RESOLVE)] p3: R|@ContextFunctionTypeParams(2) (context(lib/A, lib/B) kotlin/Int.(kotlin/Int) -> kotlin/Int)?|, [ResolvedTo(BODY_RESOLVE)] p4: R|@ContextFunctionTypeParams(2) suspend context(lib/A, lib/B) kotlin/Int.(kotlin/Int) -> kotlin/Int|, [ResolvedTo(BODY_RESOLVE)] block: R|@ContextFunctionTypeParams(1) context(T2) () -> R|): R|R| {
         ^myContext Null(null)!!
     }
diff --git a/analysis/low-level-api-fir/testData/lazyResolve/contextParameters.txt b/analysis/low-level-api-fir/testData/lazyResolve/contextParameters.txt
index cc44d7b..0ac3228 100644
--- a/analysis/low-level-api-fir/testData/lazyResolve/contextParameters.txt
+++ b/analysis/low-level-api-fir/testData/lazyResolve/contextParameters.txt
@@ -60,12 +60,12 @@
 
 BODY_RESOLVE:
 FILE: [ResolvedTo(IMPORTS)] contextParameters.kt
-    context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|kotlin/String|)
+    context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-String] <unused var>: R|kotlin/String|)
     public final [ResolvedTo(BODY_RESOLVE)] fun foo(): R|kotlin/Unit| {
     }
 
 FILE RAW TO BODY:
 FILE: [ResolvedTo(BODY_RESOLVE)] contextParameters.kt
-    context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|kotlin/String|)
+    context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-String] <unused var>: R|kotlin/String|)
     public final [ResolvedTo(BODY_RESOLVE)] fun foo(): R|kotlin/Unit| {
     }
diff --git a/analysis/low-level-api-fir/testData/lazyResolve/contextParametersProperty.txt b/analysis/low-level-api-fir/testData/lazyResolve/contextParametersProperty.txt
index 881001d..2353fad 100644
--- a/analysis/low-level-api-fir/testData/lazyResolve/contextParametersProperty.txt
+++ b/analysis/low-level-api-fir/testData/lazyResolve/contextParametersProperty.txt
@@ -72,7 +72,7 @@
 
 BODY_RESOLVE:
 FILE: [ResolvedTo(IMPORTS)] contextParametersProperty.kt
-    context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|kotlin/String|)
+    context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-String] <unused var>: R|kotlin/String|)
     public final [ResolvedTo(BODY_RESOLVE)] val bar: R|kotlin/String|
         public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/String| {
             ^ String()
@@ -80,7 +80,7 @@
 
 FILE RAW TO BODY:
 FILE: [ResolvedTo(BODY_RESOLVE)] contextParametersProperty.kt
-    context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|kotlin/String|)
+    context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-String] <unused var>: R|kotlin/String|)
     public final [ResolvedTo(BODY_RESOLVE)] val bar: R|kotlin/String|
         public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/String| {
             ^ String()
diff --git a/analysis/low-level-api-fir/testData/lazyResolve/functions/javaFunctionWithImplicitTypeAndAnnotationsAndSubstitutedType.txt b/analysis/low-level-api-fir/testData/lazyResolve/functions/javaFunctionWithImplicitTypeAndAnnotationsAndSubstitutedType.txt
index 547b469..9c6fd61 100644
--- a/analysis/low-level-api-fir/testData/lazyResolve/functions/javaFunctionWithImplicitTypeAndAnnotationsAndSubstitutedType.txt
+++ b/analysis/low-level-api-fir/testData/lazyResolve/functions/javaFunctionWithImplicitTypeAndAnnotationsAndSubstitutedType.txt
@@ -2,7 +2,7 @@
 TARGET: @R|java/lang/Override|() public open [ResolvedTo(CONTRACTS)] [DeferredCallableCopyReturnTypeKey=DelegatingDeferredReturnTypeWithSubstitution(deferredCalc=Deferred for Enhancement (Overriddens with Implicit Types), substitutor={T -> T})] fun <[ResolvedTo(BODY_RESOLVE)] T : R|ft<kotlin/collections/MutableList<@R|Anno|(value = Int(3))  kotlin/String!>, kotlin/collections/List<@R|Anno|(value = Int(3))  kotlin/String!>?>|> defaultMethod([ResolvedTo(BODY_RESOLVE)] p: R|@EnhancedNullability kotlin/collections/List<@EnhancedNullability @R|Anno|(value = Int(3))  kotlin/String>|): <implicit>
 
 FILE: [ResolvedTo(IMPORTS)] main.kt
-    @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
+    @Target[Unresolved](LAZY_EXPRESSION) public final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
         public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.value] value: Int): R|Anno| {
             LAZY_super<R|kotlin/Any|>
         }
@@ -30,7 +30,7 @@
 TARGET: @R|java/lang/Override|() public open [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun <[ResolvedTo(BODY_RESOLVE)] T : R|ft<kotlin/collections/MutableList<@R|Anno|(value = Int(3))  kotlin/String!>, kotlin/collections/List<@R|Anno|(value = Int(3))  kotlin/String!>?>|> defaultMethod([ResolvedTo(BODY_RESOLVE)] p: R|@EnhancedNullability kotlin/collections/List<@EnhancedNullability @R|Anno|(value = Int(3))  kotlin/String>|): R|@EnhancedNullability kotlin/collections/List<@R|Anno|(value = Int(3))  kotlin/String!>|
 
 FILE: [ResolvedTo(IMPORTS)] main.kt
-    @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
+    @Target[Unresolved](LAZY_EXPRESSION) public final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
         public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.value] value: Int): R|Anno| {
             LAZY_super<R|kotlin/Any|>
         }
@@ -60,7 +60,7 @@
 TARGET: @R|java/lang/Override|() public open [ResolvedTo(CONSTANT_EVALUATION)] fun <[ResolvedTo(BODY_RESOLVE)] T : R|ft<kotlin/collections/MutableList<@R|Anno|(value = Int(3))  kotlin/String!>, kotlin/collections/List<@R|Anno|(value = Int(3))  kotlin/String!>?>|> defaultMethod([ResolvedTo(BODY_RESOLVE)] p: R|@EnhancedNullability kotlin/collections/List<@EnhancedNullability @R|Anno|(value = Int(3))  kotlin/String>|): R|@EnhancedNullability kotlin/collections/List<@R|Anno|(value = Int(3))  kotlin/String!>|
 
 FILE: [ResolvedTo(IMPORTS)] main.kt
-    @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
+    @Target[Unresolved](LAZY_EXPRESSION) public final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
         public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.value] value: Int): R|Anno| {
             LAZY_super<R|kotlin/Any|>
         }
@@ -90,7 +90,7 @@
 TARGET: @R|java/lang/Override|() public open [ResolvedTo(ANNOTATION_ARGUMENTS)] fun <[ResolvedTo(BODY_RESOLVE)] T : R|ft<kotlin/collections/MutableList<@R|Anno|(value = Int(3))  kotlin/String!>, kotlin/collections/List<@R|Anno|(value = Int(3))  kotlin/String!>?>|> defaultMethod([ResolvedTo(BODY_RESOLVE)] p: R|@EnhancedNullability kotlin/collections/List<@EnhancedNullability @R|Anno|(value = Int(3))  kotlin/String>|): R|@EnhancedNullability kotlin/collections/List<@R|Anno|(value = Int(3))  kotlin/String!>|
 
 FILE: [ResolvedTo(IMPORTS)] main.kt
-    @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
+    @Target[Unresolved](LAZY_EXPRESSION) public final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
         public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.value] value: Int): R|Anno| {
             LAZY_super<R|kotlin/Any|>
         }
@@ -120,7 +120,7 @@
 TARGET: @R|java/lang/Override|() public open [ResolvedTo(BODY_RESOLVE)] fun <[ResolvedTo(BODY_RESOLVE)] T : R|ft<kotlin/collections/MutableList<@R|Anno|(value = Int(3))  kotlin/String!>, kotlin/collections/List<@R|Anno|(value = Int(3))  kotlin/String!>?>|> defaultMethod([ResolvedTo(BODY_RESOLVE)] p: R|@EnhancedNullability kotlin/collections/List<@EnhancedNullability @R|Anno|(value = Int(3))  kotlin/String>|): R|@EnhancedNullability kotlin/collections/List<@R|Anno|(value = Int(3))  kotlin/String!>|
 
 FILE: [ResolvedTo(IMPORTS)] main.kt
-    @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
+    @Target[Unresolved](LAZY_EXPRESSION) public final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
         public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.value] value: Int): R|Anno| {
             LAZY_super<R|kotlin/Any|>
         }
diff --git a/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLBlackBoxTestGenerated.java b/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLBlackBoxTestGenerated.java
index 26b74a5..82349d5 100644
--- a/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLBlackBoxTestGenerated.java
+++ b/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLBlackBoxTestGenerated.java
@@ -545,6 +545,18 @@
       }
 
       @Test
+      @TestMetadata("annotationAnnotationParam.kt")
+      public void testAnnotationAnnotationParam() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+      }
+
+      @Test
+      @TestMetadata("annotationAnyDispatch.kt")
+      public void testAnnotationAnyDispatch() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+      }
+
+      @Test
       @TestMetadata("annotationEnclosingName.kt")
       public void testAnnotationEnclosingName() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -563,6 +575,12 @@
       }
 
       @Test
+      @TestMetadata("annotationInlineMultiModule.kt")
+      public void testAnnotationInlineMultiModule() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+      }
+
+      @Test
       @TestMetadata("annotationInstances.kt")
       public void testAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -599,6 +617,12 @@
       }
 
       @Test
+      @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+      public void testAnnotationToStringDefaultsAndEmptyArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+      }
+
+      @Test
       @TestMetadata("annotationType.kt")
       public void testAnnotationType() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -623,6 +647,42 @@
       }
 
       @Test
+      @TestMetadata("arrayContentEqAny.kt")
+      public void testArrayContentEqAny() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+      }
+
+      @Test
+      @TestMetadata("arraysAndKClass.kt")
+      public void testArraysAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("differentAnnotationTypes.kt")
+      public void testDifferentAnnotationTypes() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+      }
+
+      @Test
+      @TestMetadata("differentOrder.kt")
+      public void testDifferentOrder() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+      }
+
+      @Test
+      @TestMetadata("enumAndKClass.kt")
+      public void testEnumAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("enumArray.kt")
+      public void testEnumArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+      }
+
+      @Test
       @TestMetadata("inInlineFunction.kt")
       public void testInInlineFunction() {
         runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -635,6 +695,12 @@
       }
 
       @Test
+      @TestMetadata("instanceEquality.kt")
+      public void testInstanceEquality() {
+        runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+      }
+
+      @Test
       @TestMetadata("javaAnnotation.kt")
       public void testJavaAnnotation() {
         runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -659,6 +725,12 @@
       }
 
       @Test
+      @TestMetadata("mixedArray.kt")
+      public void testMixedArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+      }
+
+      @Test
       @TestMetadata("multifileEqHc.kt")
       public void testMultifileEqHc() {
         runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -689,22 +761,64 @@
       }
 
       @Test
+      @TestMetadata("naNAndZero.kt")
+      public void testNaNAndZero() {
+        runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+      }
+
+      @Test
+      @TestMetadata("nested.kt")
+      public void testNested() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+      }
+
+      @Test
       @TestMetadata("nestedAnnotationInstances.kt")
       public void testNestedAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
       }
 
       @Test
+      @TestMetadata("nestedDefaults.kt")
+      public void testNestedDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+      }
+
+      @Test
       @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
       public void testRearrangedArgumentsInAnnotationCall() {
         runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
       }
 
       @Test
+      @TestMetadata("repeatableInstantiation.kt")
+      public void testRepeatableInstantiation() {
+        runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+      }
+
+      @Test
+      @TestMetadata("typeAliasesAndGenericsInterop.kt")
+      public void testTypeAliasesAndGenericsInterop() {
+        runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+      }
+
+      @Test
+      @TestMetadata("unsignedAndBooleanArrays.kt")
+      public void testUnsignedAndBooleanArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+      }
+
+      @Test
       @TestMetadata("varargInAnnotationParameterInstantiation.kt")
       public void testVarargInAnnotationParameterInstantiation() {
         runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
       }
+
+      @Test
+      @TestMetadata("withDefaults.kt")
+      public void testWithDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+      }
     }
 
     @Nested
diff --git a/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLReversedBlackBoxTestGenerated.java b/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLReversedBlackBoxTestGenerated.java
index c5eb94f..5692a06 100644
--- a/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLReversedBlackBoxTestGenerated.java
+++ b/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLReversedBlackBoxTestGenerated.java
@@ -545,6 +545,18 @@
       }
 
       @Test
+      @TestMetadata("annotationAnnotationParam.kt")
+      public void testAnnotationAnnotationParam() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+      }
+
+      @Test
+      @TestMetadata("annotationAnyDispatch.kt")
+      public void testAnnotationAnyDispatch() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+      }
+
+      @Test
       @TestMetadata("annotationEnclosingName.kt")
       public void testAnnotationEnclosingName() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -563,6 +575,12 @@
       }
 
       @Test
+      @TestMetadata("annotationInlineMultiModule.kt")
+      public void testAnnotationInlineMultiModule() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+      }
+
+      @Test
       @TestMetadata("annotationInstances.kt")
       public void testAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -599,6 +617,12 @@
       }
 
       @Test
+      @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+      public void testAnnotationToStringDefaultsAndEmptyArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+      }
+
+      @Test
       @TestMetadata("annotationType.kt")
       public void testAnnotationType() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -623,6 +647,42 @@
       }
 
       @Test
+      @TestMetadata("arrayContentEqAny.kt")
+      public void testArrayContentEqAny() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+      }
+
+      @Test
+      @TestMetadata("arraysAndKClass.kt")
+      public void testArraysAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("differentAnnotationTypes.kt")
+      public void testDifferentAnnotationTypes() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+      }
+
+      @Test
+      @TestMetadata("differentOrder.kt")
+      public void testDifferentOrder() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+      }
+
+      @Test
+      @TestMetadata("enumAndKClass.kt")
+      public void testEnumAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("enumArray.kt")
+      public void testEnumArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+      }
+
+      @Test
       @TestMetadata("inInlineFunction.kt")
       public void testInInlineFunction() {
         runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -635,6 +695,12 @@
       }
 
       @Test
+      @TestMetadata("instanceEquality.kt")
+      public void testInstanceEquality() {
+        runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+      }
+
+      @Test
       @TestMetadata("javaAnnotation.kt")
       public void testJavaAnnotation() {
         runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -659,6 +725,12 @@
       }
 
       @Test
+      @TestMetadata("mixedArray.kt")
+      public void testMixedArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+      }
+
+      @Test
       @TestMetadata("multifileEqHc.kt")
       public void testMultifileEqHc() {
         runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -689,22 +761,64 @@
       }
 
       @Test
+      @TestMetadata("naNAndZero.kt")
+      public void testNaNAndZero() {
+        runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+      }
+
+      @Test
+      @TestMetadata("nested.kt")
+      public void testNested() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+      }
+
+      @Test
       @TestMetadata("nestedAnnotationInstances.kt")
       public void testNestedAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
       }
 
       @Test
+      @TestMetadata("nestedDefaults.kt")
+      public void testNestedDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+      }
+
+      @Test
       @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
       public void testRearrangedArgumentsInAnnotationCall() {
         runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
       }
 
       @Test
+      @TestMetadata("repeatableInstantiation.kt")
+      public void testRepeatableInstantiation() {
+        runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+      }
+
+      @Test
+      @TestMetadata("typeAliasesAndGenericsInterop.kt")
+      public void testTypeAliasesAndGenericsInterop() {
+        runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+      }
+
+      @Test
+      @TestMetadata("unsignedAndBooleanArrays.kt")
+      public void testUnsignedAndBooleanArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+      }
+
+      @Test
       @TestMetadata("varargInAnnotationParameterInstantiation.kt")
       public void testVarargInAnnotationParameterInstantiation() {
         runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
       }
+
+      @Test
+      @TestMetadata("withDefaults.kt")
+      public void testWithDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+      }
     }
 
     @Nested
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/SymbolLightMemberBase.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/SymbolLightMemberBase.kt
index 97882c6..77b2e73 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/SymbolLightMemberBase.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/SymbolLightMemberBase.kt
@@ -25,8 +25,6 @@
 
     override fun hasModifierProperty(name: String): Boolean = modifierList?.hasModifierProperty(name) ?: false
 
-    override fun toString(): String = "${this::class.java.simpleName}:$name"
-
     override fun getContainingClass(): SymbolLightClassBase = containingClass
 
     abstract override fun getNameIdentifier(): PsiIdentifier?
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt
index 533e245..3e16759 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt
@@ -144,6 +144,8 @@
 
     abstract override fun hashCode(): Int
 
+    override fun toString(): String = this::class.simpleName.orEmpty()
+
     override fun getContext(): PsiElement? = parent
 
     override fun isEquivalentTo(another: PsiElement?): Boolean = PsiClassImplUtil.isClassEquivalentTo(this, another)
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt
index 614a972..92484dd 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt
@@ -27,7 +27,6 @@
 import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
 import org.jetbrains.kotlin.psi.KtClassOrObject
 import org.jetbrains.kotlin.psi.KtScript
-import org.jetbrains.kotlin.psi.debugText.getDebugText
 import org.jetbrains.kotlin.psi.stubs.KotlinClassOrObjectStub
 import org.jetbrains.kotlin.utils.addToStdlib.ifTrue
 
@@ -38,6 +37,7 @@
     manager: PsiManager,
 ) : SymbolLightClassBase(ktModule, manager),
     StubBasedPsiElement<KotlinClassOrObjectStub<out KtClassOrObject>> {
+    @Suppress("RemoveRedundantQualifierName") // KTIJ-33595
     constructor(
         ktModule: KaModule,
         classSymbol: SType,
@@ -62,7 +62,7 @@
         classSymbolPointer.withSymbol(ktModule, action)
 
     /**
-     * Psi-based [org.jetbrains.kotlin.psi.KtClassOrObject.isTopLevel] is needed to properly handle classes inside scripts
+     * Psi-based [KtClassOrObject.isTopLevel] is needed to properly handle classes inside scripts
      * as they are treated as nested.
      */
     override val isTopLevel: Boolean
@@ -153,8 +153,6 @@
 
     override fun isValid(): Boolean = classOrObjectDeclaration?.isValid ?: classSymbolPointer.isValid(ktModule)
 
-    override fun toString() = "${this::class.java.simpleName}:${classOrObjectDeclaration?.getDebugText()}"
-
     override fun getUseScope(): SearchScope = classOrObjectDeclaration?.useScope ?: GlobalSearchScope.projectScope(project)
     override fun getElementType(): IStubElementType<out StubElement<*>, *>? = classOrObjectDeclaration?.elementType
     override fun getStub(): KotlinClassOrObjectStub<out KtClassOrObject>? = classOrObjectDeclaration?.stub
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForEnumEntry.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForEnumEntry.kt
index 9c87812..47a131f 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForEnumEntry.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForEnumEntry.kt
@@ -50,8 +50,6 @@
 
     override fun hashCode(): Int = enumConstant.hashCode()
 
-    override fun toString(): String = "SymbolLightClassForEnumEntry:$name"
-
     override fun isEquivalentTo(another: PsiElement?): Boolean {
         return super.isEquivalentTo(another) || isOriginEquivalentTo(another)
     }
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt
index 6071a43..5497988 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt
@@ -206,7 +206,7 @@
     }
 
     override fun hashCode() = facadeClassFqName.hashCode()
-    override fun toString() = "${SymbolLightClassForFacade::class.java.simpleName}:$facadeClassFqName"
+    override fun toString(): String = "${this::class.simpleName.orEmpty()}:$facadeClassFqName"
     override val originKind: LightClassOriginKind get() = LightClassOriginKind.SOURCE
     override fun getText() = firstFileInFacade.text ?: ""
     override fun getTextRange(): TextRange = firstFileInFacade.textRange ?: TextRange.EMPTY_RANGE
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForScript.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForScript.kt
index b5ec05f..f048699 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForScript.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForScript.kt
@@ -108,8 +108,6 @@
 
     override fun hashCode(): Int = script.hashCode()
 
-    override fun toString(): String = "${SymbolLightClassForScript::class.java.simpleName}:${script.fqName}"
-
     override fun getNameIdentifier(): PsiIdentifier? = null
 
     override fun getContainingClass(): PsiClass? = null
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightField.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightField.kt
index aae4a06..dbc2c0d 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightField.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightField.kt
@@ -44,8 +44,6 @@
         return this
     }
 
-    override fun toString(): String = "KtLightField:$name"
-
     override fun getTypeElement(): PsiTypeElement? = null
 
     @Throws(IncorrectOperationException::class)
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightModifierList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightModifierList.kt
index 6738a1b..209bb7d 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightModifierList.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightModifierList.kt
@@ -35,7 +35,6 @@
     override fun getParent() = owner
     override fun isEquivalentTo(another: PsiElement?) = another is SymbolLightModifierList<*> && owner == another.owner
     override fun isWritable() = false
-    override fun toString() = "Light modifier list of $owner"
     override val givenAnnotations: List<KtLightAbstractAnnotation> get() = invalidAccess()
 
     override fun equals(other: Any?): Boolean = this === other || other is SymbolLightModifierList<*> && other.kotlinOrigin == kotlinOrigin
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterBase.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterBase.kt
index ca4f4a8..fc29e52 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterBase.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterBase.kt
@@ -56,7 +56,7 @@
         }
     }
 
-    override fun toString(): String = "${this::class.simpleName}:$name"
+    override fun toString(): String = this::class.simpleName.orEmpty()
 
     override fun isEquivalentTo(another: PsiElement?): Boolean =
         basicIsEquivalentTo(this, another as? PsiParameter) || isOriginEquivalentTo(another)
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt
index 4bf5931..6734f6f 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt
@@ -183,7 +183,7 @@
     override fun hasAnnotation(fqn: String): Boolean = annotationsBox.hasAnnotation(this, fqn)
     override fun getApplicableAnnotations(): Array<PsiAnnotation> = annotations
 
-    override fun toString(): String = "SymbolLightTypeParameter:$name"
+    override fun toString(): String = this::class.simpleName.orEmpty()
 
     override fun getNavigationElement(): PsiElement = kotlinOrigin ?: parent.navigationElement
     override fun getLanguage(): Language = KotlinLanguage.INSTANCE
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameterList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameterList.kt
index 085be23..5c00ef1 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameterList.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameterList.kt
@@ -62,7 +62,7 @@
 
     override fun getTypeParameterIndex(typeParameter: PsiTypeParameter?): Int = _typeParameters.indexOf(typeParameter)
 
-    override fun toString(): String = "SymbolLightTypeParameterList"
+    override fun toString(): String = this::class.simpleName.orEmpty()
 
     override fun equals(other: Any?): Boolean {
         if (this === other) return true
diff --git a/build-common/src/org/jetbrains/kotlin/compilerRunner/argumentsToStrings.kt b/build-common/src/org/jetbrains/kotlin/compilerRunner/argumentsToStrings.kt
index 9a43942..4dcb5d5 100644
--- a/build-common/src/org/jetbrains/kotlin/compilerRunner/argumentsToStrings.kt
+++ b/build-common/src/org/jetbrains/kotlin/compilerRunner/argumentsToStrings.kt
@@ -65,6 +65,10 @@
                     add(argumentName)
                 }
 
+                argumentAnnotation.value == "-XXLanguage" -> {
+                    add("$argumentName:$argumentStringValue")
+                }
+
                 /* Advanced (e.g. -X arguments) or boolean properties need to be passed using the '=' */
                 argumentAnnotation.isAdvanced || property.returnType.classifier == Boolean::class -> {
                     add("$argumentName=$argumentStringValue")
@@ -93,4 +97,4 @@
         "$qualifiedName has no empty constructor"
     )
     return argumentConstructor.call()
-}
\ No newline at end of file
+}
diff --git a/build-common/test/org/jetbrains/kotlin/compilerRunner/CompilerArgumentParsingTest.kt b/build-common/test/org/jetbrains/kotlin/compilerRunner/CompilerArgumentParsingTest.kt
index f89161d..9ca0cbf 100644
--- a/build-common/test/org/jetbrains/kotlin/compilerRunner/CompilerArgumentParsingTest.kt
+++ b/build-common/test/org/jetbrains/kotlin/compilerRunner/CompilerArgumentParsingTest.kt
@@ -134,7 +134,7 @@
         type == typeOf<Boolean>() -> randomBoolean()
         type == typeOf<Array<String>>() -> randomStringArray()
         type.isSubtypeOf(typeOf<List<*>>()) -> randomList(type.arguments.first().type ?: error("Missing elementType on $type"))
-        type == typeOf<InternalArgument>() -> return null
+        type == typeOf<ManualLanguageFeatureSetting>() -> return null
         (type.classifier as? KClass<*>)?.isData == true -> null
         else -> error("Unsupported type '$type'")
     }
diff --git a/compiler/arguments/resources/kotlin-compiler-arguments.json b/compiler/arguments/resources/kotlin-compiler-arguments.json
index fec1461..b2e4a17 100644
--- a/compiler/arguments/resources/kotlin-compiler-arguments.json
+++ b/compiler/arguments/resources/kotlin-compiler-arguments.json
@@ -3780,6 +3780,37 @@
                             "deprecatedVersion": null,
                             "removedVersion": null
                         }
+                    },
+                    {
+                        "name": "XXLanguage",
+                        "shortName": null,
+                        "deprecatedName": null,
+                        "description": {
+                            "current": "Enables/disables specified language feature.\nWarning: this flag is not intended for production use. If you want to configure the language behaviour use the\n-language-version or corresponding experimental feature flags.",
+                            "valueInVersions": []
+                        },
+                        "delimiter": "None",
+                        "valueType": {
+                            "type": "org.jetbrains.kotlin.arguments.dsl.types.StringArrayType",
+                            "defaultValue": {
+                                "current": null,
+                                "valueInVersions": []
+                            },
+                            "isNullable": {
+                                "current": true,
+                                "valueInVersions": []
+                            }
+                        },
+                        "valueDescription": {
+                            "current": "[+-]LanguageFeatureName",
+                            "valueInVersions": []
+                        },
+                        "releaseVersionsMetadata": {
+                            "introducedVersion": "1.0.0",
+                            "stabilizedVersion": null,
+                            "deprecatedVersion": null,
+                            "removedVersion": null
+                        }
                     }
                 ],
                 "nestedLevels": [
diff --git a/compiler/arguments/src/org/jetbrains/kotlin/arguments/description/CommonCompilerArguments.kt b/compiler/arguments/src/org/jetbrains/kotlin/arguments/description/CommonCompilerArguments.kt
index 303a65f..e241bf2 100644
--- a/compiler/arguments/src/org/jetbrains/kotlin/arguments/description/CommonCompilerArguments.kt
+++ b/compiler/arguments/src/org/jetbrains/kotlin/arguments/description/CommonCompilerArguments.kt
@@ -1156,4 +1156,19 @@
             introducedVersion = KotlinReleaseVersion.v2_3_0
         )
     }
+
+    compilerArgument {
+        name = "XXLanguage"
+        description = """Enables/disables specified language feature.
+Warning: this flag is not intended for production use. If you want to configure the language behaviour use the
+-language-version or corresponding experimental feature flags.
+        """.trimIndent().asReleaseDependent()
+        valueDescription = "[+-]LanguageFeatureName".asReleaseDependent()
+        compilerName = "manuallyConfiguredFeatures"
+        valueType = StringArrayType.defaultNull
+        delimiter = KotlinCompilerArgument.Delimiter.None
+        lifecycle(
+            introducedVersion = KotlinReleaseVersion.v1_0_0
+        )
+    }
 }
diff --git a/compiler/build-tools/kotlin-build-tools-compat/gen/org/jetbrains/kotlin/buildtools/internal/compat/arguments/CommonCompilerArgumentsImpl.kt b/compiler/build-tools/kotlin-build-tools-compat/gen/org/jetbrains/kotlin/buildtools/internal/compat/arguments/CommonCompilerArgumentsImpl.kt
index c929c9c..6b52d20 100644
--- a/compiler/build-tools/kotlin-build-tools-compat/gen/org/jetbrains/kotlin/buildtools/internal/compat/arguments/CommonCompilerArgumentsImpl.kt
+++ b/compiler/build-tools/kotlin-build-tools-compat/gen/org/jetbrains/kotlin/buildtools/internal/compat/arguments/CommonCompilerArgumentsImpl.kt
@@ -25,6 +25,7 @@
 import org.jetbrains.kotlin.buildtools.`internal`.compat.arguments.CommonCompilerArgumentsImpl.Companion.SCRIPT
 import org.jetbrains.kotlin.buildtools.`internal`.compat.arguments.CommonCompilerArgumentsImpl.Companion.XX_DEBUG_LEVEL_COMPILER_CHECKS
 import org.jetbrains.kotlin.buildtools.`internal`.compat.arguments.CommonCompilerArgumentsImpl.Companion.XX_EXPLICIT_RETURN_TYPES
+import org.jetbrains.kotlin.buildtools.`internal`.compat.arguments.CommonCompilerArgumentsImpl.Companion.XX_LANGUAGE
 import org.jetbrains.kotlin.buildtools.`internal`.compat.arguments.CommonCompilerArgumentsImpl.Companion.XX_LENIENT_MODE
 import org.jetbrains.kotlin.buildtools.`internal`.compat.arguments.CommonCompilerArgumentsImpl.Companion.X_ALLOW_ANY_SCRIPTS_IN_SOURCE_ROOTS
 import org.jetbrains.kotlin.buildtools.`internal`.compat.arguments.CommonCompilerArgumentsImpl.Companion.X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS
@@ -226,6 +227,7 @@
     try { if (X_ALLOW_CONTRACTS_ON_MORE_FUNCTIONS in this) { arguments.allowContractsOnMoreFunctions = get(X_ALLOW_CONTRACTS_ON_MORE_FUNCTIONS)} } catch (e: NoSuchMethodError) { throw IllegalStateException("""Compiler parameter not recognized: X_ALLOW_CONTRACTS_ON_MORE_FUNCTIONS. Current compiler version is: $KC_VERSION}, but the argument was introduced in 2.2.20""").initCause(e) }
     try { if (X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS in this) { arguments.allowConditionImpliesReturnsContracts = get(X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS)} } catch (e: NoSuchMethodError) { throw IllegalStateException("""Compiler parameter not recognized: X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS. Current compiler version is: $KC_VERSION}, but the argument was introduced in 2.2.20""").initCause(e) }
     try { if (X_ALLOW_HOLDSIN_CONTRACT in this) { arguments.allowHoldsinContract = get(X_ALLOW_HOLDSIN_CONTRACT)} } catch (e: NoSuchMethodError) { throw IllegalStateException("""Compiler parameter not recognized: X_ALLOW_HOLDSIN_CONTRACT. Current compiler version is: $KC_VERSION}, but the argument was introduced in 2.2.20""").initCause(e) }
+    if (XX_LANGUAGE in this) { arguments.manuallyConfiguredFeatures = get(XX_LANGUAGE)}
     return arguments
   }
 
@@ -316,6 +318,7 @@
     try { this[X_ALLOW_CONTRACTS_ON_MORE_FUNCTIONS] = arguments.allowContractsOnMoreFunctions } catch (_: NoSuchMethodError) {  }
     try { this[X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS] = arguments.allowConditionImpliesReturnsContracts } catch (_: NoSuchMethodError) {  }
     try { this[X_ALLOW_HOLDSIN_CONTRACT] = arguments.allowHoldsinContract } catch (_: NoSuchMethodError) {  }
+    try { this[XX_LANGUAGE] = arguments.manuallyConfiguredFeatures } catch (_: NoSuchMethodError) {  }
     internalArguments.addAll(arguments.internalArguments.map { it.stringRepresentation })
   }
 
@@ -570,5 +573,8 @@
 
     public val X_ALLOW_HOLDSIN_CONTRACT: CommonCompilerArgument<Boolean> =
         CommonCompilerArgument("X_ALLOW_HOLDSIN_CONTRACT")
+
+    public val XX_LANGUAGE: CommonCompilerArgument<Array<String>?> =
+        CommonCompilerArgument("XX_LANGUAGE")
   }
 }
diff --git a/compiler/build-tools/kotlin-build-tools-impl/gen/org/jetbrains/kotlin/buildtools/internal/arguments/CommonCompilerArgumentsImpl.kt b/compiler/build-tools/kotlin-build-tools-impl/gen/org/jetbrains/kotlin/buildtools/internal/arguments/CommonCompilerArgumentsImpl.kt
index b3852e3..25ae981 100644
--- a/compiler/build-tools/kotlin-build-tools-impl/gen/org/jetbrains/kotlin/buildtools/internal/arguments/CommonCompilerArgumentsImpl.kt
+++ b/compiler/build-tools/kotlin-build-tools-impl/gen/org/jetbrains/kotlin/buildtools/internal/arguments/CommonCompilerArgumentsImpl.kt
@@ -26,6 +26,7 @@
 import org.jetbrains.kotlin.buildtools.`internal`.arguments.CommonCompilerArgumentsImpl.Companion.SCRIPT
 import org.jetbrains.kotlin.buildtools.`internal`.arguments.CommonCompilerArgumentsImpl.Companion.XX_DEBUG_LEVEL_COMPILER_CHECKS
 import org.jetbrains.kotlin.buildtools.`internal`.arguments.CommonCompilerArgumentsImpl.Companion.XX_EXPLICIT_RETURN_TYPES
+import org.jetbrains.kotlin.buildtools.`internal`.arguments.CommonCompilerArgumentsImpl.Companion.XX_LANGUAGE
 import org.jetbrains.kotlin.buildtools.`internal`.arguments.CommonCompilerArgumentsImpl.Companion.XX_LENIENT_MODE
 import org.jetbrains.kotlin.buildtools.`internal`.arguments.CommonCompilerArgumentsImpl.Companion.X_ALLOW_ANY_SCRIPTS_IN_SOURCE_ROOTS
 import org.jetbrains.kotlin.buildtools.`internal`.arguments.CommonCompilerArgumentsImpl.Companion.X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS
@@ -239,6 +240,7 @@
     if (X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS in this) { arguments.allowConditionImpliesReturnsContracts = get(X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS)}
     if (X_ALLOW_HOLDSIN_CONTRACT in this) { arguments.allowHoldsinContract = get(X_ALLOW_HOLDSIN_CONTRACT)}
     if (X_NAME_BASED_DESTRUCTURING in this) { arguments.nameBasedDestructuring = get(X_NAME_BASED_DESTRUCTURING)}
+    if (XX_LANGUAGE in this) { arguments.manuallyConfiguredFeatures = get(XX_LANGUAGE)}
     return arguments
   }
 
@@ -334,6 +336,7 @@
     try { this[X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS] = arguments.allowConditionImpliesReturnsContracts } catch (_: NoSuchMethodError) {  }
     try { this[X_ALLOW_HOLDSIN_CONTRACT] = arguments.allowHoldsinContract } catch (_: NoSuchMethodError) {  }
     try { this[X_NAME_BASED_DESTRUCTURING] = arguments.nameBasedDestructuring } catch (_: NoSuchMethodError) {  }
+    try { this[XX_LANGUAGE] = arguments.manuallyConfiguredFeatures } catch (_: NoSuchMethodError) {  }
     internalArguments.addAll(arguments.internalArguments.map { it.stringRepresentation })
   }
 
@@ -603,5 +606,8 @@
 
     public val X_NAME_BASED_DESTRUCTURING: CommonCompilerArgument<String?> =
         CommonCompilerArgument("X_NAME_BASED_DESTRUCTURING")
+
+    public val XX_LANGUAGE: CommonCompilerArgument<Array<String>?> =
+        CommonCompilerArgument("XX_LANGUAGE")
   }
 }
diff --git a/compiler/build-tools/kotlin-build-tools-options-generator/src/org/jetbrains/kotlin/buildtools/options/generator/Main.kt b/compiler/build-tools/kotlin-build-tools-options-generator/src/org/jetbrains/kotlin/buildtools/options/generator/Main.kt
index 2cd2ed4..809942e 100644
--- a/compiler/build-tools/kotlin-build-tools-options-generator/src/org/jetbrains/kotlin/buildtools/options/generator/Main.kt
+++ b/compiler/build-tools/kotlin-build-tools-options-generator/src/org/jetbrains/kotlin/buildtools/options/generator/Main.kt
@@ -42,7 +42,7 @@
         } catch (_: IllegalArgumentException) {
             parseLastKotlinReleaseVersion(argVersionString)
         }
-    }.also { println("Generating BTA compiler arguments for Kotlin version $it") }
+    }
     val apiArgsStart = args.indexOf("api").let { if (it == -1) null else it }
     val implArgsStart = args.indexOf("impl").let { if (it == -1) null else it }
 
@@ -140,4 +140,4 @@
                 (releaseVersion.major == majorVersion && releaseVersion.minor < minorVersion) ||
                 (releaseVersion.major == majorVersion && releaseVersion.minor == minorVersion && releaseVersion.patch <= patchVersion)
     }
-}
\ No newline at end of file
+}
diff --git a/compiler/cli/cli-arguments-generator/src/org/jetbrains/kotlin/cli/arguments/generator/Main.kt b/compiler/cli/cli-arguments-generator/src/org/jetbrains/kotlin/cli/arguments/generator/Main.kt
index e7f5562..b4146b4 100644
--- a/compiler/cli/cli-arguments-generator/src/org/jetbrains/kotlin/cli/arguments/generator/Main.kt
+++ b/compiler/cli/cli-arguments-generator/src/org/jetbrains/kotlin/cli/arguments/generator/Main.kt
@@ -411,8 +411,8 @@
     println("var freeArgs: List<String> = emptyList()")
     generateSetter("List<String>", argument = null)
     println()
-    println("var internalArguments: List<InternalArgument> = emptyList()")
-    generateSetter("List<InternalArgument>", argument = null)
+    println("var internalArguments: List<ManualLanguageFeatureSetting> = emptyList()")
+    generateSetter("List<ManualLanguageFeatureSetting>", argument = null)
     println()
     println("@Transient")
     println("var errors: ArgumentParseErrors? = null")
diff --git a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt
index 247e488..329aabd 100644
--- a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt
+++ b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt
@@ -1020,6 +1020,20 @@
             field = if (value.isNullOrEmpty()) null else value
         }
 
+    @Argument(
+        value = "-XXLanguage",
+        valueDescription = "[+-]LanguageFeatureName",
+        description = """Enables/disables specified language feature.
+Warning: this flag is not intended for production use. If you want to configure the language behaviour use the
+-language-version or corresponding experimental feature flags.""",
+        delimiter = Argument.Delimiters.none,
+    )
+    var manuallyConfiguredFeatures: Array<String>? = null
+        set(value) {
+            checkFrozen()
+            field = value
+        }
+
     @get:Transient
     abstract val configurator: CommonCompilerArgumentsConfigurator
 
diff --git a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArgumentsCopyGenerated.kt b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArgumentsCopyGenerated.kt
index 41a4da2..7dfef8b 100644
--- a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArgumentsCopyGenerated.kt
+++ b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArgumentsCopyGenerated.kt
@@ -54,6 +54,7 @@
     to.languageVersion = from.languageVersion
     to.lenientMode = from.lenientMode
     to.listPhases = from.listPhases
+    to.manuallyConfiguredFeatures = from.manuallyConfiguredFeatures?.copyOf()
     to.metadataKlib = from.metadataKlib
     to.metadataVersion = from.metadataVersion
     to.multiDollarInterpolation = from.multiDollarInterpolation
diff --git a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonToolArguments.kt b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonToolArguments.kt
index 510042e..e0935f0 100644
--- a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonToolArguments.kt
+++ b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonToolArguments.kt
@@ -88,7 +88,7 @@
             field = value
         }
 
-    var internalArguments: List<InternalArgument> = emptyList()
+    var internalArguments: List<ManualLanguageFeatureSetting> = emptyList()
         set(value) {
             checkFrozen()
             field = value
diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArgumentsConfigurator.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArgumentsConfigurator.kt
index d5be7a4..f8f32b3 100644
--- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArgumentsConfigurator.kt
+++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArgumentsConfigurator.kt
@@ -97,7 +97,7 @@
 
         var standaloneSamConversionFeaturePassedExplicitly = false
         var functionReferenceWithDefaultValueFeaturePassedExplicitly = false
-        for ((feature, state) in arguments.internalArguments.filterIsInstance<ManualLanguageFeatureSetting>()) {
+        for ((feature, state) in arguments.internalArguments) {
             put(feature, state)
             if (state == LanguageFeature.State.ENABLED && feature.forcesPreReleaseBinariesIfEnabled()) {
                 featuresThatForcePreReleaseBinaries += feature
diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/InternalCompilerArgument.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/InternalCompilerArgument.kt
deleted file mode 100644
index 769a00e..0000000
--- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/InternalCompilerArgument.kt
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
- * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
- */
-
-package org.jetbrains.kotlin.cli.common.arguments
-
-import com.intellij.openapi.application.ApplicationManager
-import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
-import org.jetbrains.kotlin.config.LanguageFeature
-
-/**
- * Arguments that can drastically change compiler behavior,
- * breaking stability/compatibility.
- *
- * Internal arguments are split into 'families', each family
- * with its own set of arguments, settings and parsing rules
- *
- * Internal arguments start with '-XX' prefix, followed by
- * family name. Everything after that is handled by the corresponding
- * parser of that particular family.
- */
-interface InternalArgumentParser<A : InternalArgument> {
-    // Should be fast
-    fun canParse(arg: String): Boolean
-
-    fun parseInternalArgument(arg: String, errors: ArgumentParseErrors): A?
-
-    companion object {
-        internal val PARSERS: List<InternalArgumentParser<*>> = listOf(
-            LanguageSettingsParser()
-        )
-    }
-}
-
-abstract class AbstractInternalArgumentParser<A : InternalArgument>(familyName: String) : InternalArgumentParser<A> {
-    private val wholePrefix: String = INTERNAL_ARGUMENT_PREFIX + familyName
-
-    override fun canParse(arg: String): Boolean = arg.startsWith(wholePrefix)
-
-    override fun parseInternalArgument(arg: String, errors: ArgumentParseErrors): A? {
-        if (!arg.startsWith(wholePrefix)) return null
-
-        return parseTail(arg.removePrefix(wholePrefix), arg, errors)
-    }
-
-    abstract fun parseTail(tail: String, wholeArgument: String, errors: ArgumentParseErrors): A?
-}
-
-
-// Arguments of form '-XXLanguage:+LanguageFeature' or '-XXLanguage:-LanguageFeature', which enable or disable corresponding LanguageFeature.
-class LanguageSettingsParser : AbstractInternalArgumentParser<ManualLanguageFeatureSetting>("Language") {
-
-    // Expected tail form: ':(+|-)<language feature name>'
-    override fun parseTail(tail: String, wholeArgument: String, errors: ArgumentParseErrors): ManualLanguageFeatureSetting? {
-        fun reportAndReturnNull(message: String, severity: CompilerMessageSeverity = CompilerMessageSeverity.STRONG_WARNING): Nothing? {
-            errors.internalArgumentsParsingProblems += severity to message
-            return null
-        }
-
-        if (tail.getOrNull(0) != ':') return reportAndReturnNull("Incorrect internal argument syntax, missing colon: $wholeArgument")
-
-        val modificator = tail.getOrNull(1)
-        val languageFeatureState = when (modificator) {
-            '+' -> LanguageFeature.State.ENABLED
-
-            '-' -> LanguageFeature.State.DISABLED
-
-            else -> return reportAndReturnNull("Incorrect internal argument syntax, missing modificator: $wholeArgument")
-        }
-
-        val languageFeatureName = tail.substring(2)
-        if (languageFeatureName.isEmpty()) return reportAndReturnNull("Empty language feature name for internal argument '$wholeArgument'")
-
-        val languageFeature = LanguageFeature.fromString(languageFeatureName)
-            ?: return reportAndReturnNull("Unknown language feature '$languageFeatureName' in passed internal argument '$wholeArgument'")
-
-        if (languageFeature.testOnly && !areTestOnlyLanguageFeaturesAllowed) {
-            reportAndReturnNull(
-                "Language feature '$languageFeatureName' is test-only and cannot be enabled from command line",
-                severity = CompilerMessageSeverity.ERROR
-            )
-        }
-
-        return ManualLanguageFeatureSetting(languageFeature, languageFeatureState, wholeArgument)
-    }
-}
-
-fun allowTestsOnlyLanguageFeatures() {
-    System.setProperty("kotlinc.test.allow.testonly.language.features", "true")
-}
-
-private val areTestOnlyLanguageFeaturesAllowed: Boolean by lazy {
-    // Use system property because test infra in K/N uses an "isolated" classloader
-    System.getProperty("kotlinc.test.allow.testonly.language.features")?.toBoolean() == true
-}
-
-interface InternalArgument {
-    val stringRepresentation: String
-}
-
-data class ManualLanguageFeatureSetting(
-    val languageFeature: LanguageFeature,
-    val state: LanguageFeature.State,
-    override val stringRepresentation: String
-) : InternalArgument
diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/LanguageSettingsParser.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/LanguageSettingsParser.kt
new file mode 100644
index 0000000..27a3cc6
--- /dev/null
+++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/LanguageSettingsParser.kt
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlin.cli.common.arguments
+
+import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
+import org.jetbrains.kotlin.config.LanguageFeature
+
+// Arguments of form '-XXLanguage:+LanguageFeature' or '-XXLanguage:-LanguageFeature', which enable or disable corresponding LanguageFeature.
+object LanguageSettingsParser {
+
+    private val wholePrefix: String = "${INTERNAL_ARGUMENT_PREFIX}Language"
+
+    fun parseInternalArgument(arg: String, errors: ArgumentParseErrors): ManualLanguageFeatureSetting? {
+        if (!arg.startsWith(wholePrefix)) return null
+
+        val tail = arg.removePrefix(wholePrefix)
+        if (tail.getOrNull(0) != ':') {
+            return errors.reportAndReturnNull("Incorrect internal argument syntax, missing colon: $arg")
+        }
+        return parseLanguageFeature(tail.substring(1), arg, errors)
+    }
+
+    // Expected tail form: ':(+|-)<language feature name>'
+    fun parseLanguageFeature(tail: String, wholeArgument: String, errors: ArgumentParseErrors): ManualLanguageFeatureSetting? {
+        val modificator = tail.getOrNull(0)
+        val languageFeatureState = when (modificator) {
+            '+' -> LanguageFeature.State.ENABLED
+
+            '-' -> LanguageFeature.State.DISABLED
+
+            else -> return errors.reportAndReturnNull("Incorrect internal argument syntax, missing modificator: $wholeArgument")
+        }
+
+        val languageFeatureName = tail.substring(1)
+        if (languageFeatureName.isEmpty()) return errors.reportAndReturnNull("Empty language feature name for internal argument '$wholeArgument'")
+
+        val languageFeature = LanguageFeature.fromString(languageFeatureName)
+            ?: return errors.reportAndReturnNull("Unknown language feature '$languageFeatureName' in passed internal argument '$wholeArgument'")
+
+        if (languageFeature.testOnly && !areTestOnlyLanguageFeaturesAllowed) {
+            errors.reportAndReturnNull(
+                "Language feature '$languageFeatureName' is test-only and cannot be enabled from command line",
+                severity = CompilerMessageSeverity.ERROR
+            )
+        }
+
+        return ManualLanguageFeatureSetting(languageFeature, languageFeatureState, wholeArgument)
+    }
+
+    private fun ArgumentParseErrors.reportAndReturnNull(
+        message: String,
+        severity: CompilerMessageSeverity = CompilerMessageSeverity.STRONG_WARNING
+    ): Nothing? {
+        internalArgumentsParsingProblems += severity to message
+        return null
+    }
+}
+
+fun allowTestsOnlyLanguageFeatures() {
+    System.setProperty("kotlinc.test.allow.testonly.language.features", "true")
+}
+
+private val areTestOnlyLanguageFeaturesAllowed: Boolean by lazy {
+    // Use system property because test infra in K/N uses an "isolated" classloader
+    System.getProperty("kotlinc.test.allow.testonly.language.features")?.toBoolean() == true
+}
+
+data class ManualLanguageFeatureSetting(
+    val languageFeature: LanguageFeature,
+    val state: LanguageFeature.State,
+    val stringRepresentation: String
+)
diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/parseCommandLineArguments.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/parseCommandLineArguments.kt
index 1fa8131..4894351 100644
--- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/parseCommandLineArguments.kt
+++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/parseCommandLineArguments.kt
@@ -164,7 +164,6 @@
     var freeArgsStarted = false
 
     val freeArgs = ArrayList<String>()
-    val internalArguments = ArrayList<InternalArgument>()
 
     var i = 0
     loop@ while (i < args.size) {
@@ -179,29 +178,15 @@
             continue
         }
 
-        val key = arg.substringBefore('=')
+        // TODO(KT-80348): should be replaced with just '=' when `-XXLanguage` would be removed
+        val delimiter = when {
+            arg.startsWith("-XXLanguage") -> ':'
+            else -> '='
+        }
+        val key = arg.substringBefore(delimiter)
         val argumentField = properties[key]
         if (argumentField == null) {
             when {
-                // Unknown -XX argument
-                arg.startsWith(INTERNAL_ARGUMENT_PREFIX) -> {
-                    val matchingParsers = InternalArgumentParser.PARSERS.filter { it.canParse(arg) }
-                    assert(matchingParsers.size <= 1) { "Internal error: internal argument $arg can be ambiguously parsed by parsers ${matchingParsers.joinToString()}" }
-
-                    val parser = matchingParsers.firstOrNull()
-
-                    if (parser == null) {
-                        errors.value.unknownExtraFlags += arg
-                    } else {
-                        val newInternalArgument = parser.parseInternalArgument(arg, errors.value) ?: continue
-                        // Manual language feature setting overrides the previous value of the same feature setting, if it exists.
-                        internalArguments.removeIf {
-                            (it as? ManualLanguageFeatureSetting)?.languageFeature ==
-                                    (newInternalArgument as? ManualLanguageFeatureSetting)?.languageFeature
-                        }
-                        internalArguments.add(newInternalArgument)
-                    }
-                }
                 // Unknown -X argument
                 arg.startsWith(ADVANCED_ARGUMENT_PREFIX) -> errors.value.unknownExtraFlags.add(arg)
                 arg.startsWith("-") -> errors.value.unknownArgs.add(arg)
@@ -236,7 +221,7 @@
 
         val value: Any = when {
             getter.returnType.kotlin == Boolean::class -> {
-                if (arg.startsWith(argument.value + "=")) {
+                if (arg.startsWith(argument.value + delimiter)) {
                     // Can't use toBooleanStrict yet because this part of the compiler is used in Gradle and needs API version 1.4.
                     when (arg.substring(argument.value.length + 1)) {
                         "true" -> true
@@ -245,10 +230,10 @@
                     }
                 } else true
             }
-            arg.startsWith(argument.value + "=") -> {
+            arg.startsWith(argument.value + delimiter) -> {
                 arg.substring(argument.value.length + 1)
             }
-            arg.startsWith(argument.deprecatedName + "=") -> {
+            arg.startsWith(argument.deprecatedName + delimiter) -> {
                 arg.substring(argument.deprecatedName.length + 1)
             }
             i == args.size -> {
@@ -269,19 +254,26 @@
     }
 
     result.freeArgs += freeArgs
-    result.updateInternalArguments(internalArguments, overrideArguments)
+    if (result is CommonCompilerArguments) {
+        val internalArguments = ArrayList<ManualLanguageFeatureSetting>()
+        for (arg in result.manuallyConfiguredFeatures.orEmpty()) {
+            val featureSetting = LanguageSettingsParser.parseLanguageFeature(arg, "-XXLanguage:$arg", errors.value) ?: continue
+            internalArguments.removeIf {
+                it.languageFeature == featureSetting.languageFeature
+            }
+            internalArguments.add(featureSetting)
+        }
+        result.updateInternalArguments(internalArguments, overrideArguments)
+    }
 }
 
 private fun <A : CommonToolArguments> A.updateInternalArguments(
-    newInternalArguments: ArrayList<InternalArgument>,
+    newInternalArguments: ArrayList<ManualLanguageFeatureSetting>,
     overrideArguments: Boolean
 ) {
     val filteredExistingArguments = if (overrideArguments) {
         internalArguments.filter { existingArgument ->
-            existingArgument !is ManualLanguageFeatureSetting ||
-                    newInternalArguments.none {
-                        it is ManualLanguageFeatureSetting && it.languageFeature == existingArgument.languageFeature
-                    }
+            newInternalArguments.none { it.languageFeature == existingArgument.languageFeature }
         }
     } else internalArguments
 
diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/arguments.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/arguments.kt
index eee73ab..9c8443a 100644
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/arguments.kt
+++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/arguments.kt
@@ -155,7 +155,7 @@
 private fun MessageCollector.reportUnsafeInternalArgumentsIfAny(arguments: CommonToolArguments) {
     val unsafeArguments = arguments.internalArguments.filterNot {
         // -XXLanguage which turns on BUG_FIX considered safe
-        it is ManualLanguageFeatureSetting && it.languageFeature.actuallyEnabledInProgressiveMode && it.state == LanguageFeature.State.ENABLED
+        it.languageFeature.actuallyEnabledInProgressiveMode && it.state == LanguageFeature.State.ENABLED
     }
 
     if (unsafeArguments.isNotEmpty()) {
diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/ComponentsContainers.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/ComponentsContainers.kt
index 290a8f7..919e80e 100644
--- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/ComponentsContainers.kt
+++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/ComponentsContainers.kt
@@ -68,6 +68,7 @@
 import org.jetbrains.kotlin.incremental.components.ImportTracker
 import org.jetbrains.kotlin.incremental.components.LookupTracker
 import org.jetbrains.kotlin.load.java.JavaTypeEnhancementState
+import org.jetbrains.kotlin.resolve.jvm.JvmConstants
 import org.jetbrains.kotlin.resolve.jvm.JvmTypeSpecificityComparator
 import org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleResolver
 
@@ -184,6 +185,7 @@
     register(FirDelegatedMembersFilter::class, FirJvmDelegatedMembersFilter(this))
     register(FirPlatformUpperBoundsProvider::class, FirJavaNullabilityWarningUpperBoundsProvider(this))
     register(FirDefaultImportProviderHolder::class, FirDefaultImportProviderHolder(FirJvmDefaultImportProvider))
+    register(FirDeclarationNameInvalidCharsProvider::class, FirDeclarationNameInvalidCharsProvider(JvmConstants.INVALID_CHARS))
 }
 
 /**
diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/Fir2IrCallableDeclarationsGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/Fir2IrCallableDeclarationsGenerator.kt
index bed5e31..0091e8d 100644
--- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/Fir2IrCallableDeclarationsGenerator.kt
+++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/Fir2IrCallableDeclarationsGenerator.kt
@@ -20,8 +20,8 @@
 import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression
 import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
 import org.jetbrains.kotlin.fir.expressions.impl.FirExpressionStub
+import org.jetbrains.kotlin.fir.generatedContextParameterName
 import org.jetbrains.kotlin.fir.java.declarations.FirJavaField
-import org.jetbrains.kotlin.fir.java.hasJvmFieldAnnotation
 import org.jetbrains.kotlin.fir.lazy.Fir2IrLazyClass
 import org.jetbrains.kotlin.fir.originalForSubstitutionOverride
 import org.jetbrains.kotlin.fir.references.toResolvedBaseSymbol
@@ -751,7 +751,7 @@
                 startOffset = startOffset,
                 endOffset = endOffset,
                 origin = origin,
-                name = valueParameter.name,
+                name = valueParameter.generatedContextParameterName ?: valueParameter.name,
                 type = type,
                 isAssignable = valueParameter.containingDeclarationSymbol.fir.let { it is FirCallableDeclaration && it.shouldParametersBeAssignable(c) },
                 symbol = IrValueParameterSymbolImpl(),
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 0065764..dfe58a9 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
@@ -546,6 +546,18 @@
       }
 
       @Test
+      @TestMetadata("annotationAnnotationParam.kt")
+      public void testAnnotationAnnotationParam() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+      }
+
+      @Test
+      @TestMetadata("annotationAnyDispatch.kt")
+      public void testAnnotationAnyDispatch() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+      }
+
+      @Test
       @TestMetadata("annotationEnclosingName.kt")
       public void testAnnotationEnclosingName() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -564,6 +576,12 @@
       }
 
       @Test
+      @TestMetadata("annotationInlineMultiModule.kt")
+      public void testAnnotationInlineMultiModule() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+      }
+
+      @Test
       @TestMetadata("annotationInstances.kt")
       public void testAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -600,6 +618,12 @@
       }
 
       @Test
+      @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+      public void testAnnotationToStringDefaultsAndEmptyArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+      }
+
+      @Test
       @TestMetadata("annotationType.kt")
       public void testAnnotationType() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -624,6 +648,42 @@
       }
 
       @Test
+      @TestMetadata("arrayContentEqAny.kt")
+      public void testArrayContentEqAny() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+      }
+
+      @Test
+      @TestMetadata("arraysAndKClass.kt")
+      public void testArraysAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("differentAnnotationTypes.kt")
+      public void testDifferentAnnotationTypes() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+      }
+
+      @Test
+      @TestMetadata("differentOrder.kt")
+      public void testDifferentOrder() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+      }
+
+      @Test
+      @TestMetadata("enumAndKClass.kt")
+      public void testEnumAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("enumArray.kt")
+      public void testEnumArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+      }
+
+      @Test
       @TestMetadata("inInlineFunction.kt")
       public void testInInlineFunction() {
         runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -636,6 +696,12 @@
       }
 
       @Test
+      @TestMetadata("instanceEquality.kt")
+      public void testInstanceEquality() {
+        runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+      }
+
+      @Test
       @TestMetadata("javaAnnotation.kt")
       public void testJavaAnnotation() {
         runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -660,6 +726,12 @@
       }
 
       @Test
+      @TestMetadata("mixedArray.kt")
+      public void testMixedArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+      }
+
+      @Test
       @TestMetadata("multifileEqHc.kt")
       public void testMultifileEqHc() {
         runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -690,22 +762,64 @@
       }
 
       @Test
+      @TestMetadata("naNAndZero.kt")
+      public void testNaNAndZero() {
+        runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+      }
+
+      @Test
+      @TestMetadata("nested.kt")
+      public void testNested() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+      }
+
+      @Test
       @TestMetadata("nestedAnnotationInstances.kt")
       public void testNestedAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
       }
 
       @Test
+      @TestMetadata("nestedDefaults.kt")
+      public void testNestedDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+      }
+
+      @Test
       @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
       public void testRearrangedArgumentsInAnnotationCall() {
         runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
       }
 
       @Test
+      @TestMetadata("repeatableInstantiation.kt")
+      public void testRepeatableInstantiation() {
+        runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+      }
+
+      @Test
+      @TestMetadata("typeAliasesAndGenericsInterop.kt")
+      public void testTypeAliasesAndGenericsInterop() {
+        runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+      }
+
+      @Test
+      @TestMetadata("unsignedAndBooleanArrays.kt")
+      public void testUnsignedAndBooleanArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+      }
+
+      @Test
       @TestMetadata("varargInAnnotationParameterInstantiation.kt")
       public void testVarargInAnnotationParameterInstantiation() {
         runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
       }
+
+      @Test
+      @TestMetadata("withDefaults.kt")
+      public void testWithDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+      }
     }
 
     @Nested
diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java
index ea08860..b51575a 100644
--- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java
+++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java
@@ -548,6 +548,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested
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 93175a1..68a2f05 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
@@ -546,6 +546,18 @@
       }
 
       @Test
+      @TestMetadata("annotationAnnotationParam.kt")
+      public void testAnnotationAnnotationParam() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+      }
+
+      @Test
+      @TestMetadata("annotationAnyDispatch.kt")
+      public void testAnnotationAnyDispatch() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+      }
+
+      @Test
       @TestMetadata("annotationEnclosingName.kt")
       public void testAnnotationEnclosingName() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -564,6 +576,12 @@
       }
 
       @Test
+      @TestMetadata("annotationInlineMultiModule.kt")
+      public void testAnnotationInlineMultiModule() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+      }
+
+      @Test
       @TestMetadata("annotationInstances.kt")
       public void testAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -600,6 +618,12 @@
       }
 
       @Test
+      @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+      public void testAnnotationToStringDefaultsAndEmptyArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+      }
+
+      @Test
       @TestMetadata("annotationType.kt")
       public void testAnnotationType() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -624,6 +648,42 @@
       }
 
       @Test
+      @TestMetadata("arrayContentEqAny.kt")
+      public void testArrayContentEqAny() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+      }
+
+      @Test
+      @TestMetadata("arraysAndKClass.kt")
+      public void testArraysAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("differentAnnotationTypes.kt")
+      public void testDifferentAnnotationTypes() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+      }
+
+      @Test
+      @TestMetadata("differentOrder.kt")
+      public void testDifferentOrder() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+      }
+
+      @Test
+      @TestMetadata("enumAndKClass.kt")
+      public void testEnumAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("enumArray.kt")
+      public void testEnumArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+      }
+
+      @Test
       @TestMetadata("inInlineFunction.kt")
       public void testInInlineFunction() {
         runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -636,6 +696,12 @@
       }
 
       @Test
+      @TestMetadata("instanceEquality.kt")
+      public void testInstanceEquality() {
+        runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+      }
+
+      @Test
       @TestMetadata("javaAnnotation.kt")
       public void testJavaAnnotation() {
         runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -660,6 +726,12 @@
       }
 
       @Test
+      @TestMetadata("mixedArray.kt")
+      public void testMixedArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+      }
+
+      @Test
       @TestMetadata("multifileEqHc.kt")
       public void testMultifileEqHc() {
         runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -690,22 +762,64 @@
       }
 
       @Test
+      @TestMetadata("naNAndZero.kt")
+      public void testNaNAndZero() {
+        runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+      }
+
+      @Test
+      @TestMetadata("nested.kt")
+      public void testNested() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+      }
+
+      @Test
       @TestMetadata("nestedAnnotationInstances.kt")
       public void testNestedAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
       }
 
       @Test
+      @TestMetadata("nestedDefaults.kt")
+      public void testNestedDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+      }
+
+      @Test
       @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
       public void testRearrangedArgumentsInAnnotationCall() {
         runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
       }
 
       @Test
+      @TestMetadata("repeatableInstantiation.kt")
+      public void testRepeatableInstantiation() {
+        runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+      }
+
+      @Test
+      @TestMetadata("typeAliasesAndGenericsInterop.kt")
+      public void testTypeAliasesAndGenericsInterop() {
+        runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+      }
+
+      @Test
+      @TestMetadata("unsignedAndBooleanArrays.kt")
+      public void testUnsignedAndBooleanArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+      }
+
+      @Test
       @TestMetadata("varargInAnnotationParameterInstantiation.kt")
       public void testVarargInAnnotationParameterInstantiation() {
         runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
       }
+
+      @Test
+      @TestMetadata("withDefaults.kt")
+      public void testWithDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+      }
     }
 
     @Nested
diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java
index e0e6b0b..4d6fcde 100644
--- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java
+++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java
@@ -548,6 +548,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested
diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt
index af8d368..5bf7dd9 100644
--- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt
+++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt
@@ -23,6 +23,7 @@
 import org.jetbrains.kotlin.resolve.DataClassResolver
 import org.jetbrains.kotlin.resolve.ReturnValueStatus
 import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
+import org.jetbrains.kotlin.utils.exceptions.requireWithAttachment
 import java.util.*
 
 class FirStatusResolver(
@@ -165,11 +166,8 @@
             is FirRegularClass -> firClass.applyExtensionTransformers { transformStatus(it, firClass, containingClass?.symbol, isLocal) }
             else -> firClass.status
         }
-        require(status.visibility == firClass.status.visibility) {
-            "Attempt to change visibility of a class-like: ${firClass.symbol.classId}, " +
-                    "original visibility: ${firClass.status.visibility}, new visibility: ${status.visibility}"
-        }
 
+        classLikeStatusValidation(newStatus = status, declaration = firClass)
         return resolveStatus(firClass, status, containingClass, null, isLocal, emptyList())
     }
 
@@ -181,9 +179,28 @@
         val status = typeAlias.applyExtensionTransformers {
             transformStatus(it, typeAlias, containingClass?.symbol, isLocal)
         }
+
+        classLikeStatusValidation(newStatus = status, declaration = typeAlias)
         return resolveStatus(typeAlias, status, containingClass, null, isLocal, emptyList())
     }
 
+    private fun classLikeStatusValidation(newStatus: FirDeclarationStatus, declaration: FirClassLikeDeclaration) {
+        val originalVisibility = declaration.status.visibility
+        requireWithAttachment(
+            originalVisibility != Visibilities.Unknown,
+            { "Visibility has to be provided for a class-like declaration (${declaration::class.simpleName}) during its initialization" },
+        ) {
+            withFirEntry("declaration", declaration)
+        }
+
+        requireWithAttachment(
+            newStatus.visibility == originalVisibility,
+            { "Attempt to change visibility of a class-like declaration (${declaration::class.simpleName}), original visibility: $originalVisibility, new visibility: ${declaration.visibility}" },
+        ) {
+            withFirEntry("declaration", declaration)
+        }
+    }
+
     fun resolveStatus(
         propertyAccessor: FirPropertyAccessor,
         containingClass: FirClass?,
diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt
index d5fe3e5..8d8cde6 100644
--- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt
+++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt
@@ -195,6 +195,8 @@
                     property.transformReceiverParameter(transformer, ResolutionMode.ContextIndependent)
                     property.transformContextParameters(transformer, ResolutionMode.ContextIndependent)
                     doTransformTypeParameters(property)
+
+                    property.setUnnamedContextParameterNames()
                 }
 
                 // TODO: the [skipCleanup] hack should be reverted on fixing KT-79107
@@ -1063,6 +1065,8 @@
                 .transformContextParameters(this, ResolutionMode.ContextIndependent)
                 .transformValueParameters(this, ResolutionMode.ContextIndependent)
                 .transformAnnotations(this, ResolutionMode.ContextIndependent)
+
+            function.setUnnamedContextParameterNames()
         }
 
         if (!bodyResolved) {
@@ -1311,6 +1315,7 @@
 
         lambda = lambda.transformValueParameters(ImplicitToErrorTypeTransformer, null)
         lambda = lambda.transformContextParameters(ImplicitToErrorTypeTransformer, null)
+        lambda.setUnnamedContextParameterNames()
 
         val initialReturnTypeRef = lambda.returnTypeRef as? FirResolvedTypeRef
         val expectedReturnTypeRef = initialReturnTypeRef
diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/setUnnamedContextParameterNames.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/setUnnamedContextParameterNames.kt
new file mode 100644
index 0000000..4782524
--- /dev/null
+++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/setUnnamedContextParameterNames.kt
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2010-2025 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlin.fir.resolve.transformers.body.resolve
+
+import org.jetbrains.kotlin.descriptors.ClassKind
+import org.jetbrains.kotlin.fir.SessionHolder
+import org.jetbrains.kotlin.fir.declarationNameInvalidChars
+import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
+import org.jetbrains.kotlin.fir.generatedContextParameterName
+import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
+import org.jetbrains.kotlin.fir.resolve.toClassSymbol
+import org.jetbrains.kotlin.fir.types.*
+import org.jetbrains.kotlin.fir.utils.exceptions.withFirEntry
+import org.jetbrains.kotlin.name.Name
+import org.jetbrains.kotlin.types.TypeApproximatorConfiguration
+import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
+import kotlin.collections.iterator
+
+context(sessionHolder: SessionHolder)
+internal fun FirCallableDeclaration.setUnnamedContextParameterNames() {
+    if (contextParameters.isEmpty()) return
+
+    val contextParameterNames = contextParameters
+        .filter { it.name.isSpecial && !it.returnTypeRef.coneType.hasError() }
+        .ifEmpty { return }
+        .associateWith {
+            it.returnTypeRef.coneType
+                .erasedUpperBoundName(tryApproximation = true)
+                ?.toString()
+                ?.replaceInvalidChars(sessionHolder.session.declarationNameInvalidChars)
+                ?: errorWithAttachment("Cannot compute generated name for context parameter") {
+                    withFirEntry("contextParameter", it)
+                    withFirEntry("containingDeclaration", this@setUnnamedContextParameterNames)
+                }
+        }
+
+    val nameGroups = contextParameterNames.entries.groupBy({ it.value }, { it.key })
+
+    for ((contextParameter, baseName) in contextParameterNames) {
+        val currentNameGroup = nameGroups[baseName]!!
+        val suffix = if (currentNameGroup.size == 1) "" else "#" + (currentNameGroup.indexOf(contextParameter) + 1)
+        contextParameter.generatedContextParameterName = Name.identifier($$"$context-$$baseName$$suffix")
+    }
+}
+
+context(sessionHolder: SessionHolder)
+private fun ConeKotlinType.erasedUpperBoundName(tryApproximation: Boolean): Name? {
+    return when (this) {
+        is ConeTypeParameterType -> {
+            val bounds = lookupTag.symbol.resolvedBounds
+            for (bound in bounds) {
+                val type = bound.coneType.fullyExpandedType()
+                val classSymbol = type.toClassSymbol() ?: continue
+                if (classSymbol.classKind != ClassKind.ANNOTATION_CLASS && classSymbol.classKind != ClassKind.INTERFACE) {
+                    return classSymbol.name
+                }
+            }
+            bounds.first().coneType.erasedUpperBoundName(tryApproximation)
+        }
+        is ConeLookupTagBasedType -> fullyExpandedType().lookupTagIfAny?.name
+        is ConeDefinitelyNotNullType -> original.erasedUpperBoundName(tryApproximation)
+        is ConeFlexibleType -> upperBound.erasedUpperBoundName(tryApproximation)
+        else if tryApproximation -> {
+            sessionHolder.session.typeApproximator
+                .approximateToSuperType(this, TypeApproximatorConfiguration.FrontendToBackendTypesApproximation)
+                ?.erasedUpperBoundName(tryApproximation = false)
+        }
+        else -> null
+    }
+}
+
+private fun String.replaceInvalidChars(invalidChars: Set<Char>) =
+    invalidChars.fold(this) { acc, ch -> if (ch in acc) acc.replace(ch, '_') else acc }
\ No newline at end of file
diff --git a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/firContextParameterUtils.kt b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/firContextParameterUtils.kt
deleted file mode 100644
index 098819d..0000000
--- a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/firContextParameterUtils.kt
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2010-2025 JetBrains s.r.o. and Kotlin Programming Language contributors.
- * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
- */
-
-package org.jetbrains.kotlin.fir
-
-import org.jetbrains.kotlin.descriptors.ClassKind
-import org.jetbrains.kotlin.fir.declarations.FirValueParameterKind
-import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
-import org.jetbrains.kotlin.fir.resolve.toClassSymbol
-import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
-import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
-import org.jetbrains.kotlin.fir.types.ConeKotlinType
-import org.jetbrains.kotlin.fir.types.ConeLookupTagBasedType
-import org.jetbrains.kotlin.fir.types.ConeTypeParameterType
-import org.jetbrains.kotlin.fir.types.lookupTagIfAny
-import org.jetbrains.kotlin.name.Name
-import org.jetbrains.kotlin.name.SpecialNames
-import org.jetbrains.kotlin.util.anonymousContextParameterName
-
-fun FirValueParameterSymbol.anonymousContextParameterName(session: FirSession, invalidChars: Set<Char>): String? {
-    if (fir.valueParameterKind != FirValueParameterKind.ContextParameter || name != SpecialNames.UNDERSCORE_FOR_UNUSED_VAR) return null
-    return anonymousContextParameterName(
-        (containingDeclarationSymbol as FirCallableSymbol).contextParameterSymbols,
-        invalidChars,
-        erasedUpperBoundName = {
-            it.resolvedReturnType.erasedUpperBoundName(session)?.identifierOrNullIfSpecial ?: "???"
-        }
-    )
-}
-
-private fun ConeKotlinType.erasedUpperBoundName(session: FirSession): Name? {
-    return when (this) {
-        is ConeTypeParameterType -> {
-            val bounds = lookupTag.symbol.resolvedBounds
-            for (bound in bounds) {
-                val type = bound.coneType.fullyExpandedType(session)
-                val classSymbol = type.toClassSymbol(session) ?: continue
-                if (classSymbol.classKind != ClassKind.ANNOTATION_CLASS && classSymbol.classKind != ClassKind.INTERFACE) {
-                    return classSymbol.name
-                }
-            }
-            bounds.first().coneType.erasedUpperBoundName(session)
-        }
-        is ConeLookupTagBasedType -> fullyExpandedType(session).lookupTagIfAny?.name
-        else -> null
-    }
-}
\ No newline at end of file
diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt
index 0da65f0..17d04ab 100644
--- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt
+++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt
@@ -10,6 +10,7 @@
 import org.jetbrains.kotlin.fir.declarations.utils.isSynthetic
 import org.jetbrains.kotlin.fir.symbols.impl.*
 import org.jetbrains.kotlin.fir.types.*
+import org.jetbrains.kotlin.name.Name
 
 fun FirCallableSymbol<*>.dispatchReceiverClassTypeOrNull(): ConeClassLikeType? =
     fir.dispatchReceiverClassTypeOrNull()
@@ -255,3 +256,15 @@
 
 val <D : FirCallableDeclaration> FirCallableSymbol<D>.delegatedWrapperData: DelegatedWrapperData<D>?
     get() = fir.delegatedWrapperData
+
+private object UnnamedContextParameterNameKey : FirDeclarationDataKey()
+
+var FirValueParameter.generatedContextParameterName: Name? by FirDeclarationDataRegistry.data(UnnamedContextParameterNameKey)
+
+val FirValueParameterSymbol.generatedContextParameterName: Name? get() = fir.generatedContextParameterName
+
+class FirDeclarationNameInvalidCharsProvider(val invalidChars: Set<Char>) : FirSessionComponent
+
+private val FirSession.declarationNameInvalidCharsProvider: FirDeclarationNameInvalidCharsProvider? by FirSession.nullableSessionComponentAccessor()
+
+val FirSession.declarationNameInvalidChars: Set<Char> get() = declarationNameInvalidCharsProvider?.invalidChars ?: emptySet()
\ No newline at end of file
diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/FirSymbolStatusUtils.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/FirSymbolStatusUtils.kt
index c7f6bdd..e3cba0d2 100644
--- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/FirSymbolStatusUtils.kt
+++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/FirSymbolStatusUtils.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Copyright 2010-2025 JetBrains s.r.o. and Kotlin Programming Language contributors.
  * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
  */
 
@@ -7,7 +7,10 @@
 
 import org.jetbrains.kotlin.descriptors.*
 import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
-import org.jetbrains.kotlin.fir.symbols.impl.*
+import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
+import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
+import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
+import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
 
 // ---------------------- callables with status ----------------------
 
@@ -42,7 +45,7 @@
 inline val FirClassLikeSymbol<*>.isAbstract: Boolean get() = resolvedStatus.modality == Modality.ABSTRACT
 inline val FirClassLikeSymbol<*>.isFinal: Boolean get() = resolvedStatus.modality == Modality.FINAL
 
-inline val FirClassLikeSymbol<*>.visibility: Visibility get() = resolvedStatus.visibility
+inline val FirClassLikeSymbol<*>.visibility: Visibility get() = rawStatus.visibility
 inline val FirClassLikeSymbol<*>.effectiveVisibility: EffectiveVisibility get() = resolvedStatus.effectiveVisibility
 
 inline val FirClassLikeSymbol<*>.isActual: Boolean get() = rawStatus.isActual
diff --git a/compiler/frontend.common/src/org/jetbrains/kotlin/util/contextParameterUtils.kt b/compiler/frontend.common/src/org/jetbrains/kotlin/util/contextParameterUtils.kt
deleted file mode 100644
index 851ccd0..0000000
--- a/compiler/frontend.common/src/org/jetbrains/kotlin/util/contextParameterUtils.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright 2010-2025 JetBrains s.r.o. and Kotlin Programming Language contributors.
- * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
- */
-
-package org.jetbrains.kotlin.util
-
-import kotlin.collections.get
-
-fun <T> T.anonymousContextParameterName(
-    allUnnamedContextParameters: List<T>,
-    invalidChars: Set<Char>,
-    erasedUpperBoundName: (T) -> String,
-): String? {
-    val contextParameterNames = allUnnamedContextParameters
-        .associateWith { erasedUpperBoundName(it).replaceInvalidChars(invalidChars) }
-    val nameGroups = contextParameterNames.entries.groupBy({ it.value }, { it.key })
-    val baseName = contextParameterNames[this]
-    val currentNameGroup = nameGroups[baseName]!!
-    return if (currentNameGroup.size == 1) $$"$context-$$baseName" else $$"$context-$$baseName#$${currentNameGroup.indexOf(this) + 1}"
-}
-
-private fun String.replaceInvalidChars(invalidChars: Set<Char>) =
-    invalidChars.fold(this) { acc, ch -> if (ch in acc) acc.replace(ch, '_') else acc }
\ No newline at end of file
diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt
index 801f39b..a80988a 100644
--- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt
+++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt
@@ -128,9 +128,6 @@
 ) : BodyLoweringPass {
     private val declarationScopesWithCounter: MutableMap<IrClass, MutableMap<DeclarationKeyForScope, Scope>> = mutableMapOf()
 
-    open val invalidChars: Set<Char>
-        get() = emptySet()
-
     override fun lower(irFile: IrFile) {
         runOnFilePostfix(irFile)
     }
@@ -1054,10 +1051,7 @@
                 }
             }
 
-            val baseAsContextParameter = (declaration as? IrValueParameter)?.let {
-                (declaration.parent as IrFunction).anonymousContextParameterName(declaration, invalidChars)
-            }
-            val base = baseAsContextParameter ?: if (declaration.name.isSpecial) {
+            val base = if (declaration.name.isSpecial) {
                 declaration.name.asStringStripSpecialMarkers()
             } else {
                 declaration.name.asString()
diff --git a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt
index b854595..319421e 100644
--- a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt
+++ b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt
@@ -391,8 +391,6 @@
         // then generate name accordingly.
         val name = if (param.origin == BOUND_RECEIVER_PARAMETER || useReceiverNaming) {
             getNameForReceiverParameter(irFunction.toIrBasedDescriptor(), context.config.languageVersionSettings)
-        } else if (param.kind == IrParameterKind.Context) {
-            irFunction.anonymousContextParameterName(param) ?: param.name.asString()
         } else {
             param.name.asString()
         }
diff --git a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt
index 100e587..eee1d57 100644
--- a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt
+++ b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt
@@ -376,8 +376,7 @@
             parameter.name.asString()
         } else when (parameter.kind) {
             IrParameterKind.DispatchReceiver -> continue
-            IrParameterKind.Regular -> parameter.name.asString()
-            IrParameterKind.Context -> irFunction.anonymousContextParameterName(parameter) ?: parameter.name.asString()
+            IrParameterKind.Regular, IrParameterKind.Context -> parameter.name.asString()
             IrParameterKind.ExtensionReceiver -> irFunction.extensionReceiverName(config)
         }
         val origin = parameter.origin
diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmLocalDeclarationsLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmLocalDeclarationsLowering.kt
index fa43baa..49d9b76 100644
--- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmLocalDeclarationsLowering.kt
+++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmLocalDeclarationsLowering.kt
@@ -24,8 +24,6 @@
 import org.jetbrains.kotlin.ir.util.parentDeclarationsWithSelf
 import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities
 import org.jetbrains.kotlin.name.NameUtils
-import org.jetbrains.kotlin.name.NameUtils.sanitizeAsJavaIdentifier
-import org.jetbrains.kotlin.resolve.jvm.JvmConstants
 import org.jetbrains.kotlin.utils.filterIsInstanceAnd
 
 /**
@@ -47,8 +45,6 @@
     newParameterToOld = context.evaluatorData?.localDeclarationsData?.newParameterToOld ?: mutableMapOf(),
     oldParameterToNew = context.evaluatorData?.localDeclarationsData?.oldParameterToNew ?: mutableMapOf(),
 ) {
-    override val invalidChars: Set<Char>
-        get() = JvmConstants.INVALID_CHARS
 
     override fun getReplacementSymbolForCaptured(container: IrDeclaration, symbol: IrValueSymbol): IrValueSymbol {
         if (context.evaluatorData?.evaluatorGeneratedFunction == container && !symbol.owner.parentDeclarationsWithSelf.contains(container)) {
diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedInlineClassReplacements.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedInlineClassReplacements.kt
index 9b492bf..c23c838 100644
--- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedInlineClassReplacements.kt
+++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedInlineClassReplacements.kt
@@ -168,9 +168,6 @@
                             // The function's name will be mangled, so preserve the old receiver name.
                             function.extensionReceiverName(context.config).let(Name::identifier)
                         }
-                        IrParameterKind.Context -> {
-                            function.anonymousContextParameterName(parameter)?.let(Name::identifier) ?: parameter.name
-                        }
                         else -> parameter.name
                     },
                     origin = when (parameter.kind) {
@@ -207,7 +204,7 @@
                     IrParameterKind.Context -> {
                         parameter.copyTo(
                             this,
-                            name = function.anonymousContextParameterName(parameter)?.let(Name::identifier) ?: parameter.name,
+                            name = parameter.name,
                             origin = IrDeclarationOrigin.MOVED_CONTEXT_RECEIVER,
                             kind = IrParameterKind.Regular,
                         )
diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedMultiFieldValueClassReplacements.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedMultiFieldValueClassReplacements.kt
index 293ad1a..bb1aa45 100644
--- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedMultiFieldValueClassReplacements.kt
+++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedMultiFieldValueClassReplacements.kt
@@ -147,8 +147,7 @@
             val name = when (param.kind) {
                 IrParameterKind.DispatchReceiver -> AsmUtil.THIS
                 IrParameterKind.ExtensionReceiver -> sourceFunction.extensionReceiverName(context.config)
-                IrParameterKind.Context -> sourceFunction.anonymousContextParameterName(param)
-                IrParameterKind.Regular -> null
+                IrParameterKind.Regular, IrParameterKind.Context -> null
             }
             val originWhenNotFlattened = when (param.kind) {
                 IrParameterKind.DispatchReceiver -> IrDeclarationOrigin.MOVED_DISPATCH_RECEIVER
diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/JvmIrUtils.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/JvmIrUtils.kt
index 1f29373..b7e1f7bd 100644
--- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/JvmIrUtils.kt
+++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/JvmIrUtils.kt
@@ -33,7 +33,6 @@
 import org.jetbrains.kotlin.ir.builders.irExprBody
 import org.jetbrains.kotlin.ir.builders.irGet
 import org.jetbrains.kotlin.ir.declarations.*
-import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin.Companion.UNDERSCORE_PARAMETER
 import org.jetbrains.kotlin.ir.expressions.*
 import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
 import org.jetbrains.kotlin.ir.expressions.impl.IrClassReferenceImpl
@@ -44,7 +43,6 @@
 import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
 import org.jetbrains.kotlin.ir.types.*
 import org.jetbrains.kotlin.ir.util.*
-import org.jetbrains.kotlin.ir.util.erasedUpperBound
 import org.jetbrains.kotlin.ir.util.getArrayElementType
 import org.jetbrains.kotlin.ir.util.isBoxedArray
 import org.jetbrains.kotlin.ir.util.isSubtypeOf
@@ -63,7 +61,6 @@
 import org.jetbrains.kotlin.psi.KtFile
 import org.jetbrains.kotlin.resolve.DescriptorUtils
 import org.jetbrains.kotlin.resolve.jvm.AsmTypes
-import org.jetbrains.kotlin.resolve.jvm.JvmConstants
 import org.jetbrains.kotlin.resolve.multiplatform.OptionalAnnotationUtil
 import org.jetbrains.kotlin.resolve.source.PsiSourceElement
 import org.jetbrains.kotlin.utils.DFS
@@ -511,8 +508,6 @@
         AsmUtil.LABELED_THIS_PARAMETER + mangleNameIfNeeded(callableName.asString())
 }
 
-fun IrFunction.anonymousContextParameterName(parameter: IrValueParameter): String? = anonymousContextParameterName(parameter, JvmConstants.INVALID_CHARS)
-
 fun IrFunction.isBridge(): Boolean =
     origin == IrDeclarationOrigin.BRIDGE || origin == IrDeclarationOrigin.BRIDGE_SPECIAL
 
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt
index 75b1c35..d9082b0 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt
+++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt
@@ -19,7 +19,6 @@
 import org.jetbrains.kotlin.ir.builders.declarations.*
 import org.jetbrains.kotlin.ir.builders.irImplicitCast
 import org.jetbrains.kotlin.ir.declarations.*
-import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin.Companion.UNDERSCORE_PARAMETER
 import org.jetbrains.kotlin.ir.expressions.*
 import org.jetbrains.kotlin.ir.expressions.impl.*
 import org.jetbrains.kotlin.ir.overrides.FakeOverrideBuilderStrategy
@@ -34,7 +33,6 @@
 import org.jetbrains.kotlin.ir.visitors.acceptVoid
 import org.jetbrains.kotlin.name.*
 import org.jetbrains.kotlin.util.OperatorNameConventions
-import org.jetbrains.kotlin.util.anonymousContextParameterName
 import org.jetbrains.kotlin.utils.*
 import org.jetbrains.kotlin.utils.addToStdlib.assignFrom
 import java.io.StringWriter
@@ -1635,12 +1633,3 @@
     }
 
 
-fun IrFunction.anonymousContextParameterName(parameter: IrValueParameter, invalidChars: Set<Char>): String? {
-    if (parameter.kind != IrParameterKind.Context || parameter.origin != UNDERSCORE_PARAMETER) return null
-    val allUnnamedContextParameters = parameters.filter { it.kind == IrParameterKind.Context && it.origin == UNDERSCORE_PARAMETER }
-    return parameter.anonymousContextParameterName(
-        allUnnamedContextParameters,
-        invalidChars
-    ) { t -> t.type.erasedUpperBound.name.asString() }
-}
-
diff --git a/compiler/testData/codegen/box/annotations/instances/AnnotationInstantiationWithArray.kt b/compiler/testData/codegen/box/annotations/instances/AnnotationInstantiationWithArray.kt
index 7fdea27..0248f87 100644
--- a/compiler/testData/codegen/box/annotations/instances/AnnotationInstantiationWithArray.kt
+++ b/compiler/testData/codegen/box/annotations/instances/AnnotationInstantiationWithArray.kt
@@ -1,4 +1,4 @@
-// TARGET_BACKEND: JVM_IR
+// TARGET_BACKEND: JVM_IR, JS_IR, JS_IR_ES6, WASM
 // FIR_IDENTICAL
 // DUMP_IR
 // WITH_STDLIB
diff --git a/compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt b/compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt
new file mode 100644
index 0000000..3e44d72f
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt
@@ -0,0 +1,24 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+
+annotation class A(val t: String)
+annotation class WithAnn(val a: A, val xs: Array<A>)
+
+fun box(): String {
+    val a1 = A("a")
+    val a2 = A("a")
+    val a3 = A("b")
+
+    if (a1 != a2) return "Fail1"
+    if (a1 == a3) return "Fail2"
+
+    val w1 = WithAnn(a1, arrayOf(A("x"), A("y")))
+    val w2 = WithAnn(a2, arrayOf(A("x"), A("y")))
+    val w3 = WithAnn(a3, arrayOf(A("y"), A("x")))
+
+    if (w1 != w2) return "Fail3"
+    if (w1.hashCode() != w2.hashCode()) return "Fail4"
+    if (w1 == w3) return "Fail5"
+
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.jvm_abi.txt b/compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.jvm_abi.txt
new file mode 100644
index 0000000..b9ab524
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.jvm_abi.txt
@@ -0,0 +1,9 @@
+MODULE main
+	CLASS Ann.class
+		CLASS METADATA
+			CONSTRUCTOR <init>(ILjava/lang/String;)V
+				Property: class.metadata.constructor.valueParameters
+					K1
+						(x: kotlin/Int /* = ... */, s: kotlin/String /* = ... */)
+					K2
+						(x: kotlin/Int = 1, s: kotlin/String = "k")
diff --git a/compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt b/compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt
new file mode 100644
index 0000000..0a57051
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt
@@ -0,0 +1,35 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+// JVM_ABI_K1_K2_DIFF: K2 serializes annotation parameter default values (KT-59526).
+
+annotation class Ann(val x: Int = 1, val s: String = "k")
+
+fun box(): String {
+    val a1 = Ann(7, "ok")
+    val a2 = Ann(7, "ok")
+    val a3 = Ann(8, "ok")
+
+    val any1: Any = a1
+    val any2: Any = a2
+    val any3: Any = a3
+
+    if (!any1.equals(any2)) return "Fail1"
+    if (any1.hashCode() != any2.hashCode()) return "Fail2"
+    if (any1.equals(any3)) return "Fail3"
+
+    val eq: (Any, Any?) -> Boolean = Any::equals
+    val hc: (Any) -> Int = Any::hashCode
+    val ts: (Any) -> String = Any::toString
+
+    if (!eq(any1, any2)) return "Fail4"
+    if (hc(any1) != hc(any2)) return "Fail5"
+
+    val t = ts(any1)
+    if (t.isEmpty() || !t.startsWith("@") || !t.contains("Ann")) return "Fail6"
+
+    val boundTs = any1::toString
+    val bt = boundTs()
+    if (bt.isEmpty() || !bt.contains("Ann")) return "Fail7"
+
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/annotationEqHc.kt b/compiler/testData/codegen/box/annotations/instances/annotationEqHc.kt
index f49d9bd..6a25409 100644
--- a/compiler/testData/codegen/box/annotations/instances/annotationEqHc.kt
+++ b/compiler/testData/codegen/box/annotations/instances/annotationEqHc.kt
@@ -3,7 +3,7 @@
 
 import kotlin.reflect.KClass
 
-annotation class Bar(val i:Int, val s: String, val f: Float)
+annotation class Bar(val i:Int, val s: String, val f: Float, val d: Double)
 
 annotation class Foo(
     val int: Int,
@@ -17,10 +17,10 @@
 fun makeHC(name: String, value: Any) = (127 * name.hashCode()) xor value.hashCode()
 
 fun box(): String {
-    val foo1 = Foo(42, "foo", arrayOf("a", "b"), intArrayOf(1,2), Bar::class, Bar(10, "bar", Float.NaN))
-    val foo2 = Foo(42, "foo", arrayOf("a", "b"), intArrayOf(1,2), Bar::class, Bar(10, "bar", Float.NaN))
+    val foo1 = Foo(42, "foo", arrayOf("a", "b"), intArrayOf(1,2), Bar::class, Bar(10, "bar", Float.NaN, Double.NaN))
+    val foo2 = Foo(42, "foo", arrayOf("a", "b"), intArrayOf(1,2), Bar::class, Bar(10, "bar", Float.NaN, Double.NaN))
     if (foo1 != foo2) return "Failed equals ${foo1.toString()} ${foo2.toString()}"
-    val barlike = makeHC("i", 10) + makeHC("s", "bar") + makeHC("f", Float.NaN)
+    val barlike = makeHC("i", 10) + makeHC("s", "bar") + makeHC("f", Float.NaN) + makeHC("d", Double.NaN)
     if (barlike != foo1.bar.hashCode()) return "Failed HC1"
     if (barlike != foo2.bar.hashCode()) return "Failed HC2"
     return "OK"
diff --git a/compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt b/compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt
new file mode 100644
index 0000000..cbf6e73
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt
@@ -0,0 +1,26 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+
+// MODULE: lib
+annotation class LibAnn(val i: Int)
+
+inline fun make(i: Int) = LibAnn(i)
+inline fun eqViaAny(a: Any, b: Any) = a.equals(b)
+inline fun hcViaAny(a: Any) = a.hashCode()
+inline fun tsViaAny(a: Any) = a.toString()
+
+// MODULE: main(lib)
+fun box(): String {
+    val a1 = make(1)
+    val a2 = make(1)
+    val a3 = make(2)
+
+    if (!eqViaAny(a1, a2)) return "Fail1"
+    if (hcViaAny(a1) != hcViaAny(a2)) return "Fail2"
+    if (eqViaAny(a1, a3)) return "Fail3"
+
+    val ts = tsViaAny(a1)
+    if (ts.isEmpty() || !ts.contains("LibAnn")) return "Fail4"
+
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/annotationToString.kt b/compiler/testData/codegen/box/annotations/instances/annotationToString.kt
index 2c8a55e..82b102a 100644
--- a/compiler/testData/codegen/box/annotations/instances/annotationToString.kt
+++ b/compiler/testData/codegen/box/annotations/instances/annotationToString.kt
@@ -2,6 +2,7 @@
 // because the latter doesn't yet handle annotation toString implementations properly.
 // Disable test grouping as a workaround:
 // NATIVE_STANDALONE
+// WASM_ALLOW_FQNAME_IN_KCLASS
 
 // WITH_STDLIB
 // LANGUAGE: +InstantiationOfAnnotationClasses
@@ -51,5 +52,15 @@
     val targetNative = targetJVM
         .replace(" (Kotlin reflection is not available)", "")
         .replace("interface", "class")
-    return if (s == targetJS || s == targetJVM || s == targetNative) "OK" else "FAILED, got string $s"
+    val targetWasm = "@test.Anno(s=OK, i=42, f=2.718281828, u=43, e=E0, a=@test.A(b=1, s=1, i=1, f=1.0, d=1.0, l=1, c=c, bool=true), " +
+            "k=class test.A, arr=[], intArr=[1, 2], arrOfE=[E0], arrOfA=[@test.Empty()])"
+
+    val okTargets = setOf(
+        targetJVM,
+        targetJS,
+        targetNative,
+        targetWasm
+    )
+
+    return if (s in okTargets) "OK" else "FAILED, got string $s"
 }
diff --git a/compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.jvm_abi.txt b/compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.jvm_abi.txt
new file mode 100644
index 0000000..994b0bb
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.jvm_abi.txt
@@ -0,0 +1,17 @@
+MODULE main
+	CLASS A.class
+		CLASS METADATA
+			CONSTRUCTOR <init>(Ljava/lang/String;)V
+				Property: class.metadata.constructor.valueParameters
+					K1
+						(t: kotlin/String /* = ... */)
+					K2
+						(t: kotlin/String = "d")
+	CLASS B.class
+		CLASS METADATA
+			CONSTRUCTOR <init>(LA;Lkotlin/Array;)V
+				Property: class.metadata.constructor.valueParameters
+					K1
+						(a: A /* = ... */, arr: kotlin/Array<A> /* = ... */)
+					K2
+						(a: A = A(), arr: kotlin/Array<A> = [])
diff --git a/compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt b/compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt
new file mode 100644
index 0000000..a6d1ff4
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt
@@ -0,0 +1,20 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+// IGNORE_BACKEND: ANDROID
+// JVM_ABI_K1_K2_DIFF: K2 serializes annotation parameter default values (KT-59526).
+
+annotation class A(val t: String = "d")
+annotation class B(
+    val a: A = A(),
+    val arr: Array<A> = emptyArray()
+)
+
+fun box(): String {
+    val s = B().toString()
+
+    if (!(s.contains("@B("))) return "Fail1"
+    if (!(s.contains("a=@A(t=d)"))) return "Fail2"
+    if (!s.contains("arr=[]")) return "Fail3"
+
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt b/compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt
new file mode 100644
index 0000000..2f59ec4
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt
@@ -0,0 +1,20 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+
+annotation class A(val ints: IntArray)
+
+fun box(): String {
+    val x1 = A(intArrayOf(1, 2, 3))
+    val x2 = A(intArrayOf(1, 2, 3))
+    val y  = A(intArrayOf(1, 3, 2))
+
+    val ax1: Any = x1
+    val ax2: Any = x2
+    val ay:  Any = y
+
+    if (!ax1.equals(ax2)) return "Fail1"
+    if (ax1.hashCode() != ax2.hashCode()) return "Fail2"
+    if (ax1.equals(ay)) return "Fail3"
+
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt b/compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt
new file mode 100644
index 0000000..517e0de
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt
@@ -0,0 +1,25 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+
+import kotlin.reflect.KClass
+
+class C
+annotation class KCls(
+    val k1: KClass<*>,
+    val k2: KClass<*>,
+    val ks: Array<KClass<*>>
+)
+
+fun box(): String {
+    val x = KCls(Int::class, IntArray::class, arrayOf(String::class, C::class))
+    val y = KCls(Int::class, IntArray::class, arrayOf(String::class, C::class))
+    val z = KCls(Int::class, IntArray::class, arrayOf(C::class, String::class))
+
+    if (x != y) return "Fail1"
+
+    if (x.hashCode() != y.hashCode()) return "Fail3"
+
+    if (x == z) return "Fail2"
+
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt b/compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt
new file mode 100644
index 0000000..56890dd
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt
@@ -0,0 +1,11 @@
+// IGNORE_BACKEND_K1: ANY
+
+annotation class A(val i: Int)
+annotation class B(val i: Int)
+
+fun box(): String {
+    val a = A(1)
+    val b = B(1)
+    if (a == b) return "Fail"
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/differentOrder.kt b/compiler/testData/codegen/box/annotations/instances/differentOrder.kt
new file mode 100644
index 0000000..a406a2e
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/differentOrder.kt
@@ -0,0 +1,10 @@
+// TARGET_BACKEND: JVM_IR, WASM
+
+annotation class C(val i: Int, val s: String, val arr: IntArray)
+
+fun box(): String {
+    val a = C(1, "x", intArrayOf(1,2,3))
+    val b = C(i = 1, arr = intArrayOf(1,2,3), s = "x")
+    if (a != b) return "Fail"
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt b/compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt
new file mode 100644
index 0000000..639109b
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt
@@ -0,0 +1,23 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+
+enum class E { A, B }
+
+annotation class AClass(val k: kotlin.reflect.KClass<*>, val e: E)
+
+fun box(): String {
+    val a1 = AClass(String::class, E.B)
+    val a2 = AClass(String::class, E.B)
+    val a3 = AClass(Int::class, E.B)
+    val a4 = AClass(String::class, E.A)
+
+    if (a1 != a2) return "Fail1"
+    if (a1.hashCode() != a2.hashCode()) return "Fail2"
+    if (a1 == a3) return "Fail3"
+    if (a1 == a4) return "Fail4"
+
+    val ts = a1.toString()
+    if (ts.isEmpty() || !ts.contains("AClass(")) return "Fail5"
+
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/enumArray.kt b/compiler/testData/codegen/box/annotations/instances/enumArray.kt
new file mode 100644
index 0000000..0be8d63
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/enumArray.kt
@@ -0,0 +1,21 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+
+enum class E { A, B, C }
+
+annotation class WithEnum(
+    val e: E,
+    val es: Array<E>
+)
+
+fun box(): String {
+    val x = WithEnum(E.B, arrayOf(E.A, E.C))
+    val y = WithEnum(E.B, arrayOf(E.A, E.C))
+    val z = WithEnum(E.B, arrayOf(E.C, E.A))
+
+    if (x != y) return "Fail1"
+    if (x == z) return "Fail2"
+    if (x.hashCode() != y.hashCode()) return "Fail3"
+
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/innerAnnotationInstantiation.kt b/compiler/testData/codegen/box/annotations/instances/innerAnnotationInstantiation.kt
index f3f0c12..4d750c1 100644
--- a/compiler/testData/codegen/box/annotations/instances/innerAnnotationInstantiation.kt
+++ b/compiler/testData/codegen/box/annotations/instances/innerAnnotationInstantiation.kt
@@ -1,5 +1,5 @@
-// TARGET_BACKEND: JVM_IR
-// IGNORE_BACKEND_K1: JVM_IR
+// TARGET_BACKEND: JVM_IR, WASM
+// IGNORE_BACKEND_K1: JVM_IR, WASM
 // ISSUE: KT-54931
 
 class Container {
diff --git a/compiler/testData/codegen/box/annotations/instances/instanceEquality.kt b/compiler/testData/codegen/box/annotations/instances/instanceEquality.kt
new file mode 100644
index 0000000..6677599
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/instanceEquality.kt
@@ -0,0 +1,58 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+// IGNORE_BACKEND_K1: ANY
+
+annotation class A1
+annotation class A2
+
+fun interface I {
+    fun run(): A1
+}
+
+class E {
+    fun insideClass(): A1 = A1()
+    fun insideLambda(): A1 = run { A1() }
+    fun insideSAM(): A1 = I { A1() }.run()
+}
+
+class G {
+    fun insideClassAgain(): A1 = A1()
+}
+
+fun outsideClass(): A2 = A2()
+
+fun box(): String {
+    val e = E()
+
+    val aFromClass = e.insideClass()
+    val aFromLambda = e.insideLambda()
+    val aFromSam = e.insideSAM()
+    val aFromAnother = G().insideClassAgain()
+    val all = listOf(aFromClass, aFromLambda, aFromSam, aFromAnother)
+
+
+    for (x in all) for (y in all) {
+        if (x != y) return "Fail1"
+    }
+
+    val h = all.first().hashCode()
+    if (all.any { it.hashCode() != h }) return "Fail2"
+
+    val b = outsideClass()
+    if (all.first() == b) return "Fail3"
+
+    val set: MutableSet<Any> = hashSetOf(all.first() as Any)
+    if (set.contains(b as Any)) return "Fail4"
+    set.add(b)
+    if (set.size != 2) return "Fail5"
+
+    val map: MutableMap<Any, String> = hashMapOf(all.first() as Any to "ok")
+    if (map[b] != null) return "Fail6"
+
+    val ts = all.first().toString()
+    if (ts.isEmpty() || !ts.contains("A1")) {
+        return "Fail7"
+    }
+
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/mixedArray.kt b/compiler/testData/codegen/box/annotations/instances/mixedArray.kt
new file mode 100644
index 0000000..e9e1bc3
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/mixedArray.kt
@@ -0,0 +1,47 @@
+// TARGET_BACKEND: JVM_IR, WASM
+
+import kotlin.reflect.KClass
+
+enum class E { X, Y }
+
+annotation class C(val id: Int)
+
+annotation class Big(
+    val ss: Array<String>,
+    val ia: IntArray,
+    val es: Array<E>,
+    val ks: Array<KClass<*>>,
+    val asA: Array<C>
+)
+
+class D
+
+fun box(): String {
+    val b1 = Big(
+        ss = arrayOf("a","b"),
+        ia = intArrayOf(1,2),
+        es = arrayOf(E.X, E.Y),
+        ks = arrayOf(String::class, D::class),
+        asA = arrayOf(C(1), C(2))
+    )
+    val b2 = Big(
+        ss = arrayOf("a","b"),
+        ia = intArrayOf(1,2),
+        es = arrayOf(E.X, E.Y),
+        ks = arrayOf(String::class, D::class),
+        asA = arrayOf(C(1), C(2))
+    )
+
+    val b3 = Big(
+        ss = arrayOf("a","b"),
+        ia = intArrayOf(1,2),
+        es = arrayOf(E.Y, E.X),
+        ks = arrayOf(String::class, D::class),
+        asA = arrayOf(C(1), C(2))
+    )
+
+    if (b1 != b2) return "Failed"
+    if (b1 == b3) return "Failed"
+
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/naNAndZero.kt b/compiler/testData/codegen/box/annotations/instances/naNAndZero.kt
new file mode 100644
index 0000000..cb5c054
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/naNAndZero.kt
@@ -0,0 +1,33 @@
+// TARGET_BACKEND: JVM_IR, WASM
+
+annotation class A(
+    val f: Float,
+    val d: Double,
+    val fa: FloatArray,
+    val da: DoubleArray
+)
+
+fun box(): String {
+    val a = A(
+        Float.NaN, Double.NaN,
+        floatArrayOf(Float.NaN, -0.0f, 0.0f),
+        doubleArrayOf(Double.NaN, -0.0, 0.0)
+    )
+    val b = A(
+        Float.NaN, Double.NaN,
+        floatArrayOf(Float.NaN, -0.0f, 0.0f),
+        doubleArrayOf(Double.NaN, -0.0, 0.0)
+    )
+    if (a != b) return "Fail1"
+
+    val c = A(
+        Float.NaN, Double.NaN,
+        floatArrayOf(Float.NaN, 0.0f, -0.0f),
+        doubleArrayOf(Double.NaN, 0.0, -0.0)
+    )
+    if (a == c) return "Fail2"
+
+    if (a.hashCode() != b.hashCode()) return "Fail3"
+
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/nested.jvm_abi.txt b/compiler/testData/codegen/box/annotations/instances/nested.jvm_abi.txt
new file mode 100644
index 0000000..30ac99e
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/nested.jvm_abi.txt
@@ -0,0 +1,9 @@
+MODULE main
+	CLASS AnnArrays.class
+		CLASS METADATA
+			CONSTRUCTOR <init>([ILkotlin/Array;LInner;)V
+				Property: class.metadata.constructor.valueParameters
+					K1
+						(ints: kotlin/IntArray /* = ... */, strs: kotlin/Array<kotlin/String> /* = ... */, inn: Inner /* = ... */)
+					K2
+						(ints: kotlin/IntArray = [], strs: kotlin/Array<kotlin/String> = [], inn: Inner = Inner(v = "x"))
diff --git a/compiler/testData/codegen/box/annotations/instances/nested.kt b/compiler/testData/codegen/box/annotations/instances/nested.kt
new file mode 100644
index 0000000..5928ac0
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/nested.kt
@@ -0,0 +1,26 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+// JVM_ABI_K1_K2_DIFF: K2 serializes annotation parameter default values (KT-59526).
+
+annotation class Inner(val v: String)
+
+annotation class AnnArrays(
+    val ints: IntArray = intArrayOf(),
+    val strs: Array<String> = [],
+    val inn: Inner = Inner("x")
+)
+
+fun box(): String {
+    val a1 = AnnArrays(ints = intArrayOf(1, 2, 3), strs = arrayOf("a", "b"), inn = Inner("qq"))
+    val a2 = AnnArrays(ints = intArrayOf(1, 2, 3), strs = arrayOf("a", "b"), inn = Inner("qq"))
+    val a3 = AnnArrays(ints = intArrayOf(3, 2, 1), strs = arrayOf("a", "b"), inn = Inner("qq"))
+
+    if (a1 != a2) return "Fail1"
+    if (a1.hashCode() != a2.hashCode()) return "Fail2"
+    if (a1 == a3) return "Fail3"
+
+    val ts = a1.toString()
+    if (ts.isEmpty() || !ts.contains("AnnArrays(")) return "Fail4"
+
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/nestedDefaults.jvm_abi.txt b/compiler/testData/codegen/box/annotations/instances/nestedDefaults.jvm_abi.txt
new file mode 100644
index 0000000..cfe49cf
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/nestedDefaults.jvm_abi.txt
@@ -0,0 +1,9 @@
+MODULE main
+	CLASS Inner.class
+		CLASS METADATA
+			CONSTRUCTOR <init>(ILjava/lang/String;)V
+				Property: class.metadata.constructor.valueParameters
+					K1
+						(i: kotlin/Int /* = ... */, s: kotlin/String /* = ... */)
+					K2
+						(i: kotlin/Int = 1, s: kotlin/String = "")
diff --git a/compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt b/compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt
new file mode 100644
index 0000000..97fbe34
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt
@@ -0,0 +1,44 @@
+// TARGET_BACKEND: JVM_IR, WASM
+// WITH_STDLIB
+// JVM_ABI_K1_K2_DIFF: K2 serializes annotation parameter default values (KT-59526).
+
+
+annotation class Inner(val i: Int = 1, val s: String = "")
+annotation class Outer(
+    val one: Inner,
+    val many: Array<Inner>
+)
+
+private fun valueHash(v: Any): Int = when (v) {
+    is BooleanArray -> v.contentHashCode()
+    is ByteArray -> v.contentHashCode()
+    is CharArray -> v.contentHashCode()
+    is ShortArray -> v.contentHashCode()
+    is IntArray -> v.contentHashCode()
+    is LongArray -> v.contentHashCode()
+    is FloatArray -> v.contentHashCode()
+    is DoubleArray -> v.contentHashCode()
+    is Array<*> -> v.contentHashCode()
+    else -> v.hashCode()
+}
+
+private fun contrib(name: String, v: Any): Int =
+    (127 * name.hashCode()) xor valueHash(v)
+
+fun box(): String {
+    val a1 = Outer(Inner(), arrayOf(Inner(1,"x"), Inner(2,"y")))
+    val a2 = Outer(Inner(i = 1), arrayOf(Inner(1,"x"), Inner(2,"y")))
+    val a3 = Outer(Inner(s = ""), arrayOf(Inner(1,"x"), Inner(2,"y")))
+    val b  = Outer(Inner(i = 8), arrayOf(Inner(1,"x"), Inner(2,"y")))
+
+    if (a1 != a2 || a1 != a3) return "Failed1"
+    if (a1 == b) return "Failed2"
+
+    val expected =
+        contrib("one", a1.one) +
+                contrib("many", a1.many)
+
+    if (a1.hashCode() != expected) return "Failed3"
+
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt b/compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt
new file mode 100644
index 0000000..0d52dee
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt
@@ -0,0 +1,27 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+
+@kotlin.annotation.Repeatable
+annotation class Rep(val v: Int)
+
+annotation class Holder(val reps: Array<Rep>)
+
+fun box(): String {
+    val r1 = Rep(1)
+    val r2 = Rep(1)
+    val r3 = Rep(2)
+
+    if (r1 != r2) return "Fail1"
+    if (r1.hashCode() != r2.hashCode()) return "Fail2"
+    if (r1 == r3) return "Fail3"
+
+    val h1 = Holder(arrayOf(Rep(1), Rep(2)))
+    val h2 = Holder(arrayOf(Rep(1), Rep(2)))
+    val h3 = Holder(arrayOf(Rep(2), Rep(1)))
+
+    if (h1 != h2) return "Fail4"
+    if (h1.hashCode() != h2.hashCode()) return "Fail5"
+    if (h1 == h3) return "Fail6"
+
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.jvm_abi.txt b/compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.jvm_abi.txt
new file mode 100644
index 0000000..2f032d0
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.jvm_abi.txt
@@ -0,0 +1,9 @@
+MODULE main
+	CLASS AnnAlias.class
+		CLASS METADATA
+			CONSTRUCTOR <init>(Lkotlin/Array;Lkotlin/reflect/KClass;)V
+				Property: class.metadata.constructor.valueParameters
+					K1
+						(s: kotlin/Array<kotlin/String /* = Str^ */> /* = StrArr^ */, k: kotlin/reflect/KClass<*> /* = ... */)
+					K2
+						(s: kotlin/Array<kotlin/String /* = Str^ */> /* = StrArr^ */, k: kotlin/reflect/KClass<*> = kotlin/Any::class)
diff --git a/compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt b/compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt
new file mode 100644
index 0000000..5329e68
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt
@@ -0,0 +1,23 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+// JVM_ABI_K1_K2_DIFF: K2 serializes annotation parameter default values (KT-59526).
+
+typealias Str = String
+typealias StrArr = Array<Str>
+
+annotation class AnnAlias(val s: StrArr, val k: kotlin.reflect.KClass<*> = Any::class)
+
+fun box(): String {
+    val a1 = AnnAlias(arrayOf("a", "b"), String::class)
+    val a2 = AnnAlias(arrayOf("a", "b"), String::class)
+    val a3 = AnnAlias(arrayOf("a", "b"), Int::class)
+
+    if (a1 != a2) return "Fail1"
+    if (a1.hashCode() != a2.hashCode()) return "Fail2"
+    if (a1 == a3) return "Fail3"
+
+    val ts = a1.toString()
+    if (ts.isEmpty() || !ts.contains("AnnAlias(")) return "Fail4"
+
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt b/compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt
new file mode 100644
index 0000000..c3bb459
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt
@@ -0,0 +1,44 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+
+annotation class AnnBool(val xs: BooleanArray)
+annotation class AnnUnsigned(
+    val ub: UByteArray,
+    val us: UShortArray,
+    val ui: UIntArray,
+    val ul: ULongArray
+)
+
+fun box(): String {
+    val b1 = AnnBool(booleanArrayOf(true, false, true))
+    val b2 = AnnBool(booleanArrayOf(true, false, true))
+    val b3 = AnnBool(booleanArrayOf(true, true, false))
+    if (b1 != b2) return "Fail1"
+    if (b1.hashCode() != b2.hashCode()) return "Fail2"
+    if (b1 == b3) return "Fail3"
+
+    val u1 = AnnUnsigned(
+        ub = ubyteArrayOf(1u, 2u),
+        us = ushortArrayOf(1u, 2u),
+        ui = uintArrayOf(1u, 2u),
+        ul = ulongArrayOf(1u, 2u)
+    )
+    val u2 = AnnUnsigned(
+        ub = ubyteArrayOf(1u, 2u),
+        us = ushortArrayOf(1u, 2u),
+        ui = uintArrayOf(1u, 2u),
+        ul = ulongArrayOf(1u, 2u)
+    )
+    val u3 = AnnUnsigned(
+        ub = ubyteArrayOf(2u, 1u),
+        us = ushortArrayOf(2u, 1u),
+        ui = uintArrayOf(2u, 1u),
+        ul = ulongArrayOf(2u, 1u)
+    )
+
+    if (u1 != u2) return "Fail4"
+    if (u1.hashCode() != u2.hashCode()) return "Fail5"
+    if (u1 == u3) return "Fail6"
+
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/withDefaults.jvm_abi.txt b/compiler/testData/codegen/box/annotations/instances/withDefaults.jvm_abi.txt
new file mode 100644
index 0000000..48d2ad8
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/withDefaults.jvm_abi.txt
@@ -0,0 +1,9 @@
+MODULE main
+	CLASS C.class
+		CLASS METADATA
+			CONSTRUCTOR <init>(ILjava/lang/String;[ILE;)V
+				Property: class.metadata.constructor.valueParameters
+					K1
+						(i: kotlin/Int /* = ... */, s: kotlin/String /* = ... */, a: kotlin/IntArray /* = ... */, e: E /* = ... */)
+					K2
+						(i: kotlin/Int = 1, s: kotlin/String = "", a: kotlin/IntArray = [], e: E = E.A)
diff --git a/compiler/testData/codegen/box/annotations/instances/withDefaults.kt b/compiler/testData/codegen/box/annotations/instances/withDefaults.kt
new file mode 100644
index 0000000..ca6a48e
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/withDefaults.kt
@@ -0,0 +1,19 @@
+// TARGET_BACKEND: JVM_IR, WASM
+// JVM_ABI_K1_K2_DIFF: K2 serializes annotation parameter default values (KT-59526).
+
+enum class E { A, B, C }
+
+annotation class C(
+    val i: Int = 1,
+    val s: String = "",
+    val a: IntArray = intArrayOf(),
+    val e: E = E.A
+)
+
+fun box(): String {
+    val a = C()
+    val b = C(i = 1, s = "", a = intArrayOf(), e = E.A)
+    if (a != b) return "Fail1"
+    if (a.hashCode() != b.hashCode()) return "Fail2"
+    return "OK"
+}
\ No newline at end of file
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java
index b05ad50..9795174 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java
@@ -546,6 +546,18 @@
       }
 
       @Test
+      @TestMetadata("annotationAnnotationParam.kt")
+      public void testAnnotationAnnotationParam() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+      }
+
+      @Test
+      @TestMetadata("annotationAnyDispatch.kt")
+      public void testAnnotationAnyDispatch() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+      }
+
+      @Test
       @TestMetadata("annotationEnclosingName.kt")
       public void testAnnotationEnclosingName() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -564,6 +576,12 @@
       }
 
       @Test
+      @TestMetadata("annotationInlineMultiModule.kt")
+      public void testAnnotationInlineMultiModule() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+      }
+
+      @Test
       @TestMetadata("annotationInstances.kt")
       public void testAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -600,6 +618,12 @@
       }
 
       @Test
+      @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+      public void testAnnotationToStringDefaultsAndEmptyArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+      }
+
+      @Test
       @TestMetadata("annotationType.kt")
       public void testAnnotationType() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -624,6 +648,42 @@
       }
 
       @Test
+      @TestMetadata("arrayContentEqAny.kt")
+      public void testArrayContentEqAny() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+      }
+
+      @Test
+      @TestMetadata("arraysAndKClass.kt")
+      public void testArraysAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("differentAnnotationTypes.kt")
+      public void testDifferentAnnotationTypes() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+      }
+
+      @Test
+      @TestMetadata("differentOrder.kt")
+      public void testDifferentOrder() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+      }
+
+      @Test
+      @TestMetadata("enumAndKClass.kt")
+      public void testEnumAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("enumArray.kt")
+      public void testEnumArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+      }
+
+      @Test
       @TestMetadata("inInlineFunction.kt")
       public void testInInlineFunction() {
         runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -636,6 +696,12 @@
       }
 
       @Test
+      @TestMetadata("instanceEquality.kt")
+      public void testInstanceEquality() {
+        runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+      }
+
+      @Test
       @TestMetadata("javaAnnotation.kt")
       public void testJavaAnnotation() {
         runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -660,6 +726,12 @@
       }
 
       @Test
+      @TestMetadata("mixedArray.kt")
+      public void testMixedArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+      }
+
+      @Test
       @TestMetadata("multifileEqHc.kt")
       public void testMultifileEqHc() {
         runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -690,22 +762,64 @@
       }
 
       @Test
+      @TestMetadata("naNAndZero.kt")
+      public void testNaNAndZero() {
+        runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+      }
+
+      @Test
+      @TestMetadata("nested.kt")
+      public void testNested() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+      }
+
+      @Test
       @TestMetadata("nestedAnnotationInstances.kt")
       public void testNestedAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
       }
 
       @Test
+      @TestMetadata("nestedDefaults.kt")
+      public void testNestedDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+      }
+
+      @Test
       @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
       public void testRearrangedArgumentsInAnnotationCall() {
         runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
       }
 
       @Test
+      @TestMetadata("repeatableInstantiation.kt")
+      public void testRepeatableInstantiation() {
+        runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+      }
+
+      @Test
+      @TestMetadata("typeAliasesAndGenericsInterop.kt")
+      public void testTypeAliasesAndGenericsInterop() {
+        runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+      }
+
+      @Test
+      @TestMetadata("unsignedAndBooleanArrays.kt")
+      public void testUnsignedAndBooleanArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+      }
+
+      @Test
       @TestMetadata("varargInAnnotationParameterInstantiation.kt")
       public void testVarargInAnnotationParameterInstantiation() {
         runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
       }
+
+      @Test
+      @TestMetadata("withDefaults.kt")
+      public void testWithDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+      }
     }
 
     @Nested
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 74e4113..dd6b77b 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
@@ -546,6 +546,18 @@
       }
 
       @Test
+      @TestMetadata("annotationAnnotationParam.kt")
+      public void testAnnotationAnnotationParam() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+      }
+
+      @Test
+      @TestMetadata("annotationAnyDispatch.kt")
+      public void testAnnotationAnyDispatch() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+      }
+
+      @Test
       @TestMetadata("annotationEnclosingName.kt")
       public void testAnnotationEnclosingName() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -564,6 +576,12 @@
       }
 
       @Test
+      @TestMetadata("annotationInlineMultiModule.kt")
+      public void testAnnotationInlineMultiModule() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+      }
+
+      @Test
       @TestMetadata("annotationInstances.kt")
       public void testAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -600,6 +618,12 @@
       }
 
       @Test
+      @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+      public void testAnnotationToStringDefaultsAndEmptyArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+      }
+
+      @Test
       @TestMetadata("annotationType.kt")
       public void testAnnotationType() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -624,6 +648,42 @@
       }
 
       @Test
+      @TestMetadata("arrayContentEqAny.kt")
+      public void testArrayContentEqAny() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+      }
+
+      @Test
+      @TestMetadata("arraysAndKClass.kt")
+      public void testArraysAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("differentAnnotationTypes.kt")
+      public void testDifferentAnnotationTypes() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+      }
+
+      @Test
+      @TestMetadata("differentOrder.kt")
+      public void testDifferentOrder() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+      }
+
+      @Test
+      @TestMetadata("enumAndKClass.kt")
+      public void testEnumAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("enumArray.kt")
+      public void testEnumArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+      }
+
+      @Test
       @TestMetadata("inInlineFunction.kt")
       public void testInInlineFunction() {
         runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -636,6 +696,12 @@
       }
 
       @Test
+      @TestMetadata("instanceEquality.kt")
+      public void testInstanceEquality() {
+        runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+      }
+
+      @Test
       @TestMetadata("javaAnnotation.kt")
       public void testJavaAnnotation() {
         runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -660,6 +726,12 @@
       }
 
       @Test
+      @TestMetadata("mixedArray.kt")
+      public void testMixedArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+      }
+
+      @Test
       @TestMetadata("multifileEqHc.kt")
       public void testMultifileEqHc() {
         runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -690,22 +762,64 @@
       }
 
       @Test
+      @TestMetadata("naNAndZero.kt")
+      public void testNaNAndZero() {
+        runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+      }
+
+      @Test
+      @TestMetadata("nested.kt")
+      public void testNested() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+      }
+
+      @Test
       @TestMetadata("nestedAnnotationInstances.kt")
       public void testNestedAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
       }
 
       @Test
+      @TestMetadata("nestedDefaults.kt")
+      public void testNestedDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+      }
+
+      @Test
       @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
       public void testRearrangedArgumentsInAnnotationCall() {
         runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
       }
 
       @Test
+      @TestMetadata("repeatableInstantiation.kt")
+      public void testRepeatableInstantiation() {
+        runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+      }
+
+      @Test
+      @TestMetadata("typeAliasesAndGenericsInterop.kt")
+      public void testTypeAliasesAndGenericsInterop() {
+        runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+      }
+
+      @Test
+      @TestMetadata("unsignedAndBooleanArrays.kt")
+      public void testUnsignedAndBooleanArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+      }
+
+      @Test
       @TestMetadata("varargInAnnotationParameterInstantiation.kt")
       public void testVarargInAnnotationParameterInstantiation() {
         runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
       }
+
+      @Test
+      @TestMetadata("withDefaults.kt")
+      public void testWithDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+      }
     }
 
     @Nested
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java
index e545b5d..a4a329e 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java
@@ -546,6 +546,18 @@
       }
 
       @Test
+      @TestMetadata("annotationAnnotationParam.kt")
+      public void testAnnotationAnnotationParam() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+      }
+
+      @Test
+      @TestMetadata("annotationAnyDispatch.kt")
+      public void testAnnotationAnyDispatch() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+      }
+
+      @Test
       @TestMetadata("annotationEnclosingName.kt")
       public void testAnnotationEnclosingName() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -564,6 +576,12 @@
       }
 
       @Test
+      @TestMetadata("annotationInlineMultiModule.kt")
+      public void testAnnotationInlineMultiModule() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+      }
+
+      @Test
       @TestMetadata("annotationInstances.kt")
       public void testAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -600,6 +618,12 @@
       }
 
       @Test
+      @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+      public void testAnnotationToStringDefaultsAndEmptyArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+      }
+
+      @Test
       @TestMetadata("annotationType.kt")
       public void testAnnotationType() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -624,6 +648,42 @@
       }
 
       @Test
+      @TestMetadata("arrayContentEqAny.kt")
+      public void testArrayContentEqAny() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+      }
+
+      @Test
+      @TestMetadata("arraysAndKClass.kt")
+      public void testArraysAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("differentAnnotationTypes.kt")
+      public void testDifferentAnnotationTypes() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+      }
+
+      @Test
+      @TestMetadata("differentOrder.kt")
+      public void testDifferentOrder() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+      }
+
+      @Test
+      @TestMetadata("enumAndKClass.kt")
+      public void testEnumAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("enumArray.kt")
+      public void testEnumArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+      }
+
+      @Test
       @TestMetadata("inInlineFunction.kt")
       public void testInInlineFunction() {
         runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -636,6 +696,12 @@
       }
 
       @Test
+      @TestMetadata("instanceEquality.kt")
+      public void testInstanceEquality() {
+        runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+      }
+
+      @Test
       @TestMetadata("javaAnnotation.kt")
       public void testJavaAnnotation() {
         runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -660,6 +726,12 @@
       }
 
       @Test
+      @TestMetadata("mixedArray.kt")
+      public void testMixedArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+      }
+
+      @Test
       @TestMetadata("multifileEqHc.kt")
       public void testMultifileEqHc() {
         runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -690,22 +762,64 @@
       }
 
       @Test
+      @TestMetadata("naNAndZero.kt")
+      public void testNaNAndZero() {
+        runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+      }
+
+      @Test
+      @TestMetadata("nested.kt")
+      public void testNested() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+      }
+
+      @Test
       @TestMetadata("nestedAnnotationInstances.kt")
       public void testNestedAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
       }
 
       @Test
+      @TestMetadata("nestedDefaults.kt")
+      public void testNestedDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+      }
+
+      @Test
       @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
       public void testRearrangedArgumentsInAnnotationCall() {
         runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
       }
 
       @Test
+      @TestMetadata("repeatableInstantiation.kt")
+      public void testRepeatableInstantiation() {
+        runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+      }
+
+      @Test
+      @TestMetadata("typeAliasesAndGenericsInterop.kt")
+      public void testTypeAliasesAndGenericsInterop() {
+        runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+      }
+
+      @Test
+      @TestMetadata("unsignedAndBooleanArrays.kt")
+      public void testUnsignedAndBooleanArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+      }
+
+      @Test
       @TestMetadata("varargInAnnotationParameterInstantiation.kt")
       public void testVarargInAnnotationParameterInstantiation() {
         runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
       }
+
+      @Test
+      @TestMetadata("withDefaults.kt")
+      public void testWithDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+      }
     }
 
     @Nested
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirSerializeCompileKotlinAgainstInlineKotlinTestWithInlineScopesGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirSerializeCompileKotlinAgainstInlineKotlinTestWithInlineScopesGenerated.java
index 66e09d4..8636f34 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirSerializeCompileKotlinAgainstInlineKotlinTestWithInlineScopesGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirSerializeCompileKotlinAgainstInlineKotlinTestWithInlineScopesGenerated.java
@@ -548,6 +548,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested
diff --git a/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateCompilerArgumentsCopy.kt b/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateCompilerArgumentsCopy.kt
index f107076..44a7133 100644
--- a/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateCompilerArgumentsCopy.kt
+++ b/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateCompilerArgumentsCopy.kt
@@ -68,7 +68,7 @@
             val classifier: KClassifier = type.classifier!!
             return when {
                 classifier is KClass<*> && classifier == List::class -> isSupportedImmutable(type.arguments.single().type!!)
-                classifier == InternalArgument::class -> true
+                classifier == ManualLanguageFeatureSetting::class -> true
                 classifier == Boolean::class -> true
                 classifier == Int::class -> true
                 classifier == String::class -> true
@@ -212,4 +212,4 @@
 fun main() {
     generateCompilerArgumentsCopy(::getPrinterToFile)
     generateConfigureLanguageFeatures(::getPrinterToFile)
-}
\ No newline at end of file
+}
diff --git a/jps/jps-common/src/org/jetbrains/kotlin/arguments/CompilerArgumentsContentProspector.kt b/jps/jps-common/src/org/jetbrains/kotlin/arguments/CompilerArgumentsContentProspector.kt
index 7896944..9114cf3 100644
--- a/jps/jps-common/src/org/jetbrains/kotlin/arguments/CompilerArgumentsContentProspector.kt
+++ b/jps/jps-common/src/org/jetbrains/kotlin/arguments/CompilerArgumentsContentProspector.kt
@@ -3,7 +3,7 @@
 
 import org.jetbrains.kotlin.cli.common.arguments.Argument
 import org.jetbrains.kotlin.cli.common.arguments.CommonToolArguments
-import org.jetbrains.kotlin.cli.common.arguments.InternalArgument
+import org.jetbrains.kotlin.cli.common.arguments.ManualLanguageFeatureSetting
 import org.jetbrains.kotlin.utils.addToStdlib.safeAs
 import kotlin.reflect.KClass
 import kotlin.reflect.KProperty1
@@ -42,6 +42,6 @@
 
     val freeArgsProperty: KProperty1<in CommonToolArguments, List<String>>
         get() = CommonToolArguments::freeArgs
-    val internalArgumentsProperty: KProperty1<in CommonToolArguments, List<InternalArgument>>
+    val internalArgumentsProperty: KProperty1<in CommonToolArguments, List<ManualLanguageFeatureSetting>>
         get() = CommonToolArguments::internalArguments
-}
\ No newline at end of file
+}
diff --git a/jps/jps-common/src/org/jetbrains/kotlin/arguments/CompilerArgumentsDeserializer.kt b/jps/jps-common/src/org/jetbrains/kotlin/arguments/CompilerArgumentsDeserializer.kt
index ad7f48c..995bea9 100644
--- a/jps/jps-common/src/org/jetbrains/kotlin/arguments/CompilerArgumentsDeserializer.kt
+++ b/jps/jps-common/src/org/jetbrains/kotlin/arguments/CompilerArgumentsDeserializer.kt
@@ -5,8 +5,8 @@
 import org.jdom.Text
 import org.jetbrains.kotlin.cli.common.arguments.ArgumentParseErrors
 import org.jetbrains.kotlin.cli.common.arguments.CommonToolArguments
-import org.jetbrains.kotlin.cli.common.arguments.InternalArgument
 import org.jetbrains.kotlin.cli.common.arguments.LanguageSettingsParser
+import org.jetbrains.kotlin.cli.common.arguments.ManualLanguageFeatureSetting
 import org.jetbrains.kotlin.utils.addToStdlib.safeAs
 import java.io.File
 import kotlin.reflect.KMutableProperty1
@@ -48,7 +48,7 @@
 
         val internalArguments = readElementsList(element, INTERNAL_ARGS_ROOT_ELEMENTS_NAME, INTERNAL_ARGS_ELEMENT_NAME)
             .mapNotNull { parseInternalArgument(it) }
-        CompilerArgumentsContentProspector.internalArgumentsProperty.safeAs<KMutableProperty1<T, List<InternalArgument>>>()
+        CompilerArgumentsContentProspector.internalArgumentsProperty.safeAs<KMutableProperty1<T, List<ManualLanguageFeatureSetting>>>()
             ?.set(compilerArguments, internalArguments)
     }
 
@@ -101,9 +101,9 @@
             }
         }
 
-        private fun parseInternalArgument(argument: String): InternalArgument? {
-            val parser = LanguageSettingsParser()
+        private fun parseInternalArgument(argument: String): ManualLanguageFeatureSetting? {
+            val parser = LanguageSettingsParser
             return parser.parseInternalArgument(argument, ArgumentParseErrors())
         }
     }
-}
\ No newline at end of file
+}
diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/AbstractIncrementalJpsTest.kt b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/AbstractIncrementalJpsTest.kt
index e1b1776..24d7426 100644
--- a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/AbstractIncrementalJpsTest.kt
+++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/AbstractIncrementalJpsTest.kt
@@ -159,7 +159,8 @@
 
     private fun build(
         name: String?,
-        scope: CompileScopeTestBuilder = CompileScopeTestBuilder.make().allModules()
+        needUpdateArguments: Boolean,
+        scope: CompileScopeTestBuilder = CompileScopeTestBuilder.make().allModules(),
     ): MakeResult {
         val workDirPath = FileUtil.toSystemIndependentName(workDir.absolutePath)
 
@@ -181,8 +182,10 @@
             val buildResult = BuildResult()
             builder.addMessageHandler(buildResult)
             val finalScope = scope.build()
-            projectDescriptor.project.kotlinCommonCompilerArguments = projectDescriptor.project.kotlinCommonCompilerArguments.apply {
-                updateCommandLineArguments(this)
+            if (needUpdateArguments) {
+                projectDescriptor.project.kotlinCommonCompilerArguments = projectDescriptor.project.kotlinCommonCompilerArguments.apply {
+                    updateCommandLineArguments(this)
+                }
             }
 
             builder.build(finalScope, false)
@@ -220,7 +223,7 @@
     }
 
     private fun initialMake(): MakeResult {
-        val makeResult = build(null)
+        val makeResult = build(null, needUpdateArguments = true)
 
         val initBuildLogFile = File(testDataDir, "init-build.log")
         if (initBuildLogFile.exists()) {
@@ -232,12 +235,12 @@
         return makeResult
     }
 
-    private fun make(name: String?): MakeResult {
-        return build(name)
+    private fun incrementallyMake(name: String?): MakeResult {
+        return build(name, needUpdateArguments = false)
     }
 
     private fun rebuild(): MakeResult {
-        return build(null, CompileScopeTestBuilder.rebuild().allModules())
+        return build(null, needUpdateArguments = true, CompileScopeTestBuilder.rebuild().allModules())
     }
 
     protected open fun updateCommandLineArguments(arguments: CommonCompilerArguments) {
@@ -394,7 +397,7 @@
             }
 
             val name = modificationNames?.getOrNull(index)
-            val makeResult = make(name)
+            val makeResult = incrementallyMake(name)
             results.add(makeResult)
         }
         return results
diff --git a/js/js.tests/klib-compatibility/tests-gen/org/jetbrains/kotlin/js/test/klib/CustomJsCompilerFirstPhaseTestGenerated.java b/js/js.tests/klib-compatibility/tests-gen/org/jetbrains/kotlin/js/test/klib/CustomJsCompilerFirstPhaseTestGenerated.java
index 8428b52..8a76045 100644
--- a/js/js.tests/klib-compatibility/tests-gen/org/jetbrains/kotlin/js/test/klib/CustomJsCompilerFirstPhaseTestGenerated.java
+++ b/js/js.tests/klib-compatibility/tests-gen/org/jetbrains/kotlin/js/test/klib/CustomJsCompilerFirstPhaseTestGenerated.java
@@ -554,6 +554,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -572,6 +584,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -608,6 +626,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -632,6 +656,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -644,6 +704,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -668,6 +734,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -698,22 +770,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested
diff --git a/js/js.tests/klib-compatibility/tests-gen/org/jetbrains/kotlin/js/test/klib/CustomJsCompilerSecondPhaseTestGenerated.java b/js/js.tests/klib-compatibility/tests-gen/org/jetbrains/kotlin/js/test/klib/CustomJsCompilerSecondPhaseTestGenerated.java
index 3b16bd1..67cee79 100644
--- a/js/js.tests/klib-compatibility/tests-gen/org/jetbrains/kotlin/js/test/klib/CustomJsCompilerSecondPhaseTestGenerated.java
+++ b/js/js.tests/klib-compatibility/tests-gen/org/jetbrains/kotlin/js/test/klib/CustomJsCompilerSecondPhaseTestGenerated.java
@@ -554,6 +554,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -572,6 +584,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -608,6 +626,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -632,6 +656,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -644,6 +704,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -668,6 +734,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -698,22 +770,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested
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 3908751..d90a55a 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
@@ -546,6 +546,18 @@
       }
 
       @Test
+      @TestMetadata("annotationAnnotationParam.kt")
+      public void testAnnotationAnnotationParam() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+      }
+
+      @Test
+      @TestMetadata("annotationAnyDispatch.kt")
+      public void testAnnotationAnyDispatch() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+      }
+
+      @Test
       @TestMetadata("annotationEnclosingName.kt")
       public void testAnnotationEnclosingName() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -564,6 +576,12 @@
       }
 
       @Test
+      @TestMetadata("annotationInlineMultiModule.kt")
+      public void testAnnotationInlineMultiModule() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+      }
+
+      @Test
       @TestMetadata("annotationInstances.kt")
       public void testAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -600,6 +618,12 @@
       }
 
       @Test
+      @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+      public void testAnnotationToStringDefaultsAndEmptyArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+      }
+
+      @Test
       @TestMetadata("annotationType.kt")
       public void testAnnotationType() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -624,6 +648,42 @@
       }
 
       @Test
+      @TestMetadata("arrayContentEqAny.kt")
+      public void testArrayContentEqAny() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+      }
+
+      @Test
+      @TestMetadata("arraysAndKClass.kt")
+      public void testArraysAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("differentAnnotationTypes.kt")
+      public void testDifferentAnnotationTypes() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+      }
+
+      @Test
+      @TestMetadata("differentOrder.kt")
+      public void testDifferentOrder() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+      }
+
+      @Test
+      @TestMetadata("enumAndKClass.kt")
+      public void testEnumAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("enumArray.kt")
+      public void testEnumArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+      }
+
+      @Test
       @TestMetadata("inInlineFunction.kt")
       public void testInInlineFunction() {
         runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -636,6 +696,12 @@
       }
 
       @Test
+      @TestMetadata("instanceEquality.kt")
+      public void testInstanceEquality() {
+        runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+      }
+
+      @Test
       @TestMetadata("javaAnnotation.kt")
       public void testJavaAnnotation() {
         runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -660,6 +726,12 @@
       }
 
       @Test
+      @TestMetadata("mixedArray.kt")
+      public void testMixedArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+      }
+
+      @Test
       @TestMetadata("multifileEqHc.kt")
       public void testMultifileEqHc() {
         runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -690,22 +762,64 @@
       }
 
       @Test
+      @TestMetadata("naNAndZero.kt")
+      public void testNaNAndZero() {
+        runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+      }
+
+      @Test
+      @TestMetadata("nested.kt")
+      public void testNested() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+      }
+
+      @Test
       @TestMetadata("nestedAnnotationInstances.kt")
       public void testNestedAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
       }
 
       @Test
+      @TestMetadata("nestedDefaults.kt")
+      public void testNestedDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+      }
+
+      @Test
       @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
       public void testRearrangedArgumentsInAnnotationCall() {
         runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
       }
 
       @Test
+      @TestMetadata("repeatableInstantiation.kt")
+      public void testRepeatableInstantiation() {
+        runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+      }
+
+      @Test
+      @TestMetadata("typeAliasesAndGenericsInterop.kt")
+      public void testTypeAliasesAndGenericsInterop() {
+        runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+      }
+
+      @Test
+      @TestMetadata("unsignedAndBooleanArrays.kt")
+      public void testUnsignedAndBooleanArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+      }
+
+      @Test
       @TestMetadata("varargInAnnotationParameterInstantiation.kt")
       public void testVarargInAnnotationParameterInstantiation() {
         runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
       }
+
+      @Test
+      @TestMetadata("withDefaults.kt")
+      public void testWithDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+      }
     }
 
     @Nested
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxWithInlinedFunInKlibTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxWithInlinedFunInKlibTestGenerated.java
index 1854cfd..e19b738 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxWithInlinedFunInKlibTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxWithInlinedFunInKlibTestGenerated.java
@@ -548,6 +548,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenSplittingInlineWithInlinedFunInKlibTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenSplittingInlineWithInlinedFunInKlibTestGenerated.java
index b7e1d5b..d81ea3a 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenSplittingInlineWithInlinedFunInKlibTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenSplittingInlineWithInlinedFunInKlibTestGenerated.java
@@ -548,6 +548,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested
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 fb435d8..5feb088 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
@@ -551,6 +551,18 @@
       }
 
       @Test
+      @TestMetadata("annotationAnnotationParam.kt")
+      public void testAnnotationAnnotationParam() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+      }
+
+      @Test
+      @TestMetadata("annotationAnyDispatch.kt")
+      public void testAnnotationAnyDispatch() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+      }
+
+      @Test
       @TestMetadata("annotationEnclosingName.kt")
       public void testAnnotationEnclosingName() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -569,6 +581,12 @@
       }
 
       @Test
+      @TestMetadata("annotationInlineMultiModule.kt")
+      public void testAnnotationInlineMultiModule() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+      }
+
+      @Test
       @TestMetadata("annotationInstances.kt")
       public void testAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -605,6 +623,12 @@
       }
 
       @Test
+      @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+      public void testAnnotationToStringDefaultsAndEmptyArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+      }
+
+      @Test
       @TestMetadata("annotationType.kt")
       public void testAnnotationType() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -629,6 +653,42 @@
       }
 
       @Test
+      @TestMetadata("arrayContentEqAny.kt")
+      public void testArrayContentEqAny() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+      }
+
+      @Test
+      @TestMetadata("arraysAndKClass.kt")
+      public void testArraysAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("differentAnnotationTypes.kt")
+      public void testDifferentAnnotationTypes() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+      }
+
+      @Test
+      @TestMetadata("differentOrder.kt")
+      public void testDifferentOrder() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+      }
+
+      @Test
+      @TestMetadata("enumAndKClass.kt")
+      public void testEnumAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("enumArray.kt")
+      public void testEnumArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+      }
+
+      @Test
       @TestMetadata("inInlineFunction.kt")
       public void testInInlineFunction() {
         runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -641,6 +701,12 @@
       }
 
       @Test
+      @TestMetadata("instanceEquality.kt")
+      public void testInstanceEquality() {
+        runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+      }
+
+      @Test
       @TestMetadata("javaAnnotation.kt")
       public void testJavaAnnotation() {
         runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -665,6 +731,12 @@
       }
 
       @Test
+      @TestMetadata("mixedArray.kt")
+      public void testMixedArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+      }
+
+      @Test
       @TestMetadata("multifileEqHc.kt")
       public void testMultifileEqHc() {
         runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -695,22 +767,64 @@
       }
 
       @Test
+      @TestMetadata("naNAndZero.kt")
+      public void testNaNAndZero() {
+        runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+      }
+
+      @Test
+      @TestMetadata("nested.kt")
+      public void testNested() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+      }
+
+      @Test
       @TestMetadata("nestedAnnotationInstances.kt")
       public void testNestedAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
       }
 
       @Test
+      @TestMetadata("nestedDefaults.kt")
+      public void testNestedDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+      }
+
+      @Test
       @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
       public void testRearrangedArgumentsInAnnotationCall() {
         runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
       }
 
       @Test
+      @TestMetadata("repeatableInstantiation.kt")
+      public void testRepeatableInstantiation() {
+        runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+      }
+
+      @Test
+      @TestMetadata("typeAliasesAndGenericsInterop.kt")
+      public void testTypeAliasesAndGenericsInterop() {
+        runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+      }
+
+      @Test
+      @TestMetadata("unsignedAndBooleanArrays.kt")
+      public void testUnsignedAndBooleanArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+      }
+
+      @Test
       @TestMetadata("varargInAnnotationParameterInstantiation.kt")
       public void testVarargInAnnotationParameterInstantiation() {
         runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
       }
+
+      @Test
+      @TestMetadata("withDefaults.kt")
+      public void testWithDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+      }
     }
 
     @Nested
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 bb5c9a5..75f3f4b 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
@@ -551,6 +551,18 @@
       }
 
       @Test
+      @TestMetadata("annotationAnnotationParam.kt")
+      public void testAnnotationAnnotationParam() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+      }
+
+      @Test
+      @TestMetadata("annotationAnyDispatch.kt")
+      public void testAnnotationAnyDispatch() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+      }
+
+      @Test
       @TestMetadata("annotationEnclosingName.kt")
       public void testAnnotationEnclosingName() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -569,6 +581,12 @@
       }
 
       @Test
+      @TestMetadata("annotationInlineMultiModule.kt")
+      public void testAnnotationInlineMultiModule() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+      }
+
+      @Test
       @TestMetadata("annotationInstances.kt")
       public void testAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -605,6 +623,12 @@
       }
 
       @Test
+      @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+      public void testAnnotationToStringDefaultsAndEmptyArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+      }
+
+      @Test
       @TestMetadata("annotationType.kt")
       public void testAnnotationType() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -629,6 +653,42 @@
       }
 
       @Test
+      @TestMetadata("arrayContentEqAny.kt")
+      public void testArrayContentEqAny() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+      }
+
+      @Test
+      @TestMetadata("arraysAndKClass.kt")
+      public void testArraysAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("differentAnnotationTypes.kt")
+      public void testDifferentAnnotationTypes() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+      }
+
+      @Test
+      @TestMetadata("differentOrder.kt")
+      public void testDifferentOrder() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+      }
+
+      @Test
+      @TestMetadata("enumAndKClass.kt")
+      public void testEnumAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("enumArray.kt")
+      public void testEnumArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+      }
+
+      @Test
       @TestMetadata("inInlineFunction.kt")
       public void testInInlineFunction() {
         runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -641,6 +701,12 @@
       }
 
       @Test
+      @TestMetadata("instanceEquality.kt")
+      public void testInstanceEquality() {
+        runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+      }
+
+      @Test
       @TestMetadata("javaAnnotation.kt")
       public void testJavaAnnotation() {
         runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -665,6 +731,12 @@
       }
 
       @Test
+      @TestMetadata("mixedArray.kt")
+      public void testMixedArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+      }
+
+      @Test
       @TestMetadata("multifileEqHc.kt")
       public void testMultifileEqHc() {
         runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -695,22 +767,64 @@
       }
 
       @Test
+      @TestMetadata("naNAndZero.kt")
+      public void testNaNAndZero() {
+        runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+      }
+
+      @Test
+      @TestMetadata("nested.kt")
+      public void testNested() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+      }
+
+      @Test
       @TestMetadata("nestedAnnotationInstances.kt")
       public void testNestedAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
       }
 
       @Test
+      @TestMetadata("nestedDefaults.kt")
+      public void testNestedDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+      }
+
+      @Test
       @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
       public void testRearrangedArgumentsInAnnotationCall() {
         runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
       }
 
       @Test
+      @TestMetadata("repeatableInstantiation.kt")
+      public void testRepeatableInstantiation() {
+        runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+      }
+
+      @Test
+      @TestMetadata("typeAliasesAndGenericsInterop.kt")
+      public void testTypeAliasesAndGenericsInterop() {
+        runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+      }
+
+      @Test
+      @TestMetadata("unsignedAndBooleanArrays.kt")
+      public void testUnsignedAndBooleanArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+      }
+
+      @Test
       @TestMetadata("varargInAnnotationParameterInstantiation.kt")
       public void testVarargInAnnotationParameterInstantiation() {
         runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
       }
+
+      @Test
+      @TestMetadata("withDefaults.kt")
+      public void testWithDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+      }
     }
 
     @Nested
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 3f83b9a..1776ccc 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
@@ -555,6 +555,18 @@
       }
 
       @Test
+      @TestMetadata("annotationAnnotationParam.kt")
+      public void testAnnotationAnnotationParam() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+      }
+
+      @Test
+      @TestMetadata("annotationAnyDispatch.kt")
+      public void testAnnotationAnyDispatch() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+      }
+
+      @Test
       @TestMetadata("annotationEnclosingName.kt")
       public void testAnnotationEnclosingName() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -573,6 +585,12 @@
       }
 
       @Test
+      @TestMetadata("annotationInlineMultiModule.kt")
+      public void testAnnotationInlineMultiModule() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+      }
+
+      @Test
       @TestMetadata("annotationInstances.kt")
       public void testAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -609,6 +627,12 @@
       }
 
       @Test
+      @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+      public void testAnnotationToStringDefaultsAndEmptyArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+      }
+
+      @Test
       @TestMetadata("annotationType.kt")
       public void testAnnotationType() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -633,6 +657,42 @@
       }
 
       @Test
+      @TestMetadata("arrayContentEqAny.kt")
+      public void testArrayContentEqAny() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+      }
+
+      @Test
+      @TestMetadata("arraysAndKClass.kt")
+      public void testArraysAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("differentAnnotationTypes.kt")
+      public void testDifferentAnnotationTypes() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+      }
+
+      @Test
+      @TestMetadata("differentOrder.kt")
+      public void testDifferentOrder() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+      }
+
+      @Test
+      @TestMetadata("enumAndKClass.kt")
+      public void testEnumAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("enumArray.kt")
+      public void testEnumArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+      }
+
+      @Test
       @TestMetadata("inInlineFunction.kt")
       public void testInInlineFunction() {
         runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -645,6 +705,12 @@
       }
 
       @Test
+      @TestMetadata("instanceEquality.kt")
+      public void testInstanceEquality() {
+        runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+      }
+
+      @Test
       @TestMetadata("javaAnnotation.kt")
       public void testJavaAnnotation() {
         runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -669,6 +735,12 @@
       }
 
       @Test
+      @TestMetadata("mixedArray.kt")
+      public void testMixedArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+      }
+
+      @Test
       @TestMetadata("multifileEqHc.kt")
       public void testMultifileEqHc() {
         runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -699,22 +771,64 @@
       }
 
       @Test
+      @TestMetadata("naNAndZero.kt")
+      public void testNaNAndZero() {
+        runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+      }
+
+      @Test
+      @TestMetadata("nested.kt")
+      public void testNested() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+      }
+
+      @Test
       @TestMetadata("nestedAnnotationInstances.kt")
       public void testNestedAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
       }
 
       @Test
+      @TestMetadata("nestedDefaults.kt")
+      public void testNestedDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+      }
+
+      @Test
       @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
       public void testRearrangedArgumentsInAnnotationCall() {
         runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
       }
 
       @Test
+      @TestMetadata("repeatableInstantiation.kt")
+      public void testRepeatableInstantiation() {
+        runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+      }
+
+      @Test
+      @TestMetadata("typeAliasesAndGenericsInterop.kt")
+      public void testTypeAliasesAndGenericsInterop() {
+        runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+      }
+
+      @Test
+      @TestMetadata("unsignedAndBooleanArrays.kt")
+      public void testUnsignedAndBooleanArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+      }
+
+      @Test
       @TestMetadata("varargInAnnotationParameterInstantiation.kt")
       public void testVarargInAnnotationParameterInstantiation() {
         runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
       }
+
+      @Test
+      @TestMetadata("withDefaults.kt")
+      public void testWithDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+      }
     }
 
     @Nested
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrDeserializationCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrDeserializationCodegenBoxTestGenerated.java
index b5a6b4b..1cb8f4e 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrDeserializationCodegenBoxTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrDeserializationCodegenBoxTestGenerated.java
@@ -548,6 +548,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrDeserializationCodegenBoxWithInlinedFunInKlibTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrDeserializationCodegenBoxWithInlinedFunInKlibTestGenerated.java
index 9fca1f4..abb0047 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrDeserializationCodegenBoxWithInlinedFunInKlibTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrDeserializationCodegenBoxWithInlinedFunInKlibTestGenerated.java
@@ -548,6 +548,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested
diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt
index 346b0f8..5d85b13 100644
--- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt
+++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt
@@ -295,7 +295,16 @@
                     LLVMArrayType(llvm.int8PtrType, context.getLayoutBuilder(declaration).vtableEntries.size)!!
             )
 
-            typeInfoGlobal = staticData.createGlobal(typeInfoWithVtableType, typeInfoSymbolName, declaration.isExported())
+            typeInfoGlobal = staticData.createGlobal(
+                    typeInfoWithVtableType, typeInfoSymbolName,
+                    declaration.isExported()
+                            // This is required because internal inline functions can access private classes.
+                            // So, in the generated code, the class type info can be accessed outside the file.
+                            // With per-file caches involved, this can mean accessing from a different object file.
+                            // Therefore, the class type info has to have external linkage in that case.
+                            // Hopefully, this can be removed after fixing KT-69666.
+                            || context.config.producePerFileCache && declaration.isConstructedFromExportedInlineFunctions
+            )
 
             // Other LLVM modules might import this global as a TypeInfo global.
             // This works only if there is no gap between the beginning of the global and the TypeInfo part,
@@ -304,20 +313,6 @@
             val typeInfoOffsetInGlobal = LLVMOffsetOfElement(llvmTargetData, typeInfoWithVtableType, 0)
             check(typeInfoOffsetInGlobal == 0L) { "Offset for $typeInfoSymbolName TypeInfo is $typeInfoOffsetInGlobal" }
 
-            if (context.config.producePerFileCache && declaration.isConstructedFromExportedInlineFunctions) {
-                // This is required because internal inline functions can access private classes.
-                // So, in the generated code, the class type info can be accessed outside the file.
-                // With per-file caches involved, this can mean accessing from a different object file.
-                // Therefore, the class type info has to have external linkage in that case.
-                // Check e.g. `nestedInPrivateClass2.kt` test (it should fail if you remove setting linkage to external).
-                //
-                // This case should be reflected in the `isExported` parameter of `createGlobal` above, instead of
-                // patching the linkage ad hoc.
-                // The problem is: such globals in fact can have clashing names, which makes createGlobal fail.
-                // See https://youtrack.jetbrains.com/issue/KT-61428.
-                typeInfoGlobal.setLinkage(LLVMLinkage.LLVMExternalLinkage)
-            }
-
             typeInfoPtr = typeInfoGlobal.pointer.getElementPtr(llvm, typeInfoWithVtableType, 0)
 
         } else {
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt
index 6c46c38..4f643e8 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt
@@ -574,12 +574,13 @@
     }
 
     @DisplayName("Smoke test with apple gradle plugin")
+    // AppleGradle plugin is not supported by Gradle 9.0+ due to Project.exec use
+    @GradleTestVersions(maxVersion = TestVersions.Gradle.G_8_14)
     @GradleTest
     fun smokeTestWithAppleGradlePlugin(gradleVersion: GradleVersion) {
         nativeProject(
             "appleGradlePluginConsumesAppleFrameworks",
             gradleVersion,
-            buildJdk = jdk11Info.javaHome,
             buildOptions = defaultBuildOptions.copy(
                 // Apple plugin doesn't support configuration cache
                 configurationCache = BuildOptions.ConfigurationCacheValue.DISABLED,
@@ -609,7 +610,7 @@
             }
 
             build(*dependencyInsight("iosAppIosX64ReleaseImplementation0"), "-PmultipleFrameworks") {
-                assertOutputDoesNotContain("mainStaticReleaseFrameworkIos")
+                assertOutputContains("Could not resolve project :iosLib")
             }
         }
     }
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/consumableAppleFrameworks/consumer/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/consumableAppleFrameworks/consumer/build.gradle.kts
index e52c3ae..8d154f0 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/consumableAppleFrameworks/consumer/build.gradle.kts
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/consumableAppleFrameworks/consumer/build.gradle.kts
@@ -31,7 +31,7 @@
         isCanBeResolved = true
         attributes {
             attribute(KotlinPlatformType.attribute, KotlinPlatformType.native)
-            attribute(ArtifactAttributes.ARTIFACT_FORMAT, FRAMEWORK)
+            attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, FRAMEWORK)
             attribute(KotlinNativeTarget.kotlinNativeBuildTypeAttribute, request.buildType.name)
             attribute(Framework.frameworkTargets, request.targets.map { it.name }.toSet())
             if (request.name != null) {
diff --git a/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java b/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java
index 06d33be..882c3bf 100644
--- a/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java
+++ b/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java
@@ -560,6 +560,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -578,6 +590,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -614,6 +632,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -638,6 +662,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -650,6 +710,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -674,6 +740,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -704,22 +776,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested
diff --git a/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java
index a2b9bf5..6fa4598 100644
--- a/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java
+++ b/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java
@@ -572,6 +572,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -590,6 +602,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -626,6 +644,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -650,6 +674,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -662,6 +722,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -686,6 +752,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -716,22 +788,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested
diff --git a/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java b/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java
index 0bfff47..054b21f 100644
--- a/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java
+++ b/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java
@@ -566,6 +566,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -584,6 +596,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -620,6 +638,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -644,6 +668,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -656,6 +716,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -680,6 +746,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -710,22 +782,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested
diff --git a/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java
index b3cfc69..fcd58ec 100644
--- a/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java
+++ b/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java
@@ -578,6 +578,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -596,6 +608,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -632,6 +650,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -656,6 +680,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -668,6 +728,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -692,6 +758,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -722,22 +794,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested
diff --git a/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxWithInlinedFunInKlibTestGenerated.java b/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxWithInlinedFunInKlibTestGenerated.java
index 9eba074..e7a711a 100644
--- a/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxWithInlinedFunInKlibTestGenerated.java
+++ b/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxWithInlinedFunInKlibTestGenerated.java
@@ -560,6 +560,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -578,6 +590,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -614,6 +632,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -638,6 +662,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -650,6 +710,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -674,6 +740,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -704,22 +776,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested
diff --git a/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/serialization/NativeIrDeserializationTestGenerated.java b/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/serialization/NativeIrDeserializationTestGenerated.java
index 647d44c..7ca0b1c 100644
--- a/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/serialization/NativeIrDeserializationTestGenerated.java
+++ b/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/serialization/NativeIrDeserializationTestGenerated.java
@@ -548,6 +548,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested
diff --git a/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/serialization/NativeIrDeserializationWithInlinedFunInKlibTestGenerated.java b/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/serialization/NativeIrDeserializationWithInlinedFunInKlibTestGenerated.java
index c5dfd56..3c0d4be 100644
--- a/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/serialization/NativeIrDeserializationWithInlinedFunInKlibTestGenerated.java
+++ b/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/serialization/NativeIrDeserializationWithInlinedFunInKlibTestGenerated.java
@@ -548,6 +548,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested
diff --git a/plugins/power-assert/testData/codegen/parameters/ContextReceivers.fir.kt.txt b/plugins/power-assert/testData/codegen/parameters/ContextReceivers.fir.kt.txt
index c161b5f..5cf22db 100644
--- a/plugins/power-assert/testData/codegen/parameters/ContextReceivers.fir.kt.txt
+++ b/plugins/power-assert/testData/codegen/parameters/ContextReceivers.fir.kt.txt
@@ -36,14 +36,14 @@
 )])
 }
 
-context(<unused var>: Asserter)
+context($context-Asserter: Asserter)
 fun context1Assert(condition: Boolean, msg: Any? = null) {
   when {
     condition.not() -> throw AssertionError(p0 = toString(/* <this> = msg */))
   }
 }
 
-context(<unused var>: Asserter, <unused var>: Asserter)
+context($context-Asserter#1: Asserter, $context-Asserter#2: Asserter)
 fun context2Assert(condition: Boolean, msg: Any? = null) {
   when {
     condition.not() -> throw AssertionError(p0 = toString(/* <this> = msg */))
@@ -57,7 +57,7 @@
       { // BLOCK
         val tmp_2: Int = "test".<get-length>()
         val tmp_3: Boolean = EQEQ(arg0 = tmp_2, arg1 = 5)
-        context1Assert(/* <unused var> = tmp_1, */ condition = tmp_3, msg = "\ncontext1Assert(\"test\".length == 5)" + "\n                      |      |" + "\n                      |      " + tmp_3 + "\n                      " + tmp_2 + "\n")
+        context1Assert(/* $context-Asserter = tmp_1, */ condition = tmp_3, msg = "\ncontext1Assert(\"test\".length == 5)" + "\n                      |      |" + "\n                      |      " + tmp_3 + "\n                      " + tmp_2 + "\n")
       }
     }
   }
@@ -73,7 +73,7 @@
         { // BLOCK
           val tmp_6: Int = "test".<get-length>()
           val tmp_7: Boolean = EQEQ(arg0 = tmp_6, arg1 = 5)
-          context2Assert(/* <unused var> = tmp_4, <unused var> = tmp_5, */ condition = tmp_7, msg = "\ncontext2Assert(\"test\".length == 5)" + "\n                      |      |" + "\n                      |      " + tmp_7 + "\n                      " + tmp_6 + "\n")
+          context2Assert(/* $context-Asserter#1 = tmp_4, $context-Asserter#2 = tmp_5, */ condition = tmp_7, msg = "\ncontext2Assert(\"test\".length == 5)" + "\n                      |      |" + "\n                      |      " + tmp_7 + "\n                      " + tmp_6 + "\n")
         }
       }
     }
diff --git a/prepare/analysis-api-test-framework/build.gradle.kts b/prepare/analysis-api-test-framework/build.gradle.kts
index bebbb34..e53aa1a 100644
--- a/prepare/analysis-api-test-framework/build.gradle.kts
+++ b/prepare/analysis-api-test-framework/build.gradle.kts
@@ -2,35 +2,44 @@
     java
 }
 
-val testModules = listOf(
+val testFixturesModules = listOf(
     ":analysis:analysis-api-fir",
     ":analysis:low-level-api-fir",
-    ":analysis:low-level-api-fir:tests-jdk11",
     ":analysis:analysis-test-framework",
     ":analysis:analysis-api-impl-base",
     ":analysis:analysis-api-standalone",
     ":analysis:decompiled:decompiler-to-file-stubs",
 )
 
+val testModules = listOf(
+    ":analysis:low-level-api-fir:tests-jdk11",
+)
+
 val mainModules = listOf(
     ":kotlin-preloader",
 )
 
 dependencies {
-    testModules.forEach {
-        embedded(projectTests(it)) { isTransitive = false }
+    fun List<String>.registerDependencies(notation: (String) -> Dependency) {
+        this.forEach {
+            embedded(notation(it)) {
+                if (this is ModuleDependency) isTransitive = false
+            }
+        }
     }
 
-    mainModules.forEach {
-        embedded(project(it)) { isTransitive = false }
-    }
+    mainModules.registerDependencies { project(it) }
+    testFixturesModules.registerDependencies { testFixtures(project(it)) }
+    testModules.registerDependencies { projectTests(it) }
 }
 
 publish()
 runtimeJar()
 sourcesJar {
     from {
-        mainModules.map { project(it).mainSourceSet.allSource } + testModules.map { project(it).testSourceSet.allSource }
+        mainModules.map { project(it).mainSourceSet.allSource } +
+                testFixturesModules.map { project(it).testFixturesSourceSet.allSource } +
+                testModules.map { project(it).testSourceSet.allSource }
     }
 }
 javadocJar()
diff --git a/prepare/kotlin-compiler-internal-test-framework/build.gradle.kts b/prepare/kotlin-compiler-internal-test-framework/build.gradle.kts
index 1b470d2..f4cade1 100644
--- a/prepare/kotlin-compiler-internal-test-framework/build.gradle.kts
+++ b/prepare/kotlin-compiler-internal-test-framework/build.gradle.kts
@@ -2,12 +2,14 @@
     java
 }
 
-val testModules = listOf(
+val testFixturesModules = listOf(
     ":compiler:test-infrastructure",
     ":compiler:test-infrastructure-utils",
     ":compiler:tests-compiler-utils",
     ":compiler:tests-common-new",
-    ":generators:test-generator"
+    ":generators:test-generator",
+    ":kotlin-build-common",
+    ":js:js.tests",
 )
 
 val mainModules = listOf(
@@ -17,24 +19,25 @@
 )
 
 dependencies {
-    mainModules.forEach {
-        embedded(project(it)) { isTransitive = false }
-    }
-    testModules.forEach {
-        embedded(testFixtures(project(it))) {
-            if (this is ModuleDependency) isTransitive = false
+    fun List<String>.registerDependencies(notation: (String) -> Dependency) {
+        this.forEach {
+            embedded(notation(it)) {
+                if (this is ModuleDependency) isTransitive = false
+            }
         }
     }
+
+    mainModules.registerDependencies { project(it) }
+    testFixturesModules.registerDependencies { testFixtures(project(it)) }
 }
 
 publish()
 runtimeJar()
 sourcesJar {
     from {
-        mainModules.map { project(it).mainSourceSet.allSource } + testModules.map { project(it).testSourceSet.allSource }
+        mainModules.map { project(it).mainSourceSet.allSource } +
+                testFixturesModules.map { project(it).testFixturesSourceSet.allSource }
     }
-
-    dependsOn(":compiler:fir:checkers:generateCheckersComponents")
 }
 
 javadocJar()
diff --git a/repo/gradle-build-conventions/utilities/src/main/kotlin/sourceSets.kt b/repo/gradle-build-conventions/utilities/src/main/kotlin/sourceSets.kt
index 016d759..73fb92e 100644
--- a/repo/gradle-build-conventions/utilities/src/main/kotlin/sourceSets.kt
+++ b/repo/gradle-build-conventions/utilities/src/main/kotlin/sourceSets.kt
@@ -46,12 +46,18 @@
 val Project.mainSourceSet: SourceSet
     get() = javaPluginExtension().mainSourceSet
 
+val Project.testFixturesSourceSet: SourceSet
+    get() = javaPluginExtension().testFixturesSourceSet
+
 val Project.testSourceSet: SourceSet
     get() = javaPluginExtension().testSourceSet
 
 val JavaPluginExtension.mainSourceSet: SourceSet
     get() = sourceSets.getByName("main")
 
+val JavaPluginExtension.testFixturesSourceSet: SourceSet
+    get() = sourceSets.getByName("testFixtures")
+
 val JavaPluginExtension.testSourceSet: SourceSet
     get() = sourceSets.getByName("test")
 
diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxTestGenerated.java
index 0a22934..d368b31 100644
--- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxTestGenerated.java
+++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxTestGenerated.java
@@ -546,6 +546,18 @@
       }
 
       @Test
+      @TestMetadata("annotationAnnotationParam.kt")
+      public void testAnnotationAnnotationParam() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+      }
+
+      @Test
+      @TestMetadata("annotationAnyDispatch.kt")
+      public void testAnnotationAnyDispatch() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+      }
+
+      @Test
       @TestMetadata("annotationEnclosingName.kt")
       public void testAnnotationEnclosingName() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -564,6 +576,12 @@
       }
 
       @Test
+      @TestMetadata("annotationInlineMultiModule.kt")
+      public void testAnnotationInlineMultiModule() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+      }
+
+      @Test
       @TestMetadata("annotationInstances.kt")
       public void testAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -600,6 +618,12 @@
       }
 
       @Test
+      @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+      public void testAnnotationToStringDefaultsAndEmptyArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+      }
+
+      @Test
       @TestMetadata("annotationType.kt")
       public void testAnnotationType() {
         runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -624,6 +648,42 @@
       }
 
       @Test
+      @TestMetadata("arrayContentEqAny.kt")
+      public void testArrayContentEqAny() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+      }
+
+      @Test
+      @TestMetadata("arraysAndKClass.kt")
+      public void testArraysAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("differentAnnotationTypes.kt")
+      public void testDifferentAnnotationTypes() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+      }
+
+      @Test
+      @TestMetadata("differentOrder.kt")
+      public void testDifferentOrder() {
+        runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+      }
+
+      @Test
+      @TestMetadata("enumAndKClass.kt")
+      public void testEnumAndKClass() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+      }
+
+      @Test
+      @TestMetadata("enumArray.kt")
+      public void testEnumArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+      }
+
+      @Test
       @TestMetadata("inInlineFunction.kt")
       public void testInInlineFunction() {
         runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -636,6 +696,12 @@
       }
 
       @Test
+      @TestMetadata("instanceEquality.kt")
+      public void testInstanceEquality() {
+        runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+      }
+
+      @Test
       @TestMetadata("javaAnnotation.kt")
       public void testJavaAnnotation() {
         runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -660,6 +726,12 @@
       }
 
       @Test
+      @TestMetadata("mixedArray.kt")
+      public void testMixedArray() {
+        runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+      }
+
+      @Test
       @TestMetadata("multifileEqHc.kt")
       public void testMultifileEqHc() {
         runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -690,22 +762,64 @@
       }
 
       @Test
+      @TestMetadata("naNAndZero.kt")
+      public void testNaNAndZero() {
+        runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+      }
+
+      @Test
+      @TestMetadata("nested.kt")
+      public void testNested() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+      }
+
+      @Test
       @TestMetadata("nestedAnnotationInstances.kt")
       public void testNestedAnnotationInstances() {
         runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
       }
 
       @Test
+      @TestMetadata("nestedDefaults.kt")
+      public void testNestedDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+      }
+
+      @Test
       @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
       public void testRearrangedArgumentsInAnnotationCall() {
         runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
       }
 
       @Test
+      @TestMetadata("repeatableInstantiation.kt")
+      public void testRepeatableInstantiation() {
+        runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+      }
+
+      @Test
+      @TestMetadata("typeAliasesAndGenericsInterop.kt")
+      public void testTypeAliasesAndGenericsInterop() {
+        runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+      }
+
+      @Test
+      @TestMetadata("unsignedAndBooleanArrays.kt")
+      public void testUnsignedAndBooleanArrays() {
+        runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+      }
+
+      @Test
       @TestMetadata("varargInAnnotationParameterInstantiation.kt")
       public void testVarargInAnnotationParameterInstantiation() {
         runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
       }
+
+      @Test
+      @TestMetadata("withDefaults.kt")
+      public void testWithDefaults() {
+        runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+      }
     }
 
     @Nested
diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxWithInlinedFunInKlibTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxWithInlinedFunInKlibTestGenerated.java
index 914f6ed..c262089 100644
--- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxWithInlinedFunInKlibTestGenerated.java
+++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxWithInlinedFunInKlibTestGenerated.java
@@ -548,6 +548,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested
diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenSplittingWithInlinedFunInKlibTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenSplittingWithInlinedFunInKlibTestGenerated.java
index 455952a..d51dc35 100644
--- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenSplittingWithInlinedFunInKlibTestGenerated.java
+++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenSplittingWithInlinedFunInKlibTestGenerated.java
@@ -548,6 +548,18 @@
         }
 
         @Test
+        @TestMetadata("annotationAnnotationParam.kt")
+        public void testAnnotationAnnotationParam() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+        }
+
+        @Test
+        @TestMetadata("annotationAnyDispatch.kt")
+        public void testAnnotationAnyDispatch() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+        }
+
+        @Test
         @TestMetadata("annotationEnclosingName.kt")
         public void testAnnotationEnclosingName() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
         }
 
         @Test
+        @TestMetadata("annotationInlineMultiModule.kt")
+        public void testAnnotationInlineMultiModule() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+        }
+
+        @Test
         @TestMetadata("annotationInstances.kt")
         public void testAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
         }
 
         @Test
+        @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+        public void testAnnotationToStringDefaultsAndEmptyArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+        }
+
+        @Test
         @TestMetadata("annotationType.kt")
         public void testAnnotationType() {
           runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
         }
 
         @Test
+        @TestMetadata("arrayContentEqAny.kt")
+        public void testArrayContentEqAny() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+        }
+
+        @Test
+        @TestMetadata("arraysAndKClass.kt")
+        public void testArraysAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("differentAnnotationTypes.kt")
+        public void testDifferentAnnotationTypes() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+        }
+
+        @Test
+        @TestMetadata("differentOrder.kt")
+        public void testDifferentOrder() {
+          runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+        }
+
+        @Test
+        @TestMetadata("enumAndKClass.kt")
+        public void testEnumAndKClass() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+        }
+
+        @Test
+        @TestMetadata("enumArray.kt")
+        public void testEnumArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+        }
+
+        @Test
         @TestMetadata("inInlineFunction.kt")
         public void testInInlineFunction() {
           runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
         }
 
         @Test
+        @TestMetadata("instanceEquality.kt")
+        public void testInstanceEquality() {
+          runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+        }
+
+        @Test
         @TestMetadata("javaAnnotation.kt")
         public void testJavaAnnotation() {
           runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
         }
 
         @Test
+        @TestMetadata("mixedArray.kt")
+        public void testMixedArray() {
+          runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+        }
+
+        @Test
         @TestMetadata("multifileEqHc.kt")
         public void testMultifileEqHc() {
           runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
         }
 
         @Test
+        @TestMetadata("naNAndZero.kt")
+        public void testNaNAndZero() {
+          runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+        }
+
+        @Test
+        @TestMetadata("nested.kt")
+        public void testNested() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+        }
+
+        @Test
         @TestMetadata("nestedAnnotationInstances.kt")
         public void testNestedAnnotationInstances() {
           runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
         }
 
         @Test
+        @TestMetadata("nestedDefaults.kt")
+        public void testNestedDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+        }
+
+        @Test
         @TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
         public void testRearrangedArgumentsInAnnotationCall() {
           runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
         }
 
         @Test
+        @TestMetadata("repeatableInstantiation.kt")
+        public void testRepeatableInstantiation() {
+          runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+        }
+
+        @Test
+        @TestMetadata("typeAliasesAndGenericsInterop.kt")
+        public void testTypeAliasesAndGenericsInterop() {
+          runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+        }
+
+        @Test
+        @TestMetadata("unsignedAndBooleanArrays.kt")
+        public void testUnsignedAndBooleanArrays() {
+          runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+        }
+
+        @Test
         @TestMetadata("varargInAnnotationParameterInstantiation.kt")
         public void testVarargInAnnotationParameterInstantiation() {
           runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
         }
+
+        @Test
+        @TestMetadata("withDefaults.kt")
+        public void testWithDefaults() {
+          runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+        }
       }
 
       @Nested