[LL API] Fix enum value lazy analysis (KTIJ-23833)

^KTIJ-23833 Fixed
diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedAnnotationArgumentsResolveTransformer.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedAnnotationArgumentsResolveTransformer.kt
index 868518b..77fd5b0 100644
--- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedAnnotationArgumentsResolveTransformer.kt
+++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedAnnotationArgumentsResolveTransformer.kt
@@ -35,7 +35,9 @@
                 }
             }
             is FirRegularClass -> {
-                moveNextDeclaration(designationIterator)
+                context.withRegularClass(nextElement, components) {
+                    moveNextDeclaration(designationIterator)
+                }
             }
             is FirEnumEntry -> {
                 context.forEnumEntry {
diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/annotationParameters.txt b/analysis/low-level-api-fir/testdata/lazyResolve/annotationParameters.txt
index 08d092b..525f030 100644
--- a/analysis/low-level-api-fir/testdata/lazyResolve/annotationParameters.txt
+++ b/analysis/low-level-api-fir/testdata/lazyResolve/annotationParameters.txt
@@ -292,14 +292,14 @@
             public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] get(): A.X
 
     }
-    public final [SUPER_TYPES] class B : R|kotlin/Any| {
-        public? [SUPER_TYPES] [ContainingClassKey=B] constructor(): R|B| {
+    public final [STATUS] class B : R|kotlin/Any| {
+        public [STATUS] [ContainingClassKey=B] constructor(): R|B| {
             super<R|kotlin/Any|>()
         }
 
         @R|Anno|(Q|X|.R|/X.A|) public final [ARGUMENTS_OF_ANNOTATIONS] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
 
-        @Anno(X#.A#) public? final? [SUPER_TYPES] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
+        @R|Anno|(X#.A#) public final [STATUS] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
 
     }
 
@@ -330,15 +330,15 @@
             public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] get(): A.X
 
     }
-    public final [SUPER_TYPES] class B : R|kotlin/Any| {
-        public? [SUPER_TYPES] [ContainingClassKey=B] constructor(): R|B| {
+    public final [STATUS] class B : R|kotlin/Any| {
+        public [STATUS] [ContainingClassKey=B] constructor(): R|B| {
             super<R|kotlin/Any|>()
         }
 
         @R|Anno|(Q|X|.R|/X.A|) public final [CONTRACTS] fun resolveMe(): R|kotlin/Unit| {
         }
 
-        @Anno(X#.A#) public? final? [SUPER_TYPES] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
+        @R|Anno|(X#.A#) public final [STATUS] fun foo(): R|kotlin/Unit| { LAZY_BLOCK }
 
     }
 
diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/classMembers.txt b/analysis/low-level-api-fir/testdata/lazyResolve/classMembers.txt
index b9d7b6d..4818498 100644
--- a/analysis/low-level-api-fir/testdata/lazyResolve/classMembers.txt
+++ b/analysis/low-level-api-fir/testdata/lazyResolve/classMembers.txt
@@ -127,26 +127,26 @@
 
 ARGUMENTS_OF_ANNOTATIONS:
 FILE: classMembers.kt
-    public final [SUPER_TYPES] class A : R|kotlin/Any| {
-        public? [SUPER_TYPES] [ContainingClassKey=A] constructor(): R|A| {
+    public final [STATUS] class A : R|kotlin/Any| {
+        public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
             super<R|kotlin/Any|>()
         }
 
         public final [ARGUMENTS_OF_ANNOTATIONS] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
 
-        public? final? [SUPER_TYPES] val x: Int = LAZY_EXPRESSION
-            public? [SUPER_TYPES] [ContainingClassKey=A] get(): Int { LAZY_BLOCK }
+        public final [STATUS] val x: R|kotlin/Int| = LAZY_EXPRESSION
+            public [STATUS] [ContainingClassKey=A] get(): R|kotlin/Int| { LAZY_BLOCK }
 
-        public? final? [SUPER_TYPES] fun receive([SUPER_TYPES] value: String): R|kotlin/Unit| { LAZY_BLOCK }
+        public final [STATUS] fun receive([STATUS] value: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK }
 
-        public? final? [SUPER_TYPES] fun functionWithLazyBody(): String { LAZY_BLOCK }
+        public final [STATUS] fun functionWithLazyBody(): R|kotlin/String| { LAZY_BLOCK }
 
     }
 
 CONTRACTS:
 FILE: classMembers.kt
-    public final [SUPER_TYPES] class A : R|kotlin/Any| {
-        public? [SUPER_TYPES] [ContainingClassKey=A] constructor(): R|A| {
+    public final [STATUS] class A : R|kotlin/Any| {
+        public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
             super<R|kotlin/Any|>()
         }
 
@@ -154,12 +154,12 @@
             receive#(functionWithLazyBody#())
         }
 
-        public? final? [SUPER_TYPES] val x: Int = LAZY_EXPRESSION
-            public? [SUPER_TYPES] [ContainingClassKey=A] get(): Int { LAZY_BLOCK }
+        public final [STATUS] val x: R|kotlin/Int| = LAZY_EXPRESSION
+            public [STATUS] [ContainingClassKey=A] get(): R|kotlin/Int| { LAZY_BLOCK }
 
-        public? final? [SUPER_TYPES] fun receive([SUPER_TYPES] value: String): R|kotlin/Unit| { LAZY_BLOCK }
+        public final [STATUS] fun receive([STATUS] value: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK }
 
-        public? final? [SUPER_TYPES] fun functionWithLazyBody(): String { LAZY_BLOCK }
+        public final [STATUS] fun functionWithLazyBody(): R|kotlin/String| { LAZY_BLOCK }
 
     }
 
diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/classes/functionInValueClass.txt b/analysis/low-level-api-fir/testdata/lazyResolve/classes/functionInValueClass.txt
index 2c9477c..cfccccc 100644
--- a/analysis/low-level-api-fir/testdata/lazyResolve/classes/functionInValueClass.txt
+++ b/analysis/low-level-api-fir/testdata/lazyResolve/classes/functionInValueClass.txt
@@ -99,13 +99,13 @@
 
 ARGUMENTS_OF_ANNOTATIONS:
 FILE: functionInValueClass.kt
-    @R|kotlin/jvm/JvmInline|() public final inline [SUPER_TYPES] [FirValueClassRepresentationKey=InlineClassRepresentation(underlyingPropertyName=value, underlyingType=kotlin/Int)] class Value : R|kotlin/Any| {
-        public? [TYPES] [ContainingClassKey=Value] constructor([TYPES] [CorrespondingProperty=/Value.value] value: R|kotlin/Int|): R|Value| {
+    @R|kotlin/jvm/JvmInline|() public final inline [STATUS] [FirValueClassRepresentationKey=InlineClassRepresentation(underlyingPropertyName=value, underlyingType=kotlin/Int)] class Value : R|kotlin/Any| {
+        public [STATUS] [ContainingClassKey=Value] constructor([STATUS] [CorrespondingProperty=/Value.value] value: R|kotlin/Int|): R|Value| {
             LAZY_super<R|kotlin/Any|>
         }
 
-        public? final? [SUPER_TYPES] [IsFromPrimaryConstructor=true] val value: Int = R|<local>/value|
-            public? [SUPER_TYPES] [ContainingClassKey=Value] get(): Int
+        public final [STATUS] [IsFromPrimaryConstructor=true] val value: R|kotlin/Int| = R|<local>/value|
+            public [STATUS] [ContainingClassKey=Value] get(): R|kotlin/Int|
 
         public final [ARGUMENTS_OF_ANNOTATIONS] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK }
 
@@ -113,13 +113,13 @@
 
 CONTRACTS:
 FILE: functionInValueClass.kt
-    @R|kotlin/jvm/JvmInline|() public final inline [SUPER_TYPES] [FirValueClassRepresentationKey=InlineClassRepresentation(underlyingPropertyName=value, underlyingType=kotlin/Int)] class Value : R|kotlin/Any| {
-        public? [TYPES] [ContainingClassKey=Value] constructor([TYPES] [CorrespondingProperty=/Value.value] value: R|kotlin/Int|): R|Value| {
+    @R|kotlin/jvm/JvmInline|() public final inline [STATUS] [FirValueClassRepresentationKey=InlineClassRepresentation(underlyingPropertyName=value, underlyingType=kotlin/Int)] class Value : R|kotlin/Any| {
+        public [STATUS] [ContainingClassKey=Value] constructor([STATUS] [CorrespondingProperty=/Value.value] value: R|kotlin/Int|): R|Value| {
             LAZY_super<R|kotlin/Any|>
         }
 
-        public? final? [SUPER_TYPES] [IsFromPrimaryConstructor=true] val value: Int = R|<local>/value|
-            public? [SUPER_TYPES] [ContainingClassKey=Value] get(): Int
+        public final [STATUS] [IsFromPrimaryConstructor=true] val value: R|kotlin/Int| = R|<local>/value|
+            public [STATUS] [ContainingClassKey=Value] get(): R|kotlin/Int|
 
         public final [CONTRACTS] fun resolveMe(): R|kotlin/Unit| {
         }
diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/enumEntry.kt b/analysis/low-level-api-fir/testdata/lazyResolve/enumEntry.kt
new file mode 100644
index 0000000..06c2021
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/lazyResolve/enumEntry.kt
@@ -0,0 +1,6 @@
+annotation class Anno
+
+enum class Foo {
+    @Anno
+    ResolveMe
+}
\ No newline at end of file
diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/enumEntry.txt b/analysis/low-level-api-fir/testdata/lazyResolve/enumEntry.txt
new file mode 100644
index 0000000..c7667af
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/lazyResolve/enumEntry.txt
@@ -0,0 +1,385 @@
+RAW_FIR:
+FILE: enumEntry.kt
+    public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
+        public? [RAW_FIR] [ContainingClassKey=Anno] constructor(): R|Anno| {
+            super<R|kotlin/Any|>()
+        }
+
+    }
+    public? final? [RAW_FIR] enum class Foo : R|kotlin/Enum<Foo>| {
+        private [RAW_FIR] [ContainingClassKey=Foo] constructor(): R|Foo| {
+            super<R|kotlin/Enum<Foo>|>()
+        }
+
+        @Anno() public final static [RAW_FIR] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = LAZY_EXPRESSION
+        public final static [RAW_FIR] [ContainingClassKey=Foo] fun values(): R|kotlin/Array<Foo>| {
+        }
+
+        public final static [RAW_FIR] [ContainingClassKey=Foo] fun valueOf([RAW_FIR] value: R|kotlin/String|): R|Foo| {
+        }
+
+        public final static [RAW_FIR] [ContainingClassKey=Foo] val entries: R|kotlin/enums/EnumEntries<Foo>|
+            public [RAW_FIR] get(): R|kotlin/enums/EnumEntries<Foo>|
+
+    }
+
+IMPORTS:
+FILE: enumEntry.kt
+    public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
+        public? [RAW_FIR] [ContainingClassKey=Anno] constructor(): R|Anno| {
+            super<R|kotlin/Any|>()
+        }
+
+    }
+    public? final? [RAW_FIR] enum class Foo : R|kotlin/Enum<Foo>| {
+        private [RAW_FIR] [ContainingClassKey=Foo] constructor(): R|Foo| {
+            super<R|kotlin/Enum<Foo>|>()
+        }
+
+        @Anno() public final static [RAW_FIR] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = LAZY_EXPRESSION
+        public final static [RAW_FIR] [ContainingClassKey=Foo] fun values(): R|kotlin/Array<Foo>| {
+        }
+
+        public final static [RAW_FIR] [ContainingClassKey=Foo] fun valueOf([RAW_FIR] value: R|kotlin/String|): R|Foo| {
+        }
+
+        public final static [RAW_FIR] [ContainingClassKey=Foo] val entries: R|kotlin/enums/EnumEntries<Foo>|
+            public [RAW_FIR] get(): R|kotlin/enums/EnumEntries<Foo>|
+
+    }
+
+COMPILER_REQUIRED_ANNOTATIONS:
+FILE: enumEntry.kt
+    public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
+        public? [RAW_FIR] [ContainingClassKey=Anno] constructor(): R|Anno| {
+            super<R|kotlin/Any|>()
+        }
+
+    }
+    public? final? [RAW_FIR] enum class Foo : R|kotlin/Enum<Foo>| {
+        private [RAW_FIR] [ContainingClassKey=Foo] constructor(): R|Foo| {
+            super<R|kotlin/Enum<Foo>|>()
+        }
+
+        @Anno() public final static [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = LAZY_EXPRESSION
+        public final static [RAW_FIR] [ContainingClassKey=Foo] fun values(): R|kotlin/Array<Foo>| {
+        }
+
+        public final static [RAW_FIR] [ContainingClassKey=Foo] fun valueOf([RAW_FIR] value: R|kotlin/String|): R|Foo| {
+        }
+
+        public final static [RAW_FIR] [ContainingClassKey=Foo] val entries: R|kotlin/enums/EnumEntries<Foo>|
+            public [RAW_FIR] get(): R|kotlin/enums/EnumEntries<Foo>|
+
+    }
+
+COMPANION_GENERATION:
+FILE: enumEntry.kt
+    public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
+        public? [RAW_FIR] [ContainingClassKey=Anno] constructor(): R|Anno| {
+            super<R|kotlin/Any|>()
+        }
+
+    }
+    public? final? [RAW_FIR] enum class Foo : R|kotlin/Enum<Foo>| {
+        private [RAW_FIR] [ContainingClassKey=Foo] constructor(): R|Foo| {
+            super<R|kotlin/Enum<Foo>|>()
+        }
+
+        @Anno() public final static [COMPANION_GENERATION] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = LAZY_EXPRESSION
+        public final static [RAW_FIR] [ContainingClassKey=Foo] fun values(): R|kotlin/Array<Foo>| {
+        }
+
+        public final static [RAW_FIR] [ContainingClassKey=Foo] fun valueOf([RAW_FIR] value: R|kotlin/String|): R|Foo| {
+        }
+
+        public final static [RAW_FIR] [ContainingClassKey=Foo] val entries: R|kotlin/enums/EnumEntries<Foo>|
+            public [RAW_FIR] get(): R|kotlin/enums/EnumEntries<Foo>|
+
+    }
+
+SUPER_TYPES:
+FILE: enumEntry.kt
+    public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
+        public? [RAW_FIR] [ContainingClassKey=Anno] constructor(): R|Anno| {
+            super<R|kotlin/Any|>()
+        }
+
+    }
+    public? final? [RAW_FIR] enum class Foo : R|kotlin/Enum<Foo>| {
+        private [RAW_FIR] [ContainingClassKey=Foo] constructor(): R|Foo| {
+            super<R|kotlin/Enum<Foo>|>()
+        }
+
+        @Anno() public final static [SUPER_TYPES] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = LAZY_EXPRESSION
+        public final static [RAW_FIR] [ContainingClassKey=Foo] fun values(): R|kotlin/Array<Foo>| {
+        }
+
+        public final static [RAW_FIR] [ContainingClassKey=Foo] fun valueOf([RAW_FIR] value: R|kotlin/String|): R|Foo| {
+        }
+
+        public final static [RAW_FIR] [ContainingClassKey=Foo] val entries: R|kotlin/enums/EnumEntries<Foo>|
+            public [RAW_FIR] get(): R|kotlin/enums/EnumEntries<Foo>|
+
+    }
+
+TYPES:
+FILE: enumEntry.kt
+    public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
+        public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor(): R|Anno| {
+            super<R|kotlin/Any|>()
+        }
+
+    }
+    public? final? [SUPER_TYPES] enum class Foo : R|kotlin/Enum<Foo>| {
+        private [SUPER_TYPES] [ContainingClassKey=Foo] constructor(): R|Foo| {
+            super<R|kotlin/Enum<Foo>|>()
+        }
+
+        @R|Anno|() public final static [TYPES] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = LAZY_EXPRESSION
+        public final static [SUPER_TYPES] [ContainingClassKey=Foo] fun values(): R|kotlin/Array<Foo>| {
+        }
+
+        public final static [SUPER_TYPES] [ContainingClassKey=Foo] fun valueOf([SUPER_TYPES] value: R|kotlin/String|): R|Foo| {
+        }
+
+        public final static [SUPER_TYPES] [ContainingClassKey=Foo] val entries: R|kotlin/enums/EnumEntries<Foo>|
+            public [SUPER_TYPES] get(): R|kotlin/enums/EnumEntries<Foo>|
+
+    }
+
+STATUS:
+FILE: enumEntry.kt
+    public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
+        public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor(): R|Anno| {
+            super<R|kotlin/Any|>()
+        }
+
+    }
+    public final [SUPER_TYPES] enum class Foo : R|kotlin/Enum<Foo>| {
+        private [SUPER_TYPES] [ContainingClassKey=Foo] constructor(): R|Foo| {
+            super<R|kotlin/Enum<Foo>|>()
+        }
+
+        @R|Anno|() public final static [STATUS] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = LAZY_EXPRESSION
+        public final static [SUPER_TYPES] [ContainingClassKey=Foo] fun values(): R|kotlin/Array<Foo>| {
+        }
+
+        public final static [SUPER_TYPES] [ContainingClassKey=Foo] fun valueOf([SUPER_TYPES] value: R|kotlin/String|): R|Foo| {
+        }
+
+        public final static [SUPER_TYPES] [ContainingClassKey=Foo] val entries: R|kotlin/enums/EnumEntries<Foo>|
+            public [SUPER_TYPES] get(): R|kotlin/enums/EnumEntries<Foo>|
+
+    }
+
+ARGUMENTS_OF_ANNOTATIONS:
+FILE: enumEntry.kt
+    public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
+        public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor(): R|Anno| {
+            super<R|kotlin/Any|>()
+        }
+
+    }
+    public final [STATUS] enum class Foo : R|kotlin/Enum<Foo>| {
+        private [STATUS] [ContainingClassKey=Foo] constructor(): R|Foo| {
+            super<R|kotlin/Enum<Foo>|>()
+        }
+
+        @R|Anno|() public final static [ARGUMENTS_OF_ANNOTATIONS] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = LAZY_EXPRESSION
+        public final static [STATUS] [ContainingClassKey=Foo] fun values(): R|kotlin/Array<Foo>| {
+        }
+
+        public final static [STATUS] [ContainingClassKey=Foo] fun valueOf([STATUS] value: R|kotlin/String|): R|Foo| {
+        }
+
+        public final static [STATUS] [ContainingClassKey=Foo] val entries: R|kotlin/enums/EnumEntries<Foo>|
+            public [STATUS] get(): R|kotlin/enums/EnumEntries<Foo>|
+
+    }
+
+CONTRACTS:
+FILE: enumEntry.kt
+    public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
+        public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor(): R|Anno| {
+            super<R|kotlin/Any|>()
+        }
+
+    }
+    public final [STATUS] enum class Foo : R|kotlin/Enum<Foo>| {
+        private [STATUS] [ContainingClassKey=Foo] constructor(): R|Foo| {
+            super<R|kotlin/Enum<Foo>|>()
+        }
+
+        @R|Anno|() public final static [CONTRACTS] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = object : R|Foo| {
+            private [RAW_FIR] [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
+                super<R|Foo|>()
+            }
+
+        }
+
+        public final static [STATUS] [ContainingClassKey=Foo] fun values(): R|kotlin/Array<Foo>| {
+        }
+
+        public final static [STATUS] [ContainingClassKey=Foo] fun valueOf([STATUS] value: R|kotlin/String|): R|Foo| {
+        }
+
+        public final static [STATUS] [ContainingClassKey=Foo] val entries: R|kotlin/enums/EnumEntries<Foo>|
+            public [STATUS] get(): R|kotlin/enums/EnumEntries<Foo>|
+
+    }
+
+IMPLICIT_TYPES_BODY_RESOLVE:
+FILE: enumEntry.kt
+    public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
+        public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor(): R|Anno| {
+            super<R|kotlin/Any|>()
+        }
+
+    }
+    public final [STATUS] enum class Foo : R|kotlin/Enum<Foo>| {
+        private [STATUS] [ContainingClassKey=Foo] constructor(): R|Foo| {
+            super<R|kotlin/Enum<Foo>|>()
+        }
+
+        @R|Anno|() public final static [IMPLICIT_TYPES_BODY_RESOLVE] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = object : R|Foo| {
+            private [RAW_FIR] [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
+                super<R|Foo|>()
+            }
+
+        }
+
+        public final static [STATUS] [ContainingClassKey=Foo] fun values(): R|kotlin/Array<Foo>| {
+        }
+
+        public final static [STATUS] [ContainingClassKey=Foo] fun valueOf([STATUS] value: R|kotlin/String|): R|Foo| {
+        }
+
+        public final static [STATUS] [ContainingClassKey=Foo] val entries: R|kotlin/enums/EnumEntries<Foo>|
+            public [STATUS] get(): R|kotlin/enums/EnumEntries<Foo>|
+
+    }
+
+ANNOTATIONS_ARGUMENTS_MAPPING:
+FILE: enumEntry.kt
+    public final [SUPER_TYPES] annotation class Anno : R|kotlin/Annotation| {
+        public [STATUS] [ContainingClassKey=Anno] constructor(): R|Anno| {
+            super<R|kotlin/Any|>()
+        }
+
+    }
+    public final [STATUS] enum class Foo : R|kotlin/Enum<Foo>| {
+        private [STATUS] [ContainingClassKey=Foo] constructor(): R|Foo| {
+            super<R|kotlin/Enum<Foo>|>()
+        }
+
+        @R|Anno|() public final static [ANNOTATIONS_ARGUMENTS_MAPPING] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = object : R|Foo| {
+            private [RAW_FIR] [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
+                super<R|Foo|>()
+            }
+
+        }
+
+        public final static [STATUS] [ContainingClassKey=Foo] fun values(): R|kotlin/Array<Foo>| {
+        }
+
+        public final static [STATUS] [ContainingClassKey=Foo] fun valueOf([STATUS] value: R|kotlin/String|): R|Foo| {
+        }
+
+        public final static [STATUS] [ContainingClassKey=Foo] val entries: R|kotlin/enums/EnumEntries<Foo>|
+            public [STATUS] get(): R|kotlin/enums/EnumEntries<Foo>|
+
+    }
+
+EXPECT_ACTUAL_MATCHING:
+FILE: enumEntry.kt
+    public final [SUPER_TYPES] annotation class Anno : R|kotlin/Annotation| {
+        public [STATUS] [ContainingClassKey=Anno] constructor(): R|Anno| {
+            super<R|kotlin/Any|>()
+        }
+
+    }
+    public final [STATUS] enum class Foo : R|kotlin/Enum<Foo>| {
+        private [STATUS] [ContainingClassKey=Foo] constructor(): R|Foo| {
+            super<R|kotlin/Enum<Foo>|>()
+        }
+
+        @R|Anno|() public final static [EXPECT_ACTUAL_MATCHING] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = object : R|Foo| {
+            private [RAW_FIR] [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
+                super<R|Foo|>()
+            }
+
+        }
+
+        public final static [STATUS] [ContainingClassKey=Foo] fun values(): R|kotlin/Array<Foo>| {
+        }
+
+        public final static [STATUS] [ContainingClassKey=Foo] fun valueOf([STATUS] value: R|kotlin/String|): R|Foo| {
+        }
+
+        public final static [STATUS] [ContainingClassKey=Foo] val entries: R|kotlin/enums/EnumEntries<Foo>|
+            public [STATUS] get(): R|kotlin/enums/EnumEntries<Foo>|
+
+    }
+
+BODY_RESOLVE:
+FILE: enumEntry.kt
+    public final [SUPER_TYPES] annotation class Anno : R|kotlin/Annotation| {
+        public [STATUS] [ContainingClassKey=Anno] constructor(): R|Anno| {
+            super<R|kotlin/Any|>()
+        }
+
+    }
+    public final [STATUS] enum class Foo : R|kotlin/Enum<Foo>| {
+        private [STATUS] [ContainingClassKey=Foo] constructor(): R|Foo| {
+            super<R|kotlin/Enum<Foo>|>()
+        }
+
+        @R|Anno|() public final static [BODY_RESOLVE] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = object : R|Foo| {
+            private [BODY_RESOLVE] [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
+                super<R|Foo|>()
+            }
+
+        }
+
+        public final static [STATUS] [ContainingClassKey=Foo] fun values(): R|kotlin/Array<Foo>| {
+        }
+
+        public final static [STATUS] [ContainingClassKey=Foo] fun valueOf([STATUS] value: R|kotlin/String|): R|Foo| {
+        }
+
+        public final static [STATUS] [ContainingClassKey=Foo] val entries: R|kotlin/enums/EnumEntries<Foo>|
+            public [STATUS] get(): R|kotlin/enums/EnumEntries<Foo>|
+
+    }
+
+FILE RAW TO BODY:
+FILE: enumEntry.kt
+    public final [BODY_RESOLVE] annotation class Anno : R|kotlin/Annotation| {
+        public [BODY_RESOLVE] [ContainingClassKey=Anno] constructor(): R|Anno| {
+            super<R|kotlin/Any|>()
+        }
+
+    }
+    public final [BODY_RESOLVE] enum class Foo : R|kotlin/Enum<Foo>| {
+        private [BODY_RESOLVE] [ContainingClassKey=Foo] constructor(): R|Foo| {
+            super<R|kotlin/Enum<Foo>|>()
+        }
+
+        @R|Anno|() public final static [BODY_RESOLVE] [ContainingClassKey=Foo] enum entry ResolveMe: R|Foo| = object : R|Foo| {
+            private [BODY_RESOLVE] [ContainingClassKey=<anonymous>] constructor(): R|<anonymous>| {
+                super<R|Foo|>()
+            }
+
+        }
+
+        public final static [BODY_RESOLVE] [ContainingClassKey=Foo] fun values(): R|kotlin/Array<Foo>| {
+        }
+
+        public final static [BODY_RESOLVE] [ContainingClassKey=Foo] fun valueOf([BODY_RESOLVE] value: R|kotlin/String|): R|Foo| {
+        }
+
+        public final static [BODY_RESOLVE] [ContainingClassKey=Foo] val entries: R|kotlin/enums/EnumEntries<Foo>|
+            public [BODY_RESOLVE] get(): R|kotlin/enums/EnumEntries<Foo>|
+
+    }
diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/parameterOfNonLocalSetter.txt b/analysis/low-level-api-fir/testdata/lazyResolve/parameterOfNonLocalSetter.txt
index 90c60d7..70c3e2d 100644
--- a/analysis/low-level-api-fir/testdata/lazyResolve/parameterOfNonLocalSetter.txt
+++ b/analysis/low-level-api-fir/testdata/lazyResolve/parameterOfNonLocalSetter.txt
@@ -92,8 +92,8 @@
 
 ARGUMENTS_OF_ANNOTATIONS:
 FILE: parameterOfNonLocalSetter.kt
-    public final [SUPER_TYPES] class X : R|kotlin/Any| {
-        public? [SUPER_TYPES] [ContainingClassKey=X] constructor(): R|X| {
+    public final [STATUS] class X : R|kotlin/Any| {
+        public [STATUS] [ContainingClassKey=X] constructor(): R|X| {
             super<R|kotlin/Any|>()
         }
 
@@ -105,8 +105,8 @@
 
 CONTRACTS:
 FILE: parameterOfNonLocalSetter.kt
-    public final [SUPER_TYPES] class X : R|kotlin/Any| {
-        public? [SUPER_TYPES] [ContainingClassKey=X] constructor(): R|X| {
+    public final [STATUS] class X : R|kotlin/Any| {
+        public [STATUS] [ContainingClassKey=X] constructor(): R|X| {
             super<R|kotlin/Any|>()
         }
 
diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/typeParameterOfNonLocalFunction.txt b/analysis/low-level-api-fir/testdata/lazyResolve/typeParameterOfNonLocalFunction.txt
index fcd9390..6873b70 100644
--- a/analysis/low-level-api-fir/testdata/lazyResolve/typeParameterOfNonLocalFunction.txt
+++ b/analysis/low-level-api-fir/testdata/lazyResolve/typeParameterOfNonLocalFunction.txt
@@ -78,8 +78,8 @@
 
 ARGUMENTS_OF_ANNOTATIONS:
 FILE: typeParameterOfNonLocalFunction.kt
-    public final [SUPER_TYPES] class X : R|kotlin/Any| {
-        public? [SUPER_TYPES] [ContainingClassKey=X] constructor(): R|X| {
+    public final [STATUS] class X : R|kotlin/Any| {
+        public [STATUS] [ContainingClassKey=X] constructor(): R|X| {
             super<R|kotlin/Any|>()
         }
 
@@ -89,8 +89,8 @@
 
 CONTRACTS:
 FILE: typeParameterOfNonLocalFunction.kt
-    public final [SUPER_TYPES] class X : R|kotlin/Any| {
-        public? [SUPER_TYPES] [ContainingClassKey=X] constructor(): R|X| {
+    public final [STATUS] class X : R|kotlin/Any| {
+        public [STATUS] [ContainingClassKey=X] constructor(): R|X| {
             super<R|kotlin/Any|>()
         }
 
diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirLazyDeclarationResolveTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirLazyDeclarationResolveTestGenerated.java
index eb0100c..c0dfb1b 100644
--- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirLazyDeclarationResolveTestGenerated.java
+++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirLazyDeclarationResolveTestGenerated.java
@@ -49,6 +49,12 @@
     }
 
     @Test
+    @TestMetadata("enumEntry.kt")
+    public void testEnumEntry() throws Exception {
+        runTest("analysis/low-level-api-fir/testdata/lazyResolve/enumEntry.kt");
+    }
+
+    @Test
     @TestMetadata("functionWithParameter.kt")
     public void testFunctionWithParameter() throws Exception {
         runTest("analysis/low-level-api-fir/testdata/lazyResolve/functionWithParameter.kt");