diff --git a/compiler/fir/analysis-tests/testData/resolve/cfg/localClassesWithImplicit.dot b/compiler/fir/analysis-tests/testData/resolve/cfg/localClassesWithImplicit.dot
index ada79ed..1276e76 100644
--- a/compiler/fir/analysis-tests/testData/resolve/cfg/localClassesWithImplicit.dot
+++ b/compiler/fir/analysis-tests/testData/resolve/cfg/localClassesWithImplicit.dot
@@ -151,7 +151,7 @@
                             60 [label="Enter block"];
                             61 [label="Access variable R|<local>/b|"];
                             62 [label="Access variable R|kotlin/String.length|"];
-                            63 [label="Function call: this@R|/A|.R|/A.bar|()"];
+                            63 [label="Function call: this@R|/A|.R|<local>/bar|()"];
                             64 [label="Exit block"];
                         }
                         65 [label="Exit when branch result"];
@@ -168,7 +168,7 @@
     ^ when () {
         (R|<local>/b| is R|kotlin/String|) ->  {
             R|<local>/b|.R|kotlin/String.length|
-            this@R|/A|.R|/A.bar|()
+            this@R|/A|.R|<local>/bar|()
         }
         else ->  {
             Int(1)
@@ -238,7 +238,7 @@
                     81 [label="Access variable <Unresolved name: length>#"];
                     82 [label="Access variable R|<local>/a|"];
                     83 [label="Access variable R|kotlin/String.length|"];
-                    84 [label="Function call: this@R|/A|.R|/A.baz|()"];
+                    84 [label="Function call: this@R|/A|.R|<local>/baz|()"];
                     85 [label="Exit block"];
                 }
                 86 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
@@ -248,7 +248,7 @@
             74 [label="Jump: ^bar R|/myRun|<R|kotlin/Int|>(<L> = myRun@fun <anonymous>(): R|kotlin/Int| <inline=Inline, kind=UNKNOWN>  {
     R|<local>/b|.<Unresolved name: length>#
     R|<local>/a|.R|kotlin/String.length|
-    ^ this@R|/A|.R|/A.baz|()
+    ^ this@R|/A|.R|<local>/baz|()
 }
 )"];
             75 [label="Stub" style="filled" fillcolor=gray];
@@ -352,7 +352,7 @@
                             123 [label="Enter block"];
                             124 [label="Access variable R|<local>/b|"];
                             125 [label="Access variable R|kotlin/String.length|"];
-                            126 [label="Function call: this@R|/<anonymous>|.R|/<anonymous>.bar|()"];
+                            126 [label="Function call: this@R|/<anonymous>|.R|<local>/bar|()"];
                             127 [label="Exit block"];
                         }
                         128 [label="Exit when branch result"];
@@ -369,7 +369,7 @@
     ^ when () {
         (R|<local>/b| is R|kotlin/String|) ->  {
             R|<local>/b|.R|kotlin/String.length|
-            this@R|/<anonymous>|.R|/<anonymous>.bar|()
+            this@R|/<anonymous>|.R|<local>/bar|()
         }
         else ->  {
             Int(1)
@@ -439,7 +439,7 @@
                     144 [label="Access variable R|kotlin/String.length|"];
                     145 [label="Access variable R|<local>/b|"];
                     146 [label="Access variable <Unresolved name: length>#"];
-                    147 [label="Function call: this@R|/<anonymous>|.R|/<anonymous>.baz|()"];
+                    147 [label="Function call: this@R|/<anonymous>|.R|<local>/baz|()"];
                     148 [label="Exit block"];
                 }
                 149 [label="Exit function anonymousFunction" style="filled" fillcolor=red];
@@ -449,7 +449,7 @@
             137 [label="Jump: ^bar R|/myRun|<R|kotlin/Int|>(<L> = myRun@fun <anonymous>(): R|kotlin/Int| <inline=Inline, kind=UNKNOWN>  {
     R|<local>/a|.R|kotlin/String.length|
     R|<local>/b|.<Unresolved name: length>#
-    ^ this@R|/<anonymous>|.R|/<anonymous>.baz|()
+    ^ this@R|/<anonymous>|.R|<local>/baz|()
 }
 )"];
             138 [label="Stub" style="filled" fillcolor=gray];
diff --git a/compiler/fir/analysis-tests/testData/resolve/cfg/localClassesWithImplicit.fir.txt b/compiler/fir/analysis-tests/testData/resolve/cfg/localClassesWithImplicit.fir.txt
index a47ea24..a36a90c 100644
--- a/compiler/fir/analysis-tests/testData/resolve/cfg/localClassesWithImplicit.fir.txt
+++ b/compiler/fir/analysis-tests/testData/resolve/cfg/localClassesWithImplicit.fir.txt
@@ -20,7 +20,7 @@
                     ^ when () {
                         (R|<local>/b| is R|kotlin/String|) ->  {
                             R|<local>/b|.R|kotlin/String.length|
-                            this@R|/A|.R|/A.bar|()
+                            this@R|/A|.R|<local>/bar|()
                         }
                         else ->  {
                             Int(1)
@@ -35,7 +35,7 @@
                 ^bar R|/myRun|<R|kotlin/Int|>(<L> = myRun@fun <anonymous>(): R|kotlin/Int| <inline=Inline, kind=UNKNOWN>  {
                     R|<local>/b|.<Unresolved name: length>#
                     R|<local>/a|.R|kotlin/String.length|
-                    ^ this@R|/A|.R|/A.baz|()
+                    ^ this@R|/A|.R|<local>/baz|()
                 }
                 )
             }
@@ -57,7 +57,7 @@
                     ^ when () {
                         (R|<local>/b| is R|kotlin/String|) ->  {
                             R|<local>/b|.R|kotlin/String.length|
-                            this@R|/<anonymous>|.R|/<anonymous>.bar|()
+                            this@R|/<anonymous>|.R|<local>/bar|()
                         }
                         else ->  {
                             Int(1)
@@ -72,7 +72,7 @@
                 ^bar R|/myRun|<R|kotlin/Int|>(<L> = myRun@fun <anonymous>(): R|kotlin/Int| <inline=Inline, kind=UNKNOWN>  {
                     R|<local>/a|.R|kotlin/String.length|
                     R|<local>/b|.<Unresolved name: length>#
-                    ^ this@R|/<anonymous>|.R|/<anonymous>.baz|()
+                    ^ this@R|/<anonymous>|.R|<local>/baz|()
                 }
                 )
             }
diff --git a/compiler/fir/analysis-tests/testData/resolve/expresssions/CallBasedInExpressionGenerator.fir.txt b/compiler/fir/analysis-tests/testData/resolve/expresssions/CallBasedInExpressionGenerator.fir.txt
index 55139a3..1a0e2d4 100644
--- a/compiler/fir/analysis-tests/testData/resolve/expresssions/CallBasedInExpressionGenerator.fir.txt
+++ b/compiler/fir/analysis-tests/testData/resolve/expresssions/CallBasedInExpressionGenerator.fir.txt
@@ -57,12 +57,12 @@
                 }
 
                 public final override fun putSelector(type: R|org/jetbrains/kotlin/codegen/range/inExpression/Type|, kotlinType: R|org/jetbrains/kotlin/codegen/range/inExpression/KotlinType?|, v: R|org/jetbrains/kotlin/codegen/range/inExpression/InstructionAdapter|): R|kotlin/Unit| {
-                    this@R|/<anonymous>|.R|/<anonymous>.invokeFunction|(R|<local>/v|)
+                    this@R|/<anonymous>|.R|<local>/invokeFunction|(R|<local>/v|)
                     <Unresolved name: coerceTo>#(R|<local>/type|, R|<local>/kotlinType|, R|<local>/v|)
                 }
 
                 public final override fun condJump(jumpLabel: R|org/jetbrains/kotlin/codegen/range/inExpression/Label|, v: R|org/jetbrains/kotlin/codegen/range/inExpression/InstructionAdapter|, jumpIfFalse: R|kotlin/Boolean|): R|kotlin/Unit| {
-                    this@R|/<anonymous>|.R|/<anonymous>.invokeFunction|(R|<local>/v|)
+                    this@R|/<anonymous>|.R|<local>/invokeFunction|(R|<local>/v|)
                     R|<local>/v|.<Unresolved name: visitJumpInsn>#(when () {
                         R|<local>/jumpIfFalse| ->  {
                             <Unresolved name: Opcodes>#.<Unresolved name: IFEQ>#
diff --git a/compiler/fir/analysis-tests/testData/resolve/expresssions/localImplicitBodies.fir.txt b/compiler/fir/analysis-tests/testData/resolve/expresssions/localImplicitBodies.fir.txt
index bce3a59..e7486f9 100644
--- a/compiler/fir/analysis-tests/testData/resolve/expresssions/localImplicitBodies.fir.txt
+++ b/compiler/fir/analysis-tests/testData/resolve/expresssions/localImplicitBodies.fir.txt
@@ -6,7 +6,7 @@
             }
 
             public final fun sss(): R|kotlin/Int| {
-                ^sss this@R|/<anonymous>|.R|/<anonymous>.abc|()
+                ^sss this@R|/<anonymous>|.R|<local>/abc|()
             }
 
             public final fun abc(): R|kotlin/Int| {
@@ -15,5 +15,5 @@
 
         }
 
-        lval g: R|kotlin/Int| = R|<local>/x|.R|/<anonymous>.sss|()
+        lval g: R|kotlin/Int| = R|<local>/x|.R|<local>/sss|()
     }
diff --git a/compiler/fir/analysis-tests/testData/resolve/expresssions/localObjects.fir.txt b/compiler/fir/analysis-tests/testData/resolve/expresssions/localObjects.fir.txt
index da21a3d..7f9c377 100644
--- a/compiler/fir/analysis-tests/testData/resolve/expresssions/localObjects.fir.txt
+++ b/compiler/fir/analysis-tests/testData/resolve/expresssions/localObjects.fir.txt
@@ -38,7 +38,7 @@
 
         }
 
-        Q|B|.R|/B.foo|()
+        Q|B|.R|<local>/foo|()
     }
     public final val bb: <ERROR TYPE REF: Unresolved name: foo> = <Unresolved name: B>#.<Unresolved name: foo>#()
         public get(): <ERROR TYPE REF: Unresolved name: foo>
diff --git a/compiler/fir/analysis-tests/testData/resolve/expresssions/localScopes.fir.txt b/compiler/fir/analysis-tests/testData/resolve/expresssions/localScopes.fir.txt
index bce53b4..fc4a8b5 100644
--- a/compiler/fir/analysis-tests/testData/resolve/expresssions/localScopes.fir.txt
+++ b/compiler/fir/analysis-tests/testData/resolve/expresssions/localScopes.fir.txt
@@ -20,7 +20,7 @@
         }
 
         lval base: R|BaseLocal| = R|/BaseLocal.BaseLocal|()
-        R|<local>/base|.R|/BaseLocal.baz|()
+        R|<local>/base|.R|<local>/baz|()
         R|<local>/base|.R|/Bar.foo|()
         lval anonymous: R|<anonymous>| = object : R|Bar| {
             private constructor(): R|<anonymous>| {
@@ -32,7 +32,7 @@
 
         }
 
-        R|<local>/anonymous|.R|/<anonymous>.baz|()
+        R|<local>/anonymous|.R|<local>/baz|()
         R|<local>/anonymous|.R|/Bar.foo|()
         local final class DerivedLocal : R|BaseLocal| {
             public constructor(): R|DerivedLocal| {
@@ -45,7 +45,7 @@
         }
 
         lval derived: R|DerivedLocal| = R|/DerivedLocal.DerivedLocal|()
-        R|<local>/derived|.R|/DerivedLocal.gau|()
-        R|<local>/derived|.R|/BaseLocal.baz|()
+        R|<local>/derived|.R|<local>/gau|()
+        R|<local>/derived|.R|<local>/baz|()
         R|<local>/derived|.R|/Bar.foo|()
     }
diff --git a/compiler/fir/analysis-tests/testData/resolve/expresssions/localWithBooleanNot.fir.txt b/compiler/fir/analysis-tests/testData/resolve/expresssions/localWithBooleanNot.fir.txt
index e346ae6..f6f83b7 100644
--- a/compiler/fir/analysis-tests/testData/resolve/expresssions/localWithBooleanNot.fir.txt
+++ b/compiler/fir/analysis-tests/testData/resolve/expresssions/localWithBooleanNot.fir.txt
@@ -10,11 +10,11 @@
                 private set(value: R|kotlin/Boolean|): R|kotlin/Unit|
 
             public final fun bar(): R|kotlin/Boolean| {
-                ^bar this@R|/<anonymous>|.R|/<anonymous>.result|.R|kotlin/Boolean.not|()
+                ^bar this@R|/<anonymous>|.R|<local>/result|.R|kotlin/Boolean.not|()
             }
 
             public final override fun result(): R|kotlin/Boolean| {
-                ^result this@R|/<anonymous>|.R|/<anonymous>.result|
+                ^result this@R|/<anonymous>|.R|<local>/result|
             }
 
         }
diff --git a/compiler/fir/analysis-tests/testData/resolve/expresssions/privateVisibility.fir.txt b/compiler/fir/analysis-tests/testData/resolve/expresssions/privateVisibility.fir.txt
index f74af22..a665777 100644
--- a/compiler/fir/analysis-tests/testData/resolve/expresssions/privateVisibility.fir.txt
+++ b/compiler/fir/analysis-tests/testData/resolve/expresssions/privateVisibility.fir.txt
@@ -71,7 +71,7 @@
             private final fun bar(): R|kotlin/Unit|
 
             public final fun baz(): R|kotlin/Unit| {
-                this@R|/Local|.R|/Local.bar|()
+                this@R|/Local|.R|<local>/bar|()
                 this@R|/Local|.R|/Local.Inner.Inner|()
             }
 
@@ -81,15 +81,15 @@
                 }
 
                 public final fun foo(): R|kotlin/Unit| {
-                    this@R|/Local|.R|/Local.bar|()
+                    this@R|/Local|.R|<local>/bar|()
                 }
 
             }
 
         }
 
-        R|/Local.Local|().R|/Local.baz|()
-        R|/Local.Local|().<HIDDEN: /Local.bar is invisible>#()
+        R|/Local.Local|().R|<local>/baz|()
+        R|/Local.Local|().<HIDDEN: <local>/bar is invisible>#()
     }
     public final fun test(): R|kotlin/Unit| {
         R|/foo|()
diff --git a/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/RedundantVisibilityModifierChecker.fir.txt b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/RedundantVisibilityModifierChecker.fir.txt
index 2fd1132..daed56b 100644
--- a/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/RedundantVisibilityModifierChecker.fir.txt
+++ b/compiler/fir/analysis-tests/testData/resolve/extendedCheckers/RedundantVisibilityModifierChecker.fir.txt
@@ -12,7 +12,7 @@
 
         }
 
-        R|/LocalClass.LocalClass|().R|/LocalClass.foo| = Int(1)
+        R|/LocalClass.LocalClass|().R|<local>/foo| = Int(1)
     }
     internal final inline fun internal(): R|kotlin/Unit| {
         R|/f|()
diff --git a/compiler/fir/analysis-tests/testData/resolve/inference/callableReferenceToLocalClass.fir.txt b/compiler/fir/analysis-tests/testData/resolve/inference/callableReferenceToLocalClass.fir.txt
index 52632af..93b6514 100644
--- a/compiler/fir/analysis-tests/testData/resolve/inference/callableReferenceToLocalClass.fir.txt
+++ b/compiler/fir/analysis-tests/testData/resolve/inference/callableReferenceToLocalClass.fir.txt
@@ -14,5 +14,5 @@
         }
 
         lval datas: R|kotlin/collections/List<Data>| = Null(null)!!
-        lval xs: R|kotlin/collections/List<kotlin/Int>| = R|<local>/datas|.R|/myMap|<R|Data|, R|kotlin/Int|>(Q|Data|::R|/Data.x|)
+        lval xs: R|kotlin/collections/List<kotlin/Int>| = R|<local>/datas|.R|/myMap|<R|Data|, R|kotlin/Int|>(Q|Data|::R|<local>/x|)
     }
diff --git a/compiler/fir/analysis-tests/testData/resolve/localClasses/implicitInLocalClasses.fir.txt b/compiler/fir/analysis-tests/testData/resolve/localClasses/implicitInLocalClasses.fir.txt
index fc2b082..d0db2e4 100644
--- a/compiler/fir/analysis-tests/testData/resolve/localClasses/implicitInLocalClasses.fir.txt
+++ b/compiler/fir/analysis-tests/testData/resolve/localClasses/implicitInLocalClasses.fir.txt
@@ -8,7 +8,7 @@
             }
 
             public final fun foo(x: R|kotlin/Int|): R|kotlin/Boolean| {
-                ^foo this@R|/A|.R|/A.bar|(R|<local>/x|)
+                ^foo this@R|/A|.R|<local>/bar|(R|<local>/x|)
             }
 
             public final fun bar(y: R|kotlin/Int|): R|kotlin/Boolean| {
@@ -17,7 +17,7 @@
 
             public final val w: R|kotlin/Boolean|
                 public get(): R|kotlin/Boolean| {
-                    ^ this@R|/A|.R|/A.z|
+                    ^ this@R|/A|.R|<local>/z|
                 }
 
             public final val z: R|kotlin/Boolean|
@@ -28,17 +28,17 @@
         }
 
         lval a: R|A| = R|/A.A|()
-        R|/useBoolean|(R|<local>/a|.R|/A.foo|(Int(1)))
-        R|/useBoolean|(R|<local>/a|.R|/A.bar|(Int(1)))
-        R|/useBoolean|(R|<local>/a|.R|/A.w|)
-        R|/useBoolean|(R|<local>/a|.R|/A.z|)
+        R|/useBoolean|(R|<local>/a|.R|<local>/foo|(Int(1)))
+        R|/useBoolean|(R|<local>/a|.R|<local>/bar|(Int(1)))
+        R|/useBoolean|(R|<local>/a|.R|<local>/w|)
+        R|/useBoolean|(R|<local>/a|.R|<local>/z|)
         local final class B : R|kotlin/Any| {
             public constructor(): R|B| {
                 super<R|kotlin/Any|>()
             }
 
             public final fun foo(x: R|kotlin/Int|): R|kotlin/Boolean| {
-                ^foo this@R|/B|.R|/B.inner|.R|/B.Inner.w|
+                ^foo this@R|/B|.R|<local>/inner|.R|<local>/w|
             }
 
             public final fun bar(y: R|kotlin/Int|): R|kotlin/Boolean| {
@@ -55,12 +55,12 @@
 
                 public final val w: R|kotlin/Boolean|
                     public get(): R|kotlin/Boolean| {
-                        ^ this@R|/B.Inner|.R|/B.Inner.z|
+                        ^ this@R|/B.Inner|.R|<local>/z|
                     }
 
                 public final val z: R|kotlin/Boolean|
                     public get(): R|kotlin/Boolean| {
-                        ^ this@R|/B|.R|/B.bar|(Int(1))
+                        ^ this@R|/B|.R|<local>/bar|(Int(1))
                     }
 
             }
@@ -68,8 +68,8 @@
         }
 
         lval b: R|B| = R|/B.B|()
-        R|/useBoolean|(R|<local>/b|.R|/B.foo|(Int(1)))
-        R|/useBoolean|(R|<local>/b|.R|/B.bar|(Int(1)))
-        R|/useBoolean|(R|<local>/b|.R|/B.inner|.R|/B.Inner.w|)
-        R|/useBoolean|(R|<local>/b|.R|/B.inner|.R|/B.Inner.z|)
+        R|/useBoolean|(R|<local>/b|.R|<local>/foo|(Int(1)))
+        R|/useBoolean|(R|<local>/b|.R|<local>/bar|(Int(1)))
+        R|/useBoolean|(R|<local>/b|.R|<local>/inner|.R|<local>/w|)
+        R|/useBoolean|(R|<local>/b|.R|<local>/inner|.R|<local>/z|)
     }
diff --git a/compiler/fir/analysis-tests/testData/resolve/objectInnerClass.fir.txt b/compiler/fir/analysis-tests/testData/resolve/objectInnerClass.fir.txt
index 6116ba8..cba0138 100644
--- a/compiler/fir/analysis-tests/testData/resolve/objectInnerClass.fir.txt
+++ b/compiler/fir/analysis-tests/testData/resolve/objectInnerClass.fir.txt
@@ -10,24 +10,24 @@
             }
 
             public final fun R|<anonymous>.Base|.zoo(): R|kotlin/Unit| {
-                lval x: R|B| = this@R|/<anonymous>.Child.zoo|.R|/<anonymous>.Base.property|
+                lval x: R|B| = this@R|<local>/zoo|.R|<local>/property|
             }
 
             public final fun foo(): R|kotlin/Unit| {
-                this@R|/<anonymous>.Child|.R|/<anonymous>.Base.baseFun|()
-                lval x: R|B| = this@R|/<anonymous>.Child|.R|/<anonymous>.Base.property|
-                (this@R|/<anonymous>.Child|, this@R|/<anonymous>.Child|).R|/<anonymous>.Child.zoo|()
+                this@R|/<anonymous>.Child|.R|<local>/baseFun|()
+                lval x: R|B| = this@R|/<anonymous>.Child|.R|<local>/property|
+                (this@R|/<anonymous>.Child|, this@R|/<anonymous>.Child|).R|<local>/zoo|()
                 (this@R|/<anonymous>|, this@R|/<anonymous>.Child|).R|/<anonymous>.hoo|()
             }
 
         }
 
         public final fun R|<anonymous>.Child|.voo(): R|kotlin/Unit| {
-            lval x: R|B| = this@R|/<anonymous>.voo|.R|/<anonymous>.Base.property|
+            lval x: R|B| = this@R|/<anonymous>.voo|.R|<local>/property|
         }
 
         public final fun R|<anonymous>.Base|.hoo(): R|kotlin/Unit| {
-            lval x: R|B| = this@R|/<anonymous>.hoo|.R|/<anonymous>.Base.property|
+            lval x: R|B| = this@R|/<anonymous>.hoo|.R|<local>/property|
         }
 
         local open inner class Base : R|kotlin/Any| {
@@ -45,16 +45,16 @@
 
         public final fun caseForBase(): R|kotlin/Unit| {
             lval base: R|<anonymous>.Base| = this@R|/<anonymous>|.R|/<anonymous>.Base.Base|(R|/B.B|())
-            R|<local>/base|.R|/<anonymous>.Base.baseFun|()
-            R|<local>/base|.R|/<anonymous>.Base.property|
+            R|<local>/base|.R|<local>/baseFun|()
+            R|<local>/base|.R|<local>/property|
             (this@R|/<anonymous>|, R|<local>/base|).R|/<anonymous>.hoo|()
         }
 
         public final fun caseForChild(): R|kotlin/Unit| {
             lval child: R|<anonymous>.Child| = this@R|/<anonymous>|.R|/<anonymous>.Child.Child|(R|/B.B|())
-            R|<local>/child|.R|/<anonymous>.Base.baseFun|()
-            R|<local>/child|.R|/<anonymous>.Base.property|
-            R|<local>/child|.R|/<anonymous>.Child.foo|()
+            R|<local>/child|.R|<local>/baseFun|()
+            R|<local>/child|.R|<local>/property|
+            R|<local>/child|.R|<local>/foo|()
             (this@R|/<anonymous>|, R|<local>/child|).R|/<anonymous>.hoo|()
             (this@R|/<anonymous>|, R|<local>/child|).R|/<anonymous>.voo|()
         }
@@ -135,24 +135,24 @@
                 }
 
                 public final fun R|Case3.<anonymous>.Base|.zoo(): R|kotlin/Unit| {
-                    lval x: R|B| = this@R|/Case3.<anonymous>.Child.zoo|.R|/Case3.<anonymous>.Base.property|
+                    lval x: R|B| = this@R|<local>/zoo|.R|<local>/property|
                 }
 
                 public final fun foo(): R|kotlin/Unit| {
-                    this@R|/Case3.<anonymous>.Child|.R|/Case3.<anonymous>.Base.baseFun|()
-                    lval x: R|B| = this@R|/Case3.<anonymous>.Child|.R|/Case3.<anonymous>.Base.property|
-                    (this@R|/Case3.<anonymous>.Child|, this@R|/Case3.<anonymous>.Child|).R|/Case3.<anonymous>.Child.zoo|()
+                    this@R|/Case3.<anonymous>.Child|.R|<local>/baseFun|()
+                    lval x: R|B| = this@R|/Case3.<anonymous>.Child|.R|<local>/property|
+                    (this@R|/Case3.<anonymous>.Child|, this@R|/Case3.<anonymous>.Child|).R|<local>/zoo|()
                     (this@R|/<anonymous>|, this@R|/Case3.<anonymous>.Child|).R|/<anonymous>.hoo|()
                 }
 
             }
 
             public final fun R|Case3.<anonymous>.Child|.voo(): R|kotlin/Unit| {
-                lval x: R|B| = this@R|/<anonymous>.voo|.R|/Case3.<anonymous>.Base.property|
+                lval x: R|B| = this@R|/<anonymous>.voo|.R|<local>/property|
             }
 
             public final fun R|Case3.<anonymous>.Base|.hoo(): R|kotlin/Unit| {
-                lval x: R|B| = this@R|/<anonymous>.hoo|.R|/Case3.<anonymous>.Base.property|
+                lval x: R|B| = this@R|/<anonymous>.hoo|.R|<local>/property|
             }
 
             local open inner class Base : R|kotlin/Any| {
@@ -170,16 +170,16 @@
 
             public final fun caseForBase(): R|kotlin/Unit| {
                 lval base: R|Case3.<anonymous>.Base| = this@R|/<anonymous>|.R|/Case3.<anonymous>.Base.Base|(R|/B.B|())
-                R|<local>/base|.R|/Case3.<anonymous>.Base.baseFun|()
-                R|<local>/base|.R|/Case3.<anonymous>.Base.property|
+                R|<local>/base|.R|<local>/baseFun|()
+                R|<local>/base|.R|<local>/property|
                 (this@R|/<anonymous>|, R|<local>/base|).R|/<anonymous>.hoo|()
             }
 
             public final fun caseForChild(): R|kotlin/Unit| {
                 lval child: R|Case3.<anonymous>.Child| = this@R|/<anonymous>|.R|/Case3.<anonymous>.Child.Child|(R|/B.B|())
-                R|<local>/child|.R|/Case3.<anonymous>.Base.baseFun|()
-                R|<local>/child|.R|/Case3.<anonymous>.Base.property|
-                R|<local>/child|.R|/Case3.<anonymous>.Child.foo|()
+                R|<local>/child|.R|<local>/baseFun|()
+                R|<local>/child|.R|<local>/property|
+                R|<local>/child|.R|<local>/foo|()
                 (this@R|/<anonymous>|, R|<local>/child|).R|/<anonymous>.hoo|()
                 (this@R|/<anonymous>|, R|<local>/child|).R|/<anonymous>.voo|()
             }
diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/bad/callsInPlace/inAnonymousObject.dot b/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/bad/callsInPlace/inAnonymousObject.dot
index 2fcac12..d026ebe 100644
--- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/bad/callsInPlace/inAnonymousObject.dot
+++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/bad/callsInPlace/inAnonymousObject.dot
@@ -12,7 +12,7 @@
             2 [label="Exit anonymous object"];
             3 [label="Variable declaration: lval obj: R|<anonymous>|"];
             4 [label="Access variable R|<local>/obj|"];
-            5 [label="Function call: R|<local>/obj|.R|/<anonymous>.run|()"];
+            5 [label="Function call: R|<local>/obj|.R|<local>/run|()"];
             6 [label="Function call: R|<local>/d|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()"];
             7 [label="Exit block"];
         }
@@ -70,7 +70,7 @@
             color=blue
             20 [label="Enter block"];
             21 [label="Access variable R|<local>/b|"];
-            22 [label="Assignment: R|/<anonymous>.leaked|"];
+            22 [label="Assignment: R|<local>/leaked|"];
             23 [label="Exit block"];
         }
         24 [label="Exit init block" style="filled" fillcolor=red];
diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/bad/callsInPlace/inAnonymousObject.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/bad/callsInPlace/inAnonymousObject.fir.txt
index 088e438..6067533 100644
--- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/bad/callsInPlace/inAnonymousObject.fir.txt
+++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/bad/callsInPlace/inAnonymousObject.fir.txt
@@ -21,7 +21,7 @@
                 public get(): R|kotlin/Any|
 
             init {
-                this@R|/<anonymous>|.R|/<anonymous>.leaked| = R|<local>/b|
+                this@R|/<anonymous>|.R|<local>/leaked| = R|<local>/b|
             }
 
             public final override fun run(): R|kotlin/Unit| {
@@ -30,6 +30,6 @@
 
         }
 
-        R|<local>/obj|.R|/<anonymous>.run|()
+        R|<local>/obj|.R|<local>/run|()
         R|<local>/d|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()
     }
diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/bad/callsInPlace/inLocalClass.dot b/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/bad/callsInPlace/inLocalClass.dot
index 49e19f7..570287c 100644
--- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/bad/callsInPlace/inLocalClass.dot
+++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/bad/callsInPlace/inLocalClass.dot
@@ -11,7 +11,7 @@
             1 [label="Enter block"];
             2 [label="Exit local class foo"];
             3 [label="Function call: R|/LocalClass.LocalClass|()"];
-            4 [label="Function call: R|/LocalClass.LocalClass|().R|/LocalClass.run|()"];
+            4 [label="Function call: R|/LocalClass.LocalClass|().R|<local>/run|()"];
             5 [label="Function call: R|<local>/e|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()"];
             6 [label="Exit block"];
         }
@@ -77,7 +77,7 @@
             color=blue
             22 [label="Enter block"];
             23 [label="Access variable R|<local>/c|"];
-            24 [label="Assignment: R|/LocalClass.leaked|"];
+            24 [label="Assignment: R|<local>/leaked|"];
             25 [label="Exit block"];
         }
         26 [label="Exit init block" style="filled" fillcolor=red];
diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/bad/callsInPlace/inLocalClass.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/bad/callsInPlace/inLocalClass.fir.txt
index 73f4a36..b953228 100644
--- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/bad/callsInPlace/inLocalClass.fir.txt
+++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/bad/callsInPlace/inLocalClass.fir.txt
@@ -23,7 +23,7 @@
             }
 
             init {
-                this@R|/LocalClass|.R|/LocalClass.leaked| = R|<local>/c|
+                this@R|/LocalClass|.R|<local>/leaked| = R|<local>/c|
             }
 
             public final fun run(): R|kotlin/Unit| {
@@ -32,6 +32,6 @@
 
         }
 
-        R|/LocalClass.LocalClass|().R|/LocalClass.run|()
+        R|/LocalClass.LocalClass|().R|<local>/run|()
         R|<local>/e|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()
     }
diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/anonymousInDelegate.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/anonymousInDelegate.fir.txt
index 1d5def9..1e07b87 100644
--- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/anonymousInDelegate.fir.txt
+++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/anonymousInDelegate.fir.txt
@@ -15,7 +15,7 @@
 
         }
 
-        ^ R|<local>/foo|.R|/<anonymous>.bar|()
+        ^ R|<local>/foo|.R|<local>/bar|()
     }
     )
         public get(): R|kotlin/Int| {
diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/selfReferenceToCompanionObject.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/selfReferenceToCompanionObject.fir.txt
index bc0d1e2..aae77a3 100644
--- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/selfReferenceToCompanionObject.fir.txt
+++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/selfReferenceToCompanionObject.fir.txt
@@ -57,12 +57,12 @@
                 public get(): R|kotlin/String|
 
             public final val closure2: R|() -> kotlin/String| = fun <anonymous>(): R|kotlin/String| <inline=Unknown>  {
-                ^ this@R|/<anonymous>|.R|/<anonymous>.y|
+                ^ this@R|/<anonymous>|.R|<local>/y|
             }
 
                 public get(): R|() -> kotlin/String|
 
-            public final override val z: R|kotlin/String| = this@R|/<anonymous>|.R|/<anonymous>.closure2|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()
+            public final override val z: R|kotlin/String| = this@R|/<anonymous>|.R|<local>/closure2|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()
                 public get(): R|kotlin/String|
 
         }
diff --git a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt
index 53d17ab..1148933 100644
--- a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt
+++ b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt
@@ -692,7 +692,7 @@
                     )?.let { declarations += it.firConstructor }
                     classBodyNode?.also {
                         // Use ANONYMOUS_OBJECT_NAME for the owner class id of enum entry declarations
-                        withChildClassName(ANONYMOUS_OBJECT_NAME, isLocal = true) {
+                        withChildClassName(ANONYMOUS_OBJECT_NAME, forceLocalContext = true) {
                             declarations += convertClassBody(it, enumClassWrapper)
                         }
                     }
@@ -1407,7 +1407,7 @@
                     isSuspend = modifiers.hasSuspend()
                 }
 
-                symbol = FirNamedFunctionSymbol(callableIdForName(functionName, isLocal))
+                symbol = FirNamedFunctionSymbol(callableIdForName(functionName))
                 dispatchReceiverType = currentDispatchReceiverType()
             }
         }
diff --git a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt
index 85d7438..ad1298e 100644
--- a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt
+++ b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt
@@ -787,7 +787,7 @@
                             typeParameters
                         )
                         // Use ANONYMOUS_OBJECT_NAME for the owner class id for enum entry declarations (see KT-42351)
-                        withChildClassName(ANONYMOUS_OBJECT_NAME, isLocal = true) {
+                        withChildClassName(ANONYMOUS_OBJECT_NAME, forceLocalContext = true) {
                             for (declaration in ktEnumEntry.declarations) {
                                 declarations += declaration.toFirDeclaration(
                                     correctedEnumSelfTypeRef,
@@ -816,7 +816,7 @@
             val isLocal = classOrObject.isLocal || classOrObject.getStrictParentOfType<KtEnumEntry>() != null
             return withChildClassName(
                 classOrObject.nameAsSafeName,
-                isLocal = isLocal
+                forceLocalContext = isLocal
             ) {
                 val classKind = when (classOrObject) {
                     is KtObjectDeclaration -> ClassKind.OBJECT
@@ -1022,7 +1022,7 @@
                     receiverTypeRef = receiverType
                     name = function.nameAsSafeName
                     labelName = runIf(!name.isSpecial) { name.identifier }
-                    symbol = FirNamedFunctionSymbol(callableIdForName(function.nameAsSafeName, function.isLocal))
+                    symbol = FirNamedFunctionSymbol(callableIdForName(function.nameAsSafeName))
                     dispatchReceiverType = currentDispatchReceiverType()
                     status = FirDeclarationStatusImpl(
                         if (function.isLocal) Visibilities.Local else function.visibility,
diff --git a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt
index e08b7ca..327185b 100644
--- a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt
+++ b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt
@@ -64,11 +64,12 @@
     /**** Class name utils ****/
     inline fun <T> withChildClassName(
         name: Name,
-        isLocal: Boolean = context.firFunctionTargets.isNotEmpty(),
+        forceLocalContext: Boolean = false,
         l: () -> T
     ): T {
         context.className = context.className.child(name)
-        context.localBits.add(isLocal)
+        val oldForcedLocalContext = context.forcedLocalContext
+        context.forcedLocalContext = forceLocalContext || context.forcedLocalContext
         val dispatchReceiversNumber = context.dispatchReceiverTypesStack.size
         return try {
             l()
@@ -82,7 +83,7 @@
             }
 
             context.className = context.className.parent()
-            context.localBits.removeLast()
+            context.forcedLocalContext = oldForcedLocalContext
         }
     }
 
@@ -99,9 +100,9 @@
         }
     }
 
-    fun callableIdForName(name: Name, local: Boolean = false) =
+    fun callableIdForName(name: Name) =
         when {
-            local -> {
+            context.inLocalContext -> {
                 val pathFqName =
                     context.firFunctionTargets.fold(
                         if (context.className == FqName.ROOT) context.packageFqName else context.currentClassId.asSingleFqName()
diff --git a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/Context.kt b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/Context.kt
index 50229d4..e67f1a1 100644
--- a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/Context.kt
+++ b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/Context.kt
@@ -20,8 +20,9 @@
 class Context<T> {
     lateinit var packageFqName: FqName
     var className: FqName = FqName.ROOT
-    val localBits: MutableList<Boolean> = mutableListOf()
-    val currentClassId get() = ClassId(packageFqName, className, localBits.lastOrNull() ?: false)
+    var forcedLocalContext: Boolean = false
+    val inLocalContext get() = forcedLocalContext || firFunctionTargets.isNotEmpty()
+    val currentClassId get() = ClassId(packageFqName, className, inLocalContext)
 
     val firFunctionTargets = mutableListOf<FirFunctionTarget>()
     val calleeNamesForLambda = mutableListOf<Name>()
diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/IdeFirPhaseManager.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/IdeFirPhaseManager.kt
index 987c385..ea0c660 100644
--- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/IdeFirPhaseManager.kt
+++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/IdeFirPhaseManager.kt
@@ -11,11 +11,9 @@
 import org.jetbrains.kotlin.fir.resolve.ScopeSession
 import org.jetbrains.kotlin.fir.resolve.transformers.FirPhaseManager
 import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
-import org.jetbrains.kotlin.idea.fir.low.level.api.api.tryCollectDesignation
 import org.jetbrains.kotlin.idea.fir.low.level.api.file.builder.ModuleFileCache
 import org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve.FirLazyDeclarationResolver
 import org.jetbrains.kotlin.idea.fir.low.level.api.sessions.FirSessionInvalidator
-import org.jetbrains.kotlin.idea.fir.low.level.api.util.isLocalDeclaration
 
 @ThreadSafeMutableState
 internal class IdeFirPhaseManager(
@@ -28,7 +26,6 @@
         requiredPhase: FirResolvePhase
     ) {
         val fir = symbol.fir as FirDeclaration
-        if (fir.isLocalDeclaration) return
         try {
             if (fir.resolvePhase < requiredPhase) { //TODO Make thread safe
                 lazyDeclarationResolver.lazyResolveDeclaration(
@@ -36,7 +33,8 @@
                     moduleFileCache = cache,
                     scopeSession = ScopeSession(),
                     toPhase = requiredPhase,
-                    checkPCE = true
+                    checkPCE = true,
+                    skipLocalDeclaration = true,
                 )
             }
         } catch (e: Throwable) {
diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/FirDeclarationDesignation.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/FirDeclarationDesignation.kt
index 8b49fd35..f468ce3 100644
--- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/FirDeclarationDesignation.kt
+++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/api/FirDeclarationDesignation.kt
@@ -13,7 +13,6 @@
 import org.jetbrains.kotlin.fir.resolve.firProvider
 import org.jetbrains.kotlin.fir.resolve.toFirRegularClass
 import org.jetbrains.kotlin.idea.fir.low.level.api.util.getContainingFile
-import org.jetbrains.kotlin.idea.fir.low.level.api.util.isLocalDeclaration
 import org.jetbrains.kotlin.idea.util.ifFalse
 
 class FirDeclarationDesignationWithFile(
@@ -55,14 +54,16 @@
 }
 
 private fun collectDesignationPath(declaration: FirDeclaration): List<FirDeclaration>? {
-    if (declaration.isLocalDeclaration) return null
     val containingClass = when (declaration) {
         is FirCallableDeclaration<*> -> {
-            val isLocalMember = (declaration as? FirCallableMemberDeclaration<*>)?.status?.visibility == Visibilities.Local
-            if (isLocalMember) return null
+            if (declaration.symbol.callableId.isLocal) return null
+            if ((declaration as? FirCallableMemberDeclaration<*>)?.status?.visibility == Visibilities.Local) return null
             when (declaration) {
-                is FirSimpleFunction, is FirProperty, is FirField, is FirConstructor ->
-                    declaration.containingClass()?.toFirRegularClass(declaration.moduleData.session)
+                is FirSimpleFunction, is FirProperty, is FirField, is FirConstructor -> {
+                    val klass = declaration.containingClass() ?: return emptyList()
+                    if (klass.classId.isLocal) return null
+                    klass.toFirRegularClass(declaration.moduleData.session)
+                }
                 else -> return null
             }
         }
diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/FirLazyDeclarationResolver.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/FirLazyDeclarationResolver.kt
index f77892c9..4a33c94 100644
--- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/FirLazyDeclarationResolver.kt
+++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/FirLazyDeclarationResolver.kt
@@ -12,6 +12,9 @@
 import org.jetbrains.kotlin.fir.resolve.transformers.FirImportResolveTransformer
 import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
 import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirDeclarationDesignationWithFile
+import org.jetbrains.kotlin.idea.fir.low.level.api.api.collectDesignationWithFile
+import org.jetbrains.kotlin.idea.fir.low.level.api.api.tryCollectDesignationWithFile
+import org.jetbrains.kotlin.idea.fir.low.level.api.element.builder.getNonLocalContainingOrThisDeclaration
 import org.jetbrains.kotlin.idea.fir.low.level.api.file.builder.FirFileBuilder
 import org.jetbrains.kotlin.idea.fir.low.level.api.file.builder.ModuleFileCache
 import org.jetbrains.kotlin.idea.fir.low.level.api.file.builder.runCustomResolveUnderLock
@@ -22,6 +25,7 @@
 import org.jetbrains.kotlin.idea.fir.low.level.api.transformers.LazyTransformerFactory
 import org.jetbrains.kotlin.idea.fir.low.level.api.util.checkCanceled
 import org.jetbrains.kotlin.idea.fir.low.level.api.util.ensurePhase
+import org.jetbrains.kotlin.idea.fir.low.level.api.util.findSourceNonLocalFirDeclaration
 import org.jetbrains.kotlin.idea.util.ifTrue
 
 internal class FirLazyDeclarationResolver(private val firFileBuilder: FirFileBuilder) {
@@ -189,6 +193,7 @@
         toPhase: FirResolvePhase,
         checkPCE: Boolean,
         declarationPhaseDowngraded: Boolean = false,
+        skipLocalDeclaration: Boolean = false,
     ) {
         if (toPhase == FirResolvePhase.RAW_FIR) return
         //TODO Should be synchronised
@@ -205,10 +210,29 @@
             return
         }
 
-        val provider = firDeclarationToResolve.moduleData.session.firIdeProvider
-        val (designation, forceToBody) =
-            firDeclarationToResolve.getNonLocalDeclarationToResolveAndForceUpgradeToBodyPhase(provider, moduleFileCache, firFileBuilder)
-        val neededPhase = if (forceToBody) FirResolvePhase.BODY_RESOLVE else toPhase
+        val requestedDeclarationDesignation = firDeclarationToResolve.tryCollectDesignationWithFile()
+
+        val designation: FirDeclarationDesignationWithFile
+        val neededPhase: FirResolvePhase
+        if (requestedDeclarationDesignation != null) {
+            designation = requestedDeclarationDesignation
+            neededPhase = toPhase
+        } else {
+            val possiblyLocalDeclaration = firDeclarationToResolve.getKtDeclarationForFirElement()
+            val nonLocalDeclaration = possiblyLocalDeclaration.getNonLocalContainingOrThisDeclaration()
+                ?: error("Container for local declaration cannot be null")
+
+            val isLocalDeclarationResolveRequested = possiblyLocalDeclaration != nonLocalDeclaration
+            if (isLocalDeclarationResolveRequested && skipLocalDeclaration) return
+
+            val nonLocalFirDeclaration = nonLocalDeclaration.findSourceNonLocalFirDeclaration(
+                firFileBuilder,
+                firDeclarationToResolve.moduleData.session.firIdeProvider.symbolProvider,
+                moduleFileCache
+            )
+            designation = nonLocalFirDeclaration.collectDesignationWithFile()
+            neededPhase = if (isLocalDeclarationResolveRequested) FirResolvePhase.BODY_RESOLVE else toPhase
+        }
 
         //TODO Should be synchronised
         if (!designation.declaration.isValidForResolve()) return
diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/NonLocalDeclarationUtils.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/NonLocalDeclarationUtils.kt
index 9d1d15f..d43845c 100644
--- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/NonLocalDeclarationUtils.kt
+++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/NonLocalDeclarationUtils.kt
@@ -21,18 +21,9 @@
 import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
 import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
 
-internal fun FirDeclaration.getNonLocalDeclarationToResolveAndForceUpgradeToBodyPhase(
-    provider: FirProvider,
-    moduleFileCache: ModuleFileCache,
-    firFileBuilder: FirFileBuilder
-): Pair<FirDeclarationDesignationWithFile, Boolean> {
+internal fun FirDeclaration.getKtDeclarationForFirElement(): KtDeclaration {
     require(this !is FirFile)
 
-    val nonLocalDesignation = tryCollectDesignationWithFile()
-    if (nonLocalDesignation != null) {
-        return nonLocalDesignation to false
-    }
-
     val ktDeclaration = (psi as? KtDeclaration) ?: run {
         (source as? FirFakeSourceElement<*>).psi?.parentOfType()
     }
@@ -61,13 +52,7 @@
     check(declaration is KtDeclaration) {
         "FirDeclaration should have a PSI of type KtDeclaration"
     }
-
-    val nonLocalDeclaration = declaration.getNonLocalContainingOrThisDeclaration()
-        ?: error("Container for local declaration cannot be null")
-
-    val firDeclaration = nonLocalDeclaration.findSourceNonLocalFirDeclaration(firFileBuilder, provider.symbolProvider, moduleFileCache)
-    val needUpgrade = nonLocalDeclaration !== declaration
-    return firDeclaration.collectDesignationWithFile() to needUpgrade
+    return declaration
 }
 
 internal fun declarationCanBeLazilyResolved(declaration: KtDeclaration): Boolean {
diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/util/declarationUtils.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/util/declarationUtils.kt
index 0e28c6b..32aaf5e 100644
--- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/util/declarationUtils.kt
+++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/util/declarationUtils.kt
@@ -5,7 +5,6 @@
 
 package org.jetbrains.kotlin.idea.fir.low.level.api.util
 
-import org.jetbrains.kotlin.descriptors.Visibilities
 import org.jetbrains.kotlin.fir.declarations.*
 import org.jetbrains.kotlin.fir.psi
 import org.jetbrains.kotlin.fir.realPsi
@@ -125,13 +124,4 @@
 
 
 val FirDeclaration.isGeneratedDeclaration
-    get() = realPsi == null
-
-
-internal val FirDeclaration.isLocalDeclaration: Boolean
-    get() = when (this) {
-        is FirCallableDeclaration<*> ->
-            ((this as? FirCallableMemberDeclaration<*>)?.status?.visibility == Visibilities.Local)
-        is FirClassLikeDeclaration<*> -> isLocal
-        else -> true
-    }
\ No newline at end of file
+    get() = realPsi == null
\ No newline at end of file
diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/onAirResolve/localClass.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/onAirResolve/localClass.txt
index 42fd6d4..76a7f0a9 100644
--- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/onAirResolve/localClass.txt
+++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/onAirResolve/localClass.txt
@@ -1,9 +1,9 @@
-public? final? [BODY_RESOLVE] class E : R|kotlin/Any| {
-    public? [BODY_RESOLVE] constructor(): R|E| {
+public final [BODY_RESOLVE] class E : R|kotlin/Any| {
+    public [BODY_RESOLVE] constructor(): R|E| {
         super<R|kotlin/Any|>()
     }
 
-    public? final? [BODY_RESOLVE] fun e(): R|kotlin/Int| {
+    public final [BODY_RESOLVE] fun e(): R|kotlin/Int| {
         ^e R|<local>/x|
     }
 
diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/partialRawBuilder/localFunction.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/partialRawBuilder/localFunction.txt
index 20bf694..8b4bb6a 100644
--- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/partialRawBuilder/localFunction.txt
+++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/partialRawBuilder/localFunction.txt
@@ -1,3 +1,3 @@
-local final? fun <local>/bar(): R|kotlin/Unit| {
+local final? fun test/locals/Owner.bar(): R|kotlin/Unit| {
     baz#(i#, x#)
 }
