K2 UAST: lookup declarations mangled due to value class

^KT-65653 fixed
diff --git a/analysis/analysis-api/testData/standalone/binary/propertyWithValueClass.txt b/analysis/analysis-api/testData/standalone/binary/propertyWithValueClass.txt
index c562d29..0582db6 100644
--- a/analysis/analysis-api/testData/standalone/binary/propertyWithValueClass.txt
+++ b/analysis/analysis-api/testData/standalone/binary/propertyWithValueClass.txt
@@ -1,2 +1,2 @@
 Resolved to:
-PsiMethod:getColor(): PsiType:Color
\ No newline at end of file
+PsiMethod:getColor-ywy1UOY(): PsiType:int
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/standalone/binary/topLevelFunctionWithValueClass.txt b/analysis/analysis-api/testData/standalone/binary/topLevelFunctionWithValueClass.txt
index 74f0734..6fb923b 100644
--- a/analysis/analysis-api/testData/standalone/binary/topLevelFunctionWithValueClass.txt
+++ b/analysis/analysis-api/testData/standalone/binary/topLevelFunctionWithValueClass.txt
@@ -1,2 +1,2 @@
 Resolved to:
-PsiMethod:ColorProvider(resId: PsiType:int): PsiType:ColorProvider
+PsiMethod:ColorProvider-MpdQY78(color: PsiType:int): PsiType:ColorProvider
\ No newline at end of file
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticPsiDeclarationFromBinaryModuleProvider.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticPsiDeclarationFromBinaryModuleProvider.kt
index e6256db..cf4cbfb 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticPsiDeclarationFromBinaryModuleProvider.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticPsiDeclarationFromBinaryModuleProvider.kt
@@ -86,7 +86,11 @@
                     // E.g., getJVM_FIELD -> JVM_FIELD
                     nameWithoutPrefix == id ||
                             // E.g., getFooBar -> FooBar -> fooBar
-                            nameWithoutPrefix.decapitalizeSmart().endsWith(id)
+                            nameWithoutPrefix.decapitalizeSmart().let { decapitalizedPrefix ->
+                                decapitalizedPrefix.endsWith(id) ||
+                                        // value class mangling: getColor-hash
+                                        isValueClassMangled(decapitalizedPrefix, id)
+                            }
                 }
         }.toList()
     }
@@ -102,12 +106,22 @@
         val classes = callableId.classId?.let { classId ->
             getClassesByClassId(classId)
         } ?: getClassesInPackage(callableId.packageName)
+        val id = callableId.callableName.identifier
         return classes.flatMap { psiClass ->
             psiClass.methods.filter { psiMethod ->
-                psiMethod.name == callableId.callableName.identifier
+                psiMethod.name == id ||
+                        // value class mangling: functionName-hash
+                        isValueClassMangled(psiMethod.name, id)
             }
         }.toList()
     }
+
+    private fun isValueClassMangled(name: String, prefix: String): Boolean {
+        // A memory optimization for `name.startsWith("$prefix-")`, see KT-63486
+        return name.length > prefix.length &&
+                name[prefix.length] == '-' &&
+                name.startsWith(prefix)
+    }
 }
 
 class KotlinStaticPsiDeclarationProviderFactory(