[LL] ContextCollector: dump context only for real source elements

Some fake sources might be traversed and cached before the real element,
so an incorrect result might be returned.
That was the case for enum classes. They have a synthetic super type
reference with the fake (`EnumSuperTypeRef`) source which contains
the class psi. As a result, the incorrect context was captured and
returned for the class

^KT-79653 Fixed
diff --git a/analysis/analysis-api/testData/components/referenceShortener/shortenRange/nestedClasses/classHeaderPositions/constructorParameterVsTopLevelProperty_noConflict.txt b/analysis/analysis-api/testData/components/referenceShortener/shortenRange/nestedClasses/classHeaderPositions/constructorParameterVsTopLevelProperty_noConflict.txt
index 50fd645..36c0dce 100644
--- a/analysis/analysis-api/testData/components/referenceShortener/shortenRange/nestedClasses/classHeaderPositions/constructorParameterVsTopLevelProperty_noConflict.txt
+++ b/analysis/analysis-api/testData/components/referenceShortener/shortenRange/nestedClasses/classHeaderPositions/constructorParameterVsTopLevelProperty_noConflict.txt
@@ -14,16 +14,20 @@
 [qualifier] test.bigProperty
 [qualifier] test.bigProperty
 [qualifier] test.bigProperty
+[qualifier] test.bigProperty
 with DO_NOT_SHORTEN:
 with SHORTEN_IF_ALREADY_IMPORTED:
 [qualifier] test.bigProperty
 [qualifier] test.bigProperty
 [qualifier] test.bigProperty
+[qualifier] test.bigProperty
 with SHORTEN_AND_IMPORT:
 [qualifier] test.bigProperty
 [qualifier] test.bigProperty
 [qualifier] test.bigProperty
+[qualifier] test.bigProperty
 with SHORTEN_AND_STAR_IMPORT:
 [qualifier] test.bigProperty
 [qualifier] test.bigProperty
 [qualifier] test.bigProperty
+[qualifier] test.bigProperty
diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/ContextCollector.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/ContextCollector.kt
index 77fa947..8f71f9c 100644
--- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/ContextCollector.kt
+++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/ContextCollector.kt
@@ -13,22 +13,22 @@
 import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.partialBodyAnalysisState
 import org.jetbrains.kotlin.analysis.low.level.api.fir.api.withFirDesignationEntry
 import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.getNonLocalContainingOrThisDeclaration
+import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.isAutonomousElement
+import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.FirElementsRecorder.Companion.anchorPsi
 import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.LLPartialBodyElementMapper
 import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession
-import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.isAutonomousElement
 import org.jetbrains.kotlin.analysis.low.level.api.fir.util.ContextCollector.Context
 import org.jetbrains.kotlin.analysis.low.level.api.fir.util.ContextCollector.ContextKind
 import org.jetbrains.kotlin.analysis.low.level.api.fir.util.ContextCollector.FilterResponse
 import org.jetbrains.kotlin.fir.FirElement
+import org.jetbrains.kotlin.fir.SessionAndScopeSessionHolder
 import org.jetbrains.kotlin.fir.declarations.*
 import org.jetbrains.kotlin.fir.declarations.utils.isLocal
+import org.jetbrains.kotlin.fir.declarations.utils.isScriptTopLevelDeclaration
 import org.jetbrains.kotlin.fir.declarations.utils.memberDeclarationNameOrNull
 import org.jetbrains.kotlin.fir.expressions.*
-import org.jetbrains.kotlin.fir.psi
-import org.jetbrains.kotlin.fir.realPsi
-import org.jetbrains.kotlin.fir.SessionAndScopeSessionHolder
-import org.jetbrains.kotlin.fir.declarations.utils.isScriptTopLevelDeclaration
 import org.jetbrains.kotlin.fir.extensions.scriptResolutionHacksComponent
+import org.jetbrains.kotlin.fir.realPsi
 import org.jetbrains.kotlin.fir.resolve.SessionHolderImpl
 import org.jetbrains.kotlin.fir.resolve.calls.ImplicitValue
 import org.jetbrains.kotlin.fir.resolve.dfa.DataFlowAnalyzerContext
@@ -143,7 +143,7 @@
     private fun partiallyResolveTargetElementIfPossible(
         resolutionFacade: LLResolutionFacade,
         designation: FirDesignation?,
-        targetElement: PsiElement
+        targetElement: PsiElement,
     ): Boolean {
         val declaration = designation?.target?.realPsi as? KtDeclaration ?: return false
 
@@ -291,7 +291,7 @@
             return
         }
 
-        val psi = fir.psi ?: return
+        val psi = fir.anchorPsi ?: return
 
         val key = ContextKey(psi, kind)
         if (key in result) {
@@ -1087,7 +1087,7 @@
     private inner class FilteringVisitor(
         val delegate: FirVisitorVoid,
         val elementsToSkip: Set<FirElement>,
-        val checkIsActive: Boolean
+        val checkIsActive: Boolean,
     ) : FirVisitorVoid() {
         override fun visitElement(element: FirElement) {
             if (checkIsActive && !isActive) {
diff --git a/analysis/low-level-api-fir/testData/contextCollector/enumClass.body.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/enumClass.body.copy.txt
index 1b4297e..5d64e85 100644
--- a/analysis/low-level-api-fir/testData/contextCollector/enumClass.body.copy.txt
+++ b/analysis/low-level-api-fir/testData/contextCollector/enumClass.body.copy.txt
@@ -11,6 +11,35 @@
         Scope: FirPackageMemberScope
     Element 5
         Scope: FirExplicitSimpleImportingScope
+    Element 6
+        Implicit receiver:
+            FirRegularClassSymbol public final companion object Companion : R|kotlin/Any|
+                Type: kotlin.Enum.Companion
+    Element 7
+        Scope: FirNestedClassifierScopeWithSubstitution
+            Classifiers:
+                FirRegularClassSymbol public final companion object Companion : R|kotlin/Any|
+        Static scope owner symbol: FirRegularClassSymbol public abstract class Enum<E : R|kotlin/Enum<E>|> : R|kotlin/Comparable<E>|, R|java/io/Serializable|
+    Element 8
+        Scope: FirNestedClassifierScopeImpl
+            Classifiers:
+                FirRegularClassSymbol public final? inner class InnerClass : R|kotlin/Any|
+                FirRegularClassSymbol public final? class NestedClass : R|kotlin/Any|
+                FirRegularClassSymbol public final? object NestedObject : R|kotlin/Any|
+        Scope: FirNameAwareOnlyCallablesScope
+            Functions
+                FirNamedFunctionSymbol public final static fun valueOf(value: R|kotlin/String|): R|foo/MyEnumClass|
+                FirNamedFunctionSymbol public final static fun values(): R|kotlin/Array<foo/MyEnumClass>|
+            Properties:
+                FirEnumEntrySymbol public final static enum entry ENTRY1: R|foo/MyEnumClass|
+                FirEnumEntrySymbol public final static enum entry ENTRY2: R|foo/MyEnumClass|
+                FirEnumEntrySymbol public final static enum entry ENTRY3: R|foo/MyEnumClass|
+                FirRegularPropertySymbol public final static val entries: R|kotlin/enums/EnumEntries<foo/MyEnumClass>|
+                    public get(): R|kotlin/enums/EnumEntries<foo/MyEnumClass>|
+    Element 9
+        Implicit receiver:
+            FirRegularClassSymbol public final enum class MyEnumClass : R|kotlin/Enum<foo/MyEnumClass>|
+                Type: foo.MyEnumClass
 
 FILE: [ResolvedTo(IMPORTS)] enumClass.kt
     public final [ResolvedTo(STATUS)] enum class MyEnumClass : R|kotlin/Enum<foo/MyEnumClass>| {
diff --git a/analysis/low-level-api-fir/testData/contextCollector/enumClass.body.txt b/analysis/low-level-api-fir/testData/contextCollector/enumClass.body.txt
index 1b4297e..5d64e85 100644
--- a/analysis/low-level-api-fir/testData/contextCollector/enumClass.body.txt
+++ b/analysis/low-level-api-fir/testData/contextCollector/enumClass.body.txt
@@ -11,6 +11,35 @@
         Scope: FirPackageMemberScope
     Element 5
         Scope: FirExplicitSimpleImportingScope
+    Element 6
+        Implicit receiver:
+            FirRegularClassSymbol public final companion object Companion : R|kotlin/Any|
+                Type: kotlin.Enum.Companion
+    Element 7
+        Scope: FirNestedClassifierScopeWithSubstitution
+            Classifiers:
+                FirRegularClassSymbol public final companion object Companion : R|kotlin/Any|
+        Static scope owner symbol: FirRegularClassSymbol public abstract class Enum<E : R|kotlin/Enum<E>|> : R|kotlin/Comparable<E>|, R|java/io/Serializable|
+    Element 8
+        Scope: FirNestedClassifierScopeImpl
+            Classifiers:
+                FirRegularClassSymbol public final? inner class InnerClass : R|kotlin/Any|
+                FirRegularClassSymbol public final? class NestedClass : R|kotlin/Any|
+                FirRegularClassSymbol public final? object NestedObject : R|kotlin/Any|
+        Scope: FirNameAwareOnlyCallablesScope
+            Functions
+                FirNamedFunctionSymbol public final static fun valueOf(value: R|kotlin/String|): R|foo/MyEnumClass|
+                FirNamedFunctionSymbol public final static fun values(): R|kotlin/Array<foo/MyEnumClass>|
+            Properties:
+                FirEnumEntrySymbol public final static enum entry ENTRY1: R|foo/MyEnumClass|
+                FirEnumEntrySymbol public final static enum entry ENTRY2: R|foo/MyEnumClass|
+                FirEnumEntrySymbol public final static enum entry ENTRY3: R|foo/MyEnumClass|
+                FirRegularPropertySymbol public final static val entries: R|kotlin/enums/EnumEntries<foo/MyEnumClass>|
+                    public get(): R|kotlin/enums/EnumEntries<foo/MyEnumClass>|
+    Element 9
+        Implicit receiver:
+            FirRegularClassSymbol public final enum class MyEnumClass : R|kotlin/Enum<foo/MyEnumClass>|
+                Type: foo.MyEnumClass
 
 FILE: [ResolvedTo(IMPORTS)] enumClass.kt
     public final [ResolvedTo(STATUS)] enum class MyEnumClass : R|kotlin/Enum<foo/MyEnumClass>| {
diff --git a/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.body.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.body.copy.txt
deleted file mode 100644
index b34e835..0000000
--- a/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.body.copy.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-Tower Data Context:
-    Element 0
-        Scope: FirDefaultStarImportingScope
-    Element 1
-        Scope: FirExplicitStarImportingScope
-    Element 2
-        Scope: FirDefaultSimpleImportingScope
-    Element 3
-        Scope: FirDefaultSimpleImportingScope
-    Element 4
-        Scope: FirPackageMemberScope
-    Element 5
-        Scope: FirExplicitSimpleImportingScope
-    Element 6
-        Implicit receiver:
-            FirRegularClassSymbol public final companion object Companion : R|kotlin/Any|
-                Type: kotlin.Enum.Companion
-    Element 7
-        Scope: FirNestedClassifierScopeWithSubstitution
-            Classifiers:
-                FirRegularClassSymbol public final companion object Companion : R|kotlin/Any|
-        Static scope owner symbol: FirRegularClassSymbol public abstract class Enum<E : R|kotlin/Enum<E>|> : R|kotlin/Comparable<E>|, R|java/io/Serializable|
-    Element 8
-        Scope: FirNameAwareOnlyCallablesScope
-            Functions
-                FirNamedFunctionSymbol public final static fun valueOf(value: R|kotlin/String|): R|Direction|
-                FirNamedFunctionSymbol public final static fun values(): R|kotlin/Array<Direction>|
-            Properties:
-                FirEnumEntrySymbol public final static enum entry EAST: R|Direction|
-                FirEnumEntrySymbol public final static enum entry NORTH: R|Direction|
-                FirEnumEntrySymbol public final static enum entry SOUTH: R|Direction|
-                FirEnumEntrySymbol public final static enum entry WEST: R|Direction|
-                FirRegularPropertySymbol public final static val entries: R|kotlin/enums/EnumEntries<Direction>|
-                    public get(): R|kotlin/enums/EnumEntries<Direction>|
-    Element 9
-        Implicit receiver:
-            FirAnonymousObjectSymbol object : R|Direction|
-                Type: <anonymous>
-    Element 10
-        Scope: FirLocalScope
-            Properties:
-                FirBackingFieldSymbol private final backing field field: R|kotlin/Int|
-    Element 11
-        Scope: FirLocalScope
-
-FILE: [ResolvedTo(IMPORTS)] enumValuePropertyAccessor.kt
-    public final? [ResolvedTo(RAW_FIR)] enum class Direction : R|kotlin/Enum<Direction>| {
-        private [ResolvedTo(RAW_FIR)] constructor(): R|Direction| {
-            LAZY_super<R|kotlin/Enum<Direction>|>
-        }
-
-        public final static [ResolvedTo(RAW_FIR)] enum entry NORTH: R|Direction| = LAZY_EXPRESSION
-        public final static [ResolvedTo(BODY_RESOLVE)] enum entry EAST: R|Direction| = object : R|Direction| {
-            private [ResolvedTo(BODY_RESOLVE)] constructor(): R|<anonymous>| {
-                super<R|Direction|>()
-            }
-
-            public open override [ResolvedTo(BODY_RESOLVE)] val code: R|kotlin/Int|
-                public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int| {
-                    ^ Int(2)
-                }
-
-        }
-
-        public final static [ResolvedTo(RAW_FIR)] enum entry SOUTH: R|Direction| = LAZY_EXPRESSION
-        public final static [ResolvedTo(RAW_FIR)] enum entry WEST: R|Direction| = LAZY_EXPRESSION
-        public? abstract [ResolvedTo(RAW_FIR)] val code: Int
-            public? [ResolvedTo(RAW_FIR)] get(): Int
-
-        public final static [ResolvedTo(RAW_FIR)] fun values(): R|kotlin/Array<Direction>| {
-        }
-
-        public final static [ResolvedTo(RAW_FIR)] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|Direction| {
-        }
-
-        public final static [ResolvedTo(RAW_FIR)] val entries: R|kotlin/enums/EnumEntries<Direction>|
-            public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries<Direction>|
-
-    }
\ No newline at end of file
diff --git a/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.body.txt b/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.body.txt
deleted file mode 100644
index f04d198..0000000
--- a/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.body.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-Tower Data Context:
-    Element 0
-        Scope: FirDefaultStarImportingScope
-    Element 1
-        Scope: FirExplicitStarImportingScope
-    Element 2
-        Scope: FirDefaultSimpleImportingScope
-    Element 3
-        Scope: FirDefaultSimpleImportingScope
-    Element 4
-        Scope: FirPackageMemberScope
-    Element 5
-        Scope: FirExplicitSimpleImportingScope
-    Element 6
-        Implicit receiver:
-            FirRegularClassSymbol public final companion object Companion : R|kotlin/Any|
-                Type: kotlin.Enum.Companion
-    Element 7
-        Scope: FirNestedClassifierScopeWithSubstitution
-            Classifiers:
-                FirRegularClassSymbol public final companion object Companion : R|kotlin/Any|
-        Static scope owner symbol: FirRegularClassSymbol public abstract class Enum<E : R|kotlin/Enum<E>|> : R|kotlin/Comparable<E>|, R|java/io/Serializable|
-    Element 8
-        Scope: FirNameAwareOnlyCallablesScope
-            Functions
-                FirNamedFunctionSymbol public final static fun valueOf(value: R|kotlin/String|): R|Direction|
-                FirNamedFunctionSymbol public final static fun values(): R|kotlin/Array<Direction>|
-            Properties:
-                FirEnumEntrySymbol public final static enum entry EAST: R|Direction|
-                FirEnumEntrySymbol public final static enum entry NORTH: R|Direction|
-                FirEnumEntrySymbol public final static enum entry SOUTH: R|Direction|
-                FirEnumEntrySymbol public final static enum entry WEST: R|Direction|
-                FirRegularPropertySymbol public final static val entries: R|kotlin/enums/EnumEntries<Direction>|
-                    public get(): R|kotlin/enums/EnumEntries<Direction>|
-    Element 9
-        Implicit receiver:
-            FirAnonymousObjectSymbol object : R|Direction|
-                Type: <anonymous>
-    Element 10
-        Scope: FirLocalScope
-            Properties:
-                FirBackingFieldSymbol private final backing field field: R|kotlin/Int|
-    Element 11
-        Scope: FirLocalScope
-
-FILE: [ResolvedTo(IMPORTS)] enumValuePropertyAccessor.kt
-    public final [ResolvedTo(STATUS)] enum class Direction : R|kotlin/Enum<Direction>| {
-        private [ResolvedTo(STATUS)] constructor(): R|Direction| {
-            LAZY_super<R|kotlin/Enum<Direction>|>
-        }
-
-        public final static [ResolvedTo(STATUS)] enum entry NORTH: R|Direction| = LAZY_EXPRESSION
-        public final static [ResolvedTo(BODY_RESOLVE)] enum entry EAST: R|Direction| = object : R|Direction| {
-            private [ResolvedTo(BODY_RESOLVE)] constructor(): R|<anonymous>| {
-                super<R|Direction|>()
-            }
-
-            public open override [ResolvedTo(BODY_RESOLVE)] val code: R|kotlin/Int|
-                public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int| {
-                    ^ Int(2)
-                }
-
-        }
-
-        public final static [ResolvedTo(STATUS)] enum entry SOUTH: R|Direction| = LAZY_EXPRESSION
-        public final static [ResolvedTo(STATUS)] enum entry WEST: R|Direction| = LAZY_EXPRESSION
-        public abstract [ResolvedTo(STATUS)] val code: R|kotlin/Int|
-            public [ResolvedTo(STATUS)] get(): R|kotlin/Int|
-
-        public final static [ResolvedTo(STATUS)] fun values(): R|kotlin/Array<Direction>| {
-        }
-
-        public final static [ResolvedTo(STATUS)] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|Direction| {
-        }
-
-        public final static [ResolvedTo(STATUS)] val entries: R|kotlin/enums/EnumEntries<Direction>|
-            public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries<Direction>|
-
-    }
\ No newline at end of file
diff --git a/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.copy.txt
index f4830b6..b34e835 100644
--- a/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.copy.txt
+++ b/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.copy.txt
@@ -40,6 +40,8 @@
         Scope: FirLocalScope
             Properties:
                 FirBackingFieldSymbol private final backing field field: R|kotlin/Int|
+    Element 11
+        Scope: FirLocalScope
 
 FILE: [ResolvedTo(IMPORTS)] enumValuePropertyAccessor.kt
     public final? [ResolvedTo(RAW_FIR)] enum class Direction : R|kotlin/Enum<Direction>| {
diff --git a/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.txt b/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.txt
index c88c015..f04d198 100644
--- a/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.txt
+++ b/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.txt
@@ -40,6 +40,8 @@
         Scope: FirLocalScope
             Properties:
                 FirBackingFieldSymbol private final backing field field: R|kotlin/Int|
+    Element 11
+        Scope: FirLocalScope
 
 FILE: [ResolvedTo(IMPORTS)] enumValuePropertyAccessor.kt
     public final [ResolvedTo(STATUS)] enum class Direction : R|kotlin/Enum<Direction>| {
diff --git a/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.body.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.body.copy.txt
deleted file mode 100644
index 861252b..0000000
--- a/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.body.copy.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-Tower Data Context:
-    Element 0
-        Scope: FirDefaultStarImportingScope
-    Element 1
-        Scope: FirExplicitStarImportingScope
-    Element 2
-        Scope: FirExplicitStarImportingScope
-    Element 3
-        Scope: FirDefaultSimpleImportingScope
-    Element 4
-        Scope: FirDefaultSimpleImportingScope
-    Element 5
-        Scope: FirExplicitSimpleImportingScope
-    Element 6
-        Scope: FirPackageMemberScope
-    Element 7
-        Scope: FirExplicitSimpleImportingScope
-    Element 8
-        Implicit receiver:
-            FirReceiverParameterSymbol <script receiver parameter>: R|kotlin/script/templates/standard/ScriptTemplateWithArgs|
-                Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
-    Element 9
-        Scope: FirScriptDeclarationsScope
-            Classifiers:
-                FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any|
-            Functions
-                FirNamedFunctionSymbol public? final? fun foo(i: Int, action: ( (Int) -> Unit )): R|kotlin/Unit|
-                FirNamedFunctionSymbol public final fun scriptFunction(): R|kotlin/Int|
-                FirNamedFunctionSymbol public? final? fun unusedScriptFunction(p: String): <implicit>
-            Properties:
-                FirRegularPropertySymbol public final val $$result: <implicit>
-                    public get(): <implicit>
-    Element 10
-        Scope: FirLocalScope
-    Element 11
-        Scope: FirLocalScope
-    Element 12
-        Scope: FirLocalScope
-
-FILE: [ResolvedTo(IMPORTS)] statement.kts
-    SCRIPT: [ResolvedTo(RAW_FIR)] <script-statement.kts>
-        [ResolvedTo(RAW_FIR)] <script receiver parameter>: R|kotlin/script/templates/standard/ScriptTemplateWithArgs|
-        [ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
-
-        public final? [ResolvedTo(RAW_FIR)] class ScriptClass : R|kotlin/Any| {
-            public? [ResolvedTo(RAW_FIR)] constructor(): R|ScriptClass| {
-                LAZY_super<R|kotlin/Any|>
-            }
-
-            public? final? [ResolvedTo(RAW_FIR)] val memberProperty: <implicit> = LAZY_EXPRESSION
-                public? [ResolvedTo(RAW_FIR)] get(): <implicit>
-
-        }
-
-        public? final? [ResolvedTo(RAW_FIR)] fun scriptFunction(): <implicit> { LAZY_BLOCK }
-
-        public? final? [ResolvedTo(RAW_FIR)] fun unusedScriptFunction([ResolvedTo(RAW_FIR)] p: String): <implicit> { LAZY_BLOCK }
-
-        [ResolvedTo(BODY_RESOLVE)] init {
-            R|/scriptFunction|()
-        }
-
-        public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int, [ResolvedTo(RAW_FIR)] action: ( (Int) -> Unit )): R|kotlin/Unit| { LAZY_BLOCK }
-
-        public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = foo#(LAZY_EXPRESSION, LAZY_EXPRESSION)
-            public [ResolvedTo(RAW_FIR)] get(): <implicit>
\ No newline at end of file
diff --git a/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.body.txt b/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.body.txt
deleted file mode 100644
index eb084ee..0000000
--- a/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.body.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-Tower Data Context:
-    Element 0
-        Scope: FirDefaultStarImportingScope
-    Element 1
-        Scope: FirExplicitStarImportingScope
-    Element 2
-        Scope: FirExplicitStarImportingScope
-    Element 3
-        Scope: FirDefaultSimpleImportingScope
-    Element 4
-        Scope: FirDefaultSimpleImportingScope
-    Element 5
-        Scope: FirExplicitSimpleImportingScope
-    Element 6
-        Scope: FirPackageMemberScope
-    Element 7
-        Scope: FirExplicitSimpleImportingScope
-    Element 8
-        Implicit receiver:
-            FirReceiverParameterSymbol <script receiver parameter>: R|kotlin/script/templates/standard/ScriptTemplateWithArgs|
-                Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
-    Element 9
-        Scope: FirScriptDeclarationsScope
-            Classifiers:
-                FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any|
-            Functions
-                FirNamedFunctionSymbol public? final? fun foo(i: Int, action: ( (Int) -> Unit )): R|kotlin/Unit|
-                FirNamedFunctionSymbol public final fun scriptFunction(): R|kotlin/Int|
-                FirNamedFunctionSymbol public? final? fun unusedScriptFunction(p: String): <implicit>
-            Properties:
-                FirRegularPropertySymbol public final val $$result: <implicit>
-                    public get(): <implicit>
-    Element 10
-        Scope: FirLocalScope
-    Element 11
-        Scope: FirLocalScope
-    Element 12
-        Scope: FirLocalScope
-
-FILE: [ResolvedTo(IMPORTS)] statement.kts
-    SCRIPT: [ResolvedTo(TYPES)] <script-statement.kts>
-        [ResolvedTo(TYPES)] <script receiver parameter>: R|kotlin/script/templates/standard/ScriptTemplateWithArgs|
-        [ResolvedTo(TYPES)] lval args: R|kotlin/Array<kotlin/String>|
-
-        public final? [ResolvedTo(RAW_FIR)] class ScriptClass : R|kotlin/Any| {
-            public? [ResolvedTo(RAW_FIR)] constructor(): R|ScriptClass| {
-                LAZY_super<R|kotlin/Any|>
-            }
-
-            public? final? [ResolvedTo(RAW_FIR)] val memberProperty: <implicit> = LAZY_EXPRESSION
-                public? [ResolvedTo(RAW_FIR)] get(): <implicit>
-
-        }
-
-        public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun scriptFunction(): R|kotlin/Int| {
-            ^scriptFunction Int(42)
-        }
-
-        public? final? [ResolvedTo(RAW_FIR)] fun unusedScriptFunction([ResolvedTo(RAW_FIR)] p: String): <implicit> { LAZY_BLOCK }
-
-        [ResolvedTo(BODY_RESOLVE)] init {
-            R|/scriptFunction|()
-        }
-
-        public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int, [ResolvedTo(RAW_FIR)] action: ( (Int) -> Unit )): R|kotlin/Unit| { LAZY_BLOCK }
-
-        public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = foo#(LAZY_EXPRESSION, LAZY_EXPRESSION)
-            public [ResolvedTo(RAW_FIR)] get(): <implicit>
\ No newline at end of file
diff --git a/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.copy.txt
index 94682aa..861252b 100644
--- a/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.copy.txt
+++ b/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.copy.txt
@@ -34,6 +34,8 @@
         Scope: FirLocalScope
     Element 11
         Scope: FirLocalScope
+    Element 12
+        Scope: FirLocalScope
 
 FILE: [ResolvedTo(IMPORTS)] statement.kts
     SCRIPT: [ResolvedTo(RAW_FIR)] <script-statement.kts>
diff --git a/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.txt b/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.txt
index a58199c..eb084ee 100644
--- a/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.txt
+++ b/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.txt
@@ -34,6 +34,8 @@
         Scope: FirLocalScope
     Element 11
         Scope: FirLocalScope
+    Element 12
+        Scope: FirLocalScope
 
 FILE: [ResolvedTo(IMPORTS)] statement.kts
     SCRIPT: [ResolvedTo(TYPES)] <script-statement.kts>
diff --git a/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.body.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.body.copy.txt
deleted file mode 100644
index ce64c32..0000000
--- a/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.body.copy.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-Tower Data Context:
-    Element 0
-        Scope: FirDefaultStarImportingScope
-    Element 1
-        Scope: FirExplicitStarImportingScope
-    Element 2
-        Scope: FirExplicitStarImportingScope
-    Element 3
-        Scope: FirDefaultSimpleImportingScope
-    Element 4
-        Scope: FirDefaultSimpleImportingScope
-    Element 5
-        Scope: FirExplicitSimpleImportingScope
-    Element 6
-        Scope: FirPackageMemberScope
-    Element 7
-        Scope: FirExplicitSimpleImportingScope
-    Element 8
-        Implicit receiver:
-            FirReceiverParameterSymbol <script receiver parameter>: R|kotlin/script/templates/standard/ScriptTemplateWithArgs|
-                Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
-    Element 9
-        Scope: FirScriptDeclarationsScope
-            Classifiers:
-                FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any|
-                FirRegularClassSymbol public final? class Before_OtherClass : R|kotlin/Any|
-            Functions
-                FirNamedFunctionSymbol public? final? fun after_Fun(): R|kotlin/Unit|
-                FirNamedFunctionSymbol public? final? fun before_Fun(): R|kotlin/Unit|
-            Properties:
-                FirRegularPropertySymbol public? final? val after_Val: <implicit>
-                    public? get(): <implicit>
-                FirRegularPropertySymbol public? final? val before_Val: <implicit>
-                    public? get(): <implicit>
-    Element 10
-        Scope: FirLocalScope
-    Element 11
-        Scope: FirLocalScope
-    Element 12
-        Scope: FirLocalScope
-
-FILE: [ResolvedTo(IMPORTS)] topLevel.kts
-    SCRIPT: [ResolvedTo(RAW_FIR)] <script-topLevel.kts>
-        [ResolvedTo(RAW_FIR)] <script receiver parameter>: R|kotlin/script/templates/standard/ScriptTemplateWithArgs|
-        [ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
-
-        public? final? [ResolvedTo(RAW_FIR)] fun before_Fun(): R|kotlin/Unit| { LAZY_BLOCK }
-
-        public? final? [ResolvedTo(RAW_FIR)] val before_Val: <implicit> = LAZY_EXPRESSION
-            public? [ResolvedTo(RAW_FIR)] get(): <implicit>
-
-        public final? [ResolvedTo(RAW_FIR)] class Before_OtherClass : R|kotlin/Any| {
-            public? [ResolvedTo(RAW_FIR)] constructor(): R|Before_OtherClass| {
-                LAZY_super<R|kotlin/Any|>
-            }
-
-        }
-
-        [ResolvedTo(BODY_RESOLVE)] init {
-            this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args|
-        }
-
-        public? final? [ResolvedTo(RAW_FIR)] fun after_Fun(): R|kotlin/Unit| { LAZY_BLOCK }
-
-        public? final? [ResolvedTo(RAW_FIR)] val after_Val: <implicit> = LAZY_EXPRESSION
-            public? [ResolvedTo(RAW_FIR)] get(): <implicit>
-
-        public final? [ResolvedTo(RAW_FIR)] class After_OtherClass : R|kotlin/Any| {
-            public? [ResolvedTo(RAW_FIR)] constructor(): R|After_OtherClass| {
-                LAZY_super<R|kotlin/Any|>
-            }
-
-        }
\ No newline at end of file
diff --git a/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.body.txt b/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.body.txt
deleted file mode 100644
index ed8d8c0..0000000
--- a/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.body.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-Tower Data Context:
-    Element 0
-        Scope: FirDefaultStarImportingScope
-    Element 1
-        Scope: FirExplicitStarImportingScope
-    Element 2
-        Scope: FirExplicitStarImportingScope
-    Element 3
-        Scope: FirDefaultSimpleImportingScope
-    Element 4
-        Scope: FirDefaultSimpleImportingScope
-    Element 5
-        Scope: FirExplicitSimpleImportingScope
-    Element 6
-        Scope: FirPackageMemberScope
-    Element 7
-        Scope: FirExplicitSimpleImportingScope
-    Element 8
-        Implicit receiver:
-            FirReceiverParameterSymbol <script receiver parameter>: R|kotlin/script/templates/standard/ScriptTemplateWithArgs|
-                Type: kotlin.script.templates.standard.ScriptTemplateWithArgs
-    Element 9
-        Scope: FirScriptDeclarationsScope
-            Classifiers:
-                FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any|
-                FirRegularClassSymbol public final? class Before_OtherClass : R|kotlin/Any|
-            Functions
-                FirNamedFunctionSymbol public? final? fun after_Fun(): R|kotlin/Unit|
-                FirNamedFunctionSymbol public? final? fun before_Fun(): R|kotlin/Unit|
-            Properties:
-                FirRegularPropertySymbol public? final? val after_Val: <implicit>
-                    public? get(): <implicit>
-                FirRegularPropertySymbol public? final? val before_Val: <implicit>
-                    public? get(): <implicit>
-    Element 10
-        Scope: FirLocalScope
-    Element 11
-        Scope: FirLocalScope
-    Element 12
-        Scope: FirLocalScope
-
-FILE: [ResolvedTo(IMPORTS)] topLevel.kts
-    SCRIPT: [ResolvedTo(TYPES)] <script-topLevel.kts>
-        [ResolvedTo(TYPES)] <script receiver parameter>: R|kotlin/script/templates/standard/ScriptTemplateWithArgs|
-        [ResolvedTo(TYPES)] lval args: R|kotlin/Array<kotlin/String>|
-
-        public? final? [ResolvedTo(RAW_FIR)] fun before_Fun(): R|kotlin/Unit| { LAZY_BLOCK }
-
-        public? final? [ResolvedTo(RAW_FIR)] val before_Val: <implicit> = LAZY_EXPRESSION
-            public? [ResolvedTo(RAW_FIR)] get(): <implicit>
-
-        public final? [ResolvedTo(RAW_FIR)] class Before_OtherClass : R|kotlin/Any| {
-            public? [ResolvedTo(RAW_FIR)] constructor(): R|Before_OtherClass| {
-                LAZY_super<R|kotlin/Any|>
-            }
-
-        }
-
-        [ResolvedTo(BODY_RESOLVE)] init {
-            this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args|
-        }
-
-        public? final? [ResolvedTo(RAW_FIR)] fun after_Fun(): R|kotlin/Unit| { LAZY_BLOCK }
-
-        public? final? [ResolvedTo(RAW_FIR)] val after_Val: <implicit> = LAZY_EXPRESSION
-            public? [ResolvedTo(RAW_FIR)] get(): <implicit>
-
-        public final? [ResolvedTo(RAW_FIR)] class After_OtherClass : R|kotlin/Any| {
-            public? [ResolvedTo(RAW_FIR)] constructor(): R|After_OtherClass| {
-                LAZY_super<R|kotlin/Any|>
-            }
-
-        }
\ No newline at end of file
diff --git a/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.copy.txt
index a2d3fb1..ce64c32 100644
--- a/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.copy.txt
+++ b/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.copy.txt
@@ -36,6 +36,8 @@
         Scope: FirLocalScope
     Element 11
         Scope: FirLocalScope
+    Element 12
+        Scope: FirLocalScope
 
 FILE: [ResolvedTo(IMPORTS)] topLevel.kts
     SCRIPT: [ResolvedTo(RAW_FIR)] <script-topLevel.kts>
diff --git a/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.txt b/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.txt
index 4b7a225..ed8d8c0 100644
--- a/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.txt
+++ b/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.txt
@@ -36,6 +36,8 @@
         Scope: FirLocalScope
     Element 11
         Scope: FirLocalScope
+    Element 12
+        Scope: FirLocalScope
 
 FILE: [ResolvedTo(IMPORTS)] topLevel.kts
     SCRIPT: [ResolvedTo(TYPES)] <script-topLevel.kts>
diff --git a/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.body.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.body.copy.txt
deleted file mode 100644
index 12893ad..0000000
--- a/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.body.copy.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-Tower Data Context:
-    Element 0
-        Scope: FirDefaultStarImportingScope
-    Element 1
-        Scope: FirExplicitStarImportingScope
-    Element 2
-        Scope: FirDefaultSimpleImportingScope
-    Element 3
-        Scope: FirDefaultSimpleImportingScope
-    Element 4
-        Scope: FirPackageMemberScope
-    Element 5
-        Scope: FirExplicitSimpleImportingScope
-    Element 6
-        Scope: FirLocalScope
-            Properties:
-                FirValueParameterSymbol obj: R|kotlin/Any|
-    Element 7
-        Scope: FirLocalScope
-            Properties:
-                FirLocalPropertySymbol lval <when-subject>: R|kotlin/Any|
-    Element 8
-        Scope: FirLocalScope
-Smart Casts:
-    FirLocalPropertySymbol lval <when-subject>: R|kotlin/Any|
-    Types:
-        Bar
-        kotlin.Any
-    FirValueParameterSymbol obj: R|kotlin/Any|
-    Types:
-        Bar
-        kotlin.Any
-
-FILE: [ResolvedTo(IMPORTS)] when.kt
-    public final? [ResolvedTo(RAW_FIR)] interface Foo : R|kotlin/Any| {
-        public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit|
-
-    }
-    public final? [ResolvedTo(RAW_FIR)] interface Bar : R|kotlin/Any| {
-        public? final? [ResolvedTo(RAW_FIR)] fun bar(): R|kotlin/Unit|
-
-    }
-    public final [ResolvedTo(BODY_RESOLVE)] fun test([ResolvedTo(BODY_RESOLVE)] obj: R|kotlin/Any|): R|kotlin/Unit| {
-        when ([ResolvedTo(BODY_RESOLVE)] lval <when-subject>: R|kotlin/Any| = R|<local>/obj|) {
-            ($subj$ is R|Foo|) ->  {
-                R|<local>/obj|.R|/Foo.foo|()
-            }
-            ($subj$ is R|Bar|) ->  {
-                R|<local>/obj|.R|/Bar.bar|()
-            }
-        }
-
-    }
\ No newline at end of file
diff --git a/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.body.txt b/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.body.txt
deleted file mode 100644
index b216b9a..0000000
--- a/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.body.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-Tower Data Context:
-    Element 0
-        Scope: FirDefaultStarImportingScope
-    Element 1
-        Scope: FirExplicitStarImportingScope
-    Element 2
-        Scope: FirDefaultSimpleImportingScope
-    Element 3
-        Scope: FirDefaultSimpleImportingScope
-    Element 4
-        Scope: FirPackageMemberScope
-    Element 5
-        Scope: FirExplicitSimpleImportingScope
-    Element 6
-        Scope: FirLocalScope
-            Properties:
-                FirValueParameterSymbol obj: R|kotlin/Any|
-    Element 7
-        Scope: FirLocalScope
-            Properties:
-                FirLocalPropertySymbol lval <when-subject>: R|kotlin/Any|
-    Element 8
-        Scope: FirLocalScope
-Smart Casts:
-    FirLocalPropertySymbol lval <when-subject>: R|kotlin/Any|
-    Types:
-        Bar
-        kotlin.Any
-    FirValueParameterSymbol obj: R|kotlin/Any|
-    Types:
-        Bar
-        kotlin.Any
-
-FILE: [ResolvedTo(IMPORTS)] when.kt
-    public abstract [ResolvedTo(STATUS)] interface Foo : R|kotlin/Any| {
-        public abstract [ResolvedTo(CONTRACTS)] fun foo(): R|kotlin/Unit|
-
-    }
-    public abstract [ResolvedTo(STATUS)] interface Bar : R|kotlin/Any| {
-        public abstract [ResolvedTo(CONTRACTS)] fun bar(): R|kotlin/Unit|
-
-    }
-    public final [ResolvedTo(BODY_RESOLVE)] fun test([ResolvedTo(BODY_RESOLVE)] obj: R|kotlin/Any|): R|kotlin/Unit| {
-        when ([ResolvedTo(BODY_RESOLVE)] lval <when-subject>: R|kotlin/Any| = R|<local>/obj|) {
-            ($subj$ is R|Foo|) ->  {
-                R|<local>/obj|.R|/Foo.foo|()
-            }
-            ($subj$ is R|Bar|) ->  {
-                R|<local>/obj|.R|/Bar.bar|()
-            }
-        }
-
-    }
\ No newline at end of file
diff --git a/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.copy.txt
index 59550e4..12893ad 100644
--- a/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.copy.txt
+++ b/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.copy.txt
@@ -19,6 +19,8 @@
         Scope: FirLocalScope
             Properties:
                 FirLocalPropertySymbol lval <when-subject>: R|kotlin/Any|
+    Element 8
+        Scope: FirLocalScope
 Smart Casts:
     FirLocalPropertySymbol lval <when-subject>: R|kotlin/Any|
     Types:
diff --git a/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.txt b/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.txt
index 5296933..b216b9a 100644
--- a/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.txt
+++ b/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.txt
@@ -19,6 +19,8 @@
         Scope: FirLocalScope
             Properties:
                 FirLocalPropertySymbol lval <when-subject>: R|kotlin/Any|
+    Element 8
+        Scope: FirLocalScope
 Smart Casts:
     FirLocalPropertySymbol lval <when-subject>: R|kotlin/Any|
     Types: