Stream<PsiMethod> (@NotNull PsiMethod method, @Nullable GlobalSearchScope searchScope, @NotNull Predicate<? super PsiMethod> preFilter) { if (!isInSourceContent(method)) return null; Project project = method.getProject(); String name = method.getName(); SearchScope useScope = method.getUseScope(); GlobalSearchScope effectiveSearchScope = GlobalSearchScopeUtil.toGlobalSearchScope(useScope, project); if (searchScope != null) { effectiveSearchScope = effectiveSearchScope.intersectWith(searchScope); } List<PsiMethod> methods = new ArrayList<>(); if (!StubIndex.getInstance().processElements(JavaStubIndexKeys.METHODS, name, project, new JavaSourceFilterScope(effectiveSearchScope), PsiMethod.class, m -> { ProgressManager.checkCanceled(); if (m == method) return true; if (!preFilter.test(m)) return true; methods.add(m); return methods.size() <= MAX_OVERRIDDEN_METHOD_SEARCH; })) { return null; } return methods.stream().filter(candidate -> PsiSuperMethodUtil.isSuperMethod(candidate, method)); }