(U|S)LC: fix getText for modifier list / accessor
diff --git a/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt b/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt
index d8b532f..d5cf041 100644
--- a/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt
+++ b/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt
@@ -122,22 +122,26 @@
         }
     }
 
-    override fun getTextOffset(): Int {
+    private inline fun <R> getTextVariantFromPropertyAccessorIfNeeded(
+        retriever: (KtPropertyAccessor) -> R
+    ): R? {
         val auxiliaryOrigin = lightMemberOrigin?.auxiliaryOriginalElement
-        if (auxiliaryOrigin is KtPropertyAccessor) {
-            return auxiliaryOrigin.textOffset
-        }
+        return (auxiliaryOrigin as? KtPropertyAccessor)?.let(retriever)
+    }
 
-        return super.getTextOffset()
+    override fun getText(): String {
+        return getTextVariantFromPropertyAccessorIfNeeded(KtPropertyAccessor::getText)
+            ?: super.getText()
+    }
+
+    override fun getTextOffset(): Int {
+        return getTextVariantFromPropertyAccessorIfNeeded(KtPropertyAccessor::getTextOffset)
+            ?: super.getTextOffset()
     }
 
     override fun getTextRange(): TextRange {
-        val auxiliaryOrigin = lightMemberOrigin?.auxiliaryOriginalElement
-        if (auxiliaryOrigin is KtPropertyAccessor) {
-            return auxiliaryOrigin.textRange
-        }
-
-        return super.getTextRange()
+        return getTextVariantFromPropertyAccessorIfNeeded(KtPropertyAccessor::getTextRange)
+            ?: super.getTextRange()
     }
 
     abstract override fun getThrowsList(): PsiReferenceList
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt
index 5d9644b..bbb4914 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt
@@ -217,6 +217,10 @@
         return _defaultValue
     }
 
+    override fun getText(): String {
+        return lightMemberOrigin?.auxiliaryOriginalElement?.text ?: super.getText()
+    }
+
     override fun getTextOffset(): Int {
         return lightMemberOrigin?.auxiliaryOriginalElement?.textOffset ?: super.getTextOffset()
     }
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightMemberModifierList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightMemberModifierList.kt
index 9ff558d..feab1a4 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightMemberModifierList.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightMemberModifierList.kt
@@ -13,6 +13,7 @@
 import org.jetbrains.kotlin.asJava.elements.KtLightMember
 import org.jetbrains.kotlin.light.classes.symbol.invalidAccess
 import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
+import org.jetbrains.kotlin.psi.KtModifierList
 import org.jetbrains.kotlin.psi.KtPropertyAccessor
 import org.jetbrains.kotlin.psi.psiUtil.hasBody
 
@@ -55,20 +56,26 @@
 
     override fun findAnnotation(qualifiedName: String) = annotations.firstOrNull { it.qualifiedName == qualifiedName }
 
-    override fun getTextOffset(): Int {
+    private inline fun <R> getTextVariantFromModifierListOfPropertyAccessorIfNeeded(
+        retriever: (KtModifierList) -> R
+    ): R? {
         val auxiliaryOrigin = (owner as? KtLightMember<*>)?.lightMemberOrigin?.auxiliaryOriginalElement
-        return if (auxiliaryOrigin is KtPropertyAccessor)
-            auxiliaryOrigin.modifierList?.textOffset ?: super.getTextOffset()
-        else
-            super.getTextOffset()
+        return (auxiliaryOrigin as? KtPropertyAccessor)?.modifierList?.let(retriever)
+    }
+
+    override fun getText(): String {
+        return getTextVariantFromModifierListOfPropertyAccessorIfNeeded(KtModifierList::getText)
+            ?: super.getText()
+    }
+
+    override fun getTextOffset(): Int {
+        return getTextVariantFromModifierListOfPropertyAccessorIfNeeded(KtModifierList::getTextOffset)
+            ?: super.getTextOffset()
     }
 
     override fun getTextRange(): TextRange {
-        val auxiliaryOrigin = (owner as? KtLightMember<*>)?.lightMemberOrigin?.auxiliaryOriginalElement
-        return if (auxiliaryOrigin is KtPropertyAccessor)
-            auxiliaryOrigin.modifierList?.textRange ?: super.getTextRange()
-        else
-            super.getTextRange()
+        return getTextVariantFromModifierListOfPropertyAccessorIfNeeded(KtModifierList::getTextRange)
+            ?: super.getTextRange()
     }
 
     override fun equals(other: Any?): Boolean = this === other
diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMethods.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMethods.kt
index d0855ae..bc21981 100644
--- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMethods.kt
+++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMethods.kt
@@ -26,11 +26,7 @@
 import org.jetbrains.kotlin.load.java.BuiltinMethodsWithSpecialGenericSignature.getSpecialSignatureInfo
 import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor
 import org.jetbrains.kotlin.load.kotlin.TypeMappingMode
-import org.jetbrains.kotlin.psi.KtDeclaration
-import org.jetbrains.kotlin.psi.KtFunction
-import org.jetbrains.kotlin.psi.KtProperty
-import org.jetbrains.kotlin.psi.KtPropertyAccessor
-import org.jetbrains.kotlin.psi.KtTypeParameterListOwner
+import org.jetbrains.kotlin.psi.*
 import org.jetbrains.kotlin.psi.psiUtil.hasBody
 import org.jetbrains.kotlin.resolve.DescriptorUtils
 import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind
@@ -61,20 +57,26 @@
 
     override fun copy() = KtUltraLightMethodModifierList(support, owner, delegate)
 
-    override fun getTextOffset(): Int {
+    private inline fun <R> getTextVariantFromModifierListOfPropertyAccessorIfNeeded(
+        retriever: (KtModifierList) -> R
+    ): R? {
         val auxiliaryOrigin = (owner as? KtLightMember<*>)?.lightMemberOrigin?.auxiliaryOriginalElement
-        return if (auxiliaryOrigin is KtPropertyAccessor)
-            auxiliaryOrigin.modifierList?.textOffset ?: super.getTextOffset()
-        else
-            super.getTextOffset()
+        return (auxiliaryOrigin as? KtPropertyAccessor)?.modifierList?.let(retriever)
+    }
+
+    override fun getText(): String {
+        return getTextVariantFromModifierListOfPropertyAccessorIfNeeded(KtModifierList::getText)
+            ?: super.getText()
+    }
+
+    override fun getTextOffset(): Int {
+        return getTextVariantFromModifierListOfPropertyAccessorIfNeeded(KtModifierList::getTextOffset)
+            ?: super.getTextOffset()
     }
 
     override fun getTextRange(): TextRange {
-        val auxiliaryOrigin = (owner as? KtLightMember<*>)?.lightMemberOrigin?.auxiliaryOriginalElement
-        return if (auxiliaryOrigin is KtPropertyAccessor)
-            auxiliaryOrigin.modifierList?.textRange ?: super.getTextRange()
-        else
-            super.getTextRange()
+        return getTextVariantFromModifierListOfPropertyAccessorIfNeeded(KtModifierList::getTextRange)
+            ?: super.getTextRange()
     }
 }