diff --git a/platform/core-api/api-dump-experimental.txt b/platform/core-api/api-dump-experimental.txt
index 0d011eb825ae..c702fd5d4075 100644
--- a/platform/core-api/api-dump-experimental.txt
+++ b/platform/core-api/api-dump-experimental.txt
@@ -430,6 +430,12 @@ com.intellij.psi.stubs.StubElement
- a:getStubSerializer(com.intellij.psi.tree.IElementType):com.intellij.psi.stubs.ObjectStubSerializer
*f:com.intellij.psi.stubs.StubElementRegistryService$Companion
- f:getInstance():com.intellij.psi.stubs.StubElementRegistryService
+*:com.intellij.psi.stubs.StubRegistry
+- a:registerLightStubFactory(com.intellij.psi.tree.IElementType,com.intellij.psi.stubs.LightStubElementFactory):V
+- a:registerStubFactory(com.intellij.psi.tree.IElementType,com.intellij.psi.stubs.StubElementFactory):V
+- a:registerStubSerializer(com.intellij.psi.tree.IElementType,com.intellij.psi.stubs.ObjectStubSerializer):V
+*:com.intellij.psi.stubs.StubRegistryExtension
+- a:register(com.intellij.psi.stubs.StubRegistry):V
com.intellij.psi.templateLanguages.TemplateLanguageFileViewProvider
- com.intellij.psi.FileViewProvider
- *:getContentElementType(com.intellij.lang.Language):com.intellij.psi.tree.IElementType
diff --git a/platform/indexing-api/src/com/intellij/psi/stubs/StubRegistryExtension.kt b/platform/core-api/src/com/intellij/psi/stubs/StubRegistryExtension.kt
similarity index 94%
rename from platform/indexing-api/src/com/intellij/psi/stubs/StubRegistryExtension.kt
rename to platform/core-api/src/com/intellij/psi/stubs/StubRegistryExtension.kt
index 822147ec5204..3bd7fe7002be 100644
--- a/platform/indexing-api/src/com/intellij/psi/stubs/StubRegistryExtension.kt
+++ b/platform/core-api/src/com/intellij/psi/stubs/StubRegistryExtension.kt
@@ -1,4 +1,4 @@
-// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
+// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.psi.stubs
import com.intellij.psi.tree.IElementType
diff --git a/platform/core-impl/api-dump-unreviewed.txt b/platform/core-impl/api-dump-unreviewed.txt
index 3752fb6088d2..c9875244098c 100644
--- a/platform/core-impl/api-dump-unreviewed.txt
+++ b/platform/core-impl/api-dump-unreviewed.txt
@@ -285,6 +285,7 @@ c:com.intellij.extapi.psi.StubBasedPsiElementBase
- getStubOrPsiChild(com.intellij.psi.stubs.IStubElementType):com.intellij.psi.PsiElement
- getStubOrPsiChildren(com.intellij.psi.stubs.IStubElementType,com.intellij.util.ArrayFactory):com.intellij.psi.PsiElement[]
- getStubOrPsiChildren(com.intellij.psi.stubs.IStubElementType,com.intellij.psi.PsiElement[]):com.intellij.psi.PsiElement[]
+- getStubOrPsiChildren(com.intellij.psi.tree.IElementType,com.intellij.util.ArrayFactory):com.intellij.psi.PsiElement[]
- getStubOrPsiChildren(com.intellij.psi.tree.TokenSet,com.intellij.util.ArrayFactory):com.intellij.psi.PsiElement[]
- getStubOrPsiChildren(com.intellij.psi.tree.TokenSet,com.intellij.psi.PsiElement[]):com.intellij.psi.PsiElement[]
- p:getStubOrPsiParentOfType(java.lang.Class):com.intellij.psi.PsiElement
diff --git a/platform/core-impl/resources/META-INF/CoreImpl.xml b/platform/core-impl/resources/META-INF/CoreImpl.xml
index fa146132da5f..2315480a4b25 100644
--- a/platform/core-impl/resources/META-INF/CoreImpl.xml
+++ b/platform/core-impl/resources/META-INF/CoreImpl.xml
@@ -89,7 +89,7 @@
+ serviceImplementation="com.intellij.psi.stubs.StubElementRegistryServiceImpl"/>
diff --git a/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java b/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java
index 403ea1e654eb..35dc7776399a 100644
--- a/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java
+++ b/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java
@@ -1,4 +1,4 @@
-// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
+// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.core;
import com.intellij.DynamicBundle;
@@ -47,10 +47,7 @@ import com.intellij.psi.PsiReferenceService;
import com.intellij.psi.PsiReferenceServiceImpl;
import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry;
import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistryImpl;
-import com.intellij.psi.stubs.CoreStubElementRegistryServiceImpl;
-import com.intellij.psi.stubs.CoreStubTreeLoader;
-import com.intellij.psi.stubs.StubElementRegistryService;
-import com.intellij.psi.stubs.StubTreeLoader;
+import com.intellij.psi.stubs.*;
import com.intellij.util.KeyedLazyInstanceEP;
import com.intellij.util.graph.GraphAlgorithms;
import com.intellij.util.graph.impl.GraphAlgorithmsImpl;
@@ -117,7 +114,9 @@ public class CoreApplicationEnvironment {
registerApplicationService(CodeFoldingSettings.class, new CodeFoldingSettings());
registerApplicationService(CommandProcessor.class, new CoreCommandProcessor());
registerApplicationService(GraphAlgorithms.class, new GraphAlgorithmsImpl());
- registerApplicationService(StubElementRegistryService.class, new CoreStubElementRegistryServiceImpl());
+
+ registerApplicationExtensionPoint(StubElementRegistryServiceImplKt.STUB_REGISTRY_EP, StubRegistryExtension.class);
+ registerApplicationService(StubElementRegistryService.class, new StubElementRegistryServiceImpl());
application.registerService(ApplicationInfo.class, ApplicationInfoImpl.class);
diff --git a/platform/core-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java b/platform/core-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java
index 5c486e18e866..f9ff9b405378 100644
--- a/platform/core-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java
+++ b/platform/core-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java
@@ -436,9 +436,19 @@ public class StubBasedPsiElementBase extends ASTDelegateP
}
/**
+ * @deprecated use {@link #getStubOrPsiChildren(IElementType, ArrayFactory)} instead
+ *
* @return children of specified type, taken from stubs (if this element is currently stub-based) or AST (otherwise).
*/
+ @Deprecated
public , Psi extends PsiElement> Psi @NotNull [] getStubOrPsiChildren(@NotNull IStubElementType elementType, @NotNull ArrayFactory extends Psi> f) {
+ return getStubOrPsiChildren((IElementType)elementType, f);
+ }
+
+ /**
+ * @return children of specified type, taken from stubs (if this element is currently stub-based) or AST (otherwise).
+ */
+ public , Psi extends PsiElement> Psi @NotNull [] getStubOrPsiChildren(@NotNull IElementType elementType, @NotNull ArrayFactory extends Psi> f) {
T stub = getGreenStub();
if (stub != null) {
//noinspection unchecked
diff --git a/platform/indexing-impl/src/com/intellij/psi/stubs/StubElementRegistryServiceImpl.kt b/platform/core-impl/src/com/intellij/psi/stubs/StubElementRegistryServiceImpl.kt
similarity index 100%
rename from platform/indexing-impl/src/com/intellij/psi/stubs/StubElementRegistryServiceImpl.kt
rename to platform/core-impl/src/com/intellij/psi/stubs/StubElementRegistryServiceImpl.kt
diff --git a/platform/indexing-api/api-dump-experimental.txt b/platform/indexing-api/api-dump-experimental.txt
index 4b781a462e67..ad26dfd6f742 100644
--- a/platform/indexing-api/api-dump-experimental.txt
+++ b/platform/indexing-api/api-dump-experimental.txt
@@ -17,12 +17,6 @@ f:com.intellij.psi.search.IndexPattern
- *:getWordToHighlight():java.lang.String
a:com.intellij.psi.stubs.StubIndex
- *a:getMaxContainingFileCount(com.intellij.psi.stubs.StubIndexKey,java.lang.Object,com.intellij.openapi.project.Project,com.intellij.psi.search.GlobalSearchScope):I
-*:com.intellij.psi.stubs.StubRegistry
-- a:registerLightStubFactory(com.intellij.psi.tree.IElementType,com.intellij.psi.stubs.LightStubElementFactory):V
-- a:registerStubFactory(com.intellij.psi.tree.IElementType,com.intellij.psi.stubs.StubElementFactory):V
-- a:registerStubSerializer(com.intellij.psi.tree.IElementType,com.intellij.psi.stubs.ObjectStubSerializer):V
-*:com.intellij.psi.stubs.StubRegistryExtension
-- a:register(com.intellij.psi.stubs.StubRegistry):V
*Fa:com.intellij.util.indexing.BuildableRootsChangeRescanningInfo
- com.intellij.openapi.project.RootsChangeRescanningInfo
- a:addInheritedSdk():com.intellij.util.indexing.BuildableRootsChangeRescanningInfo
diff --git a/platform/indexing-api/resources/META-INF/Indexing.xml b/platform/indexing-api/resources/META-INF/Indexing.xml
index 9ea945ec3bf8..0655b850e74f 100644
--- a/platform/indexing-api/resources/META-INF/Indexing.xml
+++ b/platform/indexing-api/resources/META-INF/Indexing.xml
@@ -35,10 +35,6 @@
-
-