SLC: find property accessor PSI from containing property PSI

...so that auxiliaryOriginalElement used by UAST can be set properly

^KT-70458 fixed
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt
index 27a1d89..258fffd 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt
@@ -389,11 +389,30 @@
     }
 
     fun createSymbolLightAccessorMethod(accessor: KaPropertyAccessorSymbol): SymbolLightAccessorMethod {
+        // [KtFakeSourceElementKind.DelegatedPropertyAccessor] is not allowed as source PSI, e.g.,
+        //
+        //   val p by delegate(...)
+        //
+        // However, we also lose the source PSI of a custom property accessor, e.g.,
+        //
+        //   val p by delegate(...)
+        //     get() = ...
+        //
+        // We go upward to the property's source PSI and attempt to find/bind accessor's source PSI.
+        fun sourcePsiFromProperty(): KtPropertyAccessor? {
+            if (accessor.origin != KaSymbolOrigin.SOURCE) return null
+            val propertyPsi = declaration.psi as? KtProperty ?: return null
+            return if (accessor is KaPropertyGetterSymbol)
+                propertyPsi.getter
+            else
+                propertyPsi.setter
+        }
+
         val lightMemberOrigin = originalElement?.let {
             LightMemberOriginForDeclaration(
                 originalElement = it,
                 originKind = JvmDeclarationOriginKind.OTHER,
-                auxiliaryOriginalElement = accessor.sourcePsiSafe<KtDeclaration>()
+                auxiliaryOriginalElement = accessor.sourcePsiSafe<KtDeclaration>() ?: sourcePsiFromProperty()
             )
         }