AA: do not create symbol pointers for (intersection|substitution) overridden members
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirFunctionSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirFunctionSymbol.kt
index e5d4c49..fe67f7a 100644
--- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirFunctionSymbol.kt
+++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirFunctionSymbol.kt
@@ -29,7 +29,6 @@
 import org.jetbrains.kotlin.descriptors.Modality
 import org.jetbrains.kotlin.descriptors.Visibility
 import org.jetbrains.kotlin.fir.containingClass
-import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
 import org.jetbrains.kotlin.fir.declarations.utils.*
 import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames
 import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
@@ -86,9 +85,7 @@
     override val visibility: Visibility get() = withValidityAssertion { firSymbol.visibility }
 
     override fun createPointer(): KtSymbolPointer<KtFunctionSymbol> = withValidityAssertion {
-        if (firSymbol.fir.origin != FirDeclarationOrigin.SubstitutionOverride) {
-            KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
-        }
+        KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
 
         return when (symbolKind) {
             KtSymbolKind.TOP_LEVEL ->
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirKotlinPropertySymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirKotlinPropertySymbol.kt
index 28b0d1e..74f87f2 100644
--- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirKotlinPropertySymbol.kt
+++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirKotlinPropertySymbol.kt
@@ -28,11 +28,9 @@
 import org.jetbrains.kotlin.analysis.api.types.KtType
 import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
 import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
-import org.jetbrains.kotlin.descriptors.ClassKind
 import org.jetbrains.kotlin.descriptors.Modality
 import org.jetbrains.kotlin.descriptors.Visibility
 import org.jetbrains.kotlin.fir.containingClass
-import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
 import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
 import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
 import org.jetbrains.kotlin.fir.declarations.utils.*
@@ -40,7 +38,6 @@
 import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
 import org.jetbrains.kotlin.fir.symbols.impl.FirSyntheticPropertySymbol
 import org.jetbrains.kotlin.fir.symbols.impl.isExtension
-import org.jetbrains.kotlin.fir.types.toRegularClassSymbol
 import org.jetbrains.kotlin.name.CallableId
 import org.jetbrains.kotlin.name.Name
 
@@ -121,9 +118,7 @@
     override val hasSetter: Boolean get() = withValidityAssertion { firSymbol.setterSymbol != null }
 
     override fun createPointer(): KtSymbolPointer<KtKotlinPropertySymbol> = withValidityAssertion {
-        if (firSymbol.fir.origin != FirDeclarationOrigin.SubstitutionOverride) {
-            KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
-        }
+        KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
 
         return when (symbolKind) {
             KtSymbolKind.TOP_LEVEL -> TODO("Creating symbol for top level properties is not supported yet")
diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KtPsiBasedSymbolPointer.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KtPsiBasedSymbolPointer.kt
index fba476d..ea57673 100644
--- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KtPsiBasedSymbolPointer.kt
+++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KtPsiBasedSymbolPointer.kt
@@ -37,12 +37,15 @@
         public fun <S : KtSymbol> createForSymbolFromSource(symbol: S): KtPsiBasedSymbolPointer<S>? {
             if (symbol.origin == KtSymbolOrigin.LIBRARY) return null
 
-            /**
-             * If symbol points to a generated member, we won't be able to recover it later on, because there is no corresponding
-             * psi by which it can be found
-             */
+            // If symbol points to a generated member, we won't be able to recover it later on, because there is no corresponding
+            // psi by which it can be found
             if (symbol.origin == KtSymbolOrigin.SOURCE_MEMBER_GENERATED) return null
 
+            // (intersection | substitution) overrides are intermediate, non-materialized (i.e., fake) members, coming from super type(s).
+            // Therefore, no corresponding psi either.
+            if (symbol.origin == KtSymbolOrigin.INTERSECTION_OVERRIDE) return null
+            if (symbol.origin == KtSymbolOrigin.SUBSTITUTION_OVERRIDE) return null
+
             val psi = when (val psi = symbol.psi) {
                 is KtDeclaration -> psi
                 is KtFile -> psi
diff --git a/analysis/analysis-api/testData/scopes/memberScopeByFqName/Int.kt b/analysis/analysis-api/testData/scopes/memberScopeByFqName/Int.kt
index d17b54cc..869ae0b 100644
--- a/analysis/analysis-api/testData/scopes/memberScopeByFqName/Int.kt
+++ b/analysis/analysis-api/testData/scopes/memberScopeByFqName/Int.kt
@@ -1,4 +1,3 @@
 // WITH_STDLIB
-// DO_NOT_CHECK_SYMBOL_RESTORE
 
 // class: kotlin/Int
diff --git a/analysis/analysis-api/testData/scopes/memberScopeByFqName/enumEntry.kt b/analysis/analysis-api/testData/scopes/memberScopeByFqName/enumEntry.kt
index 27631de..9abcb1f2 100644
--- a/analysis/analysis-api/testData/scopes/memberScopeByFqName/enumEntry.kt
+++ b/analysis/analysis-api/testData/scopes/memberScopeByFqName/enumEntry.kt
@@ -7,4 +7,3 @@
 }
 
 // callable: test/E.A
-// DO_NOT_CHECK_SYMBOL_RESTORE
diff --git a/analysis/analysis-api/testData/scopes/memberScopeByFqName/java.lang.String.kt b/analysis/analysis-api/testData/scopes/memberScopeByFqName/java.lang.String.kt
index f3c6fb4..89c8b44 100644
--- a/analysis/analysis-api/testData/scopes/memberScopeByFqName/java.lang.String.kt
+++ b/analysis/analysis-api/testData/scopes/memberScopeByFqName/java.lang.String.kt
@@ -1,3 +1 @@
-// DO_NOT_CHECK_SYMBOL_RESTORE
-
 // class: java/lang/String