void (@NotNull String name, @NotNull Processor<? super NavigationItem> processor, @NotNull FindSymbolParameters parameters) { PsiManager psiManager = PsiManager.getInstance(parameters.getProject()); FileBasedIndex.getInstance().processValues(XsltSymbolIndex.NAME, name, null, (file, kind) -> { if (kind == null) return true; PsiFile psiFile = psiManager.findFile(file); if (psiFile == null || !XsltSupport.isXsltFile(psiFile)) return true; XmlTag root = ((XmlFile)psiFile).getRootTag(); if (root == null) return true; JBIterable<XmlTag> tags = kind == XsltSymbolIndex.Kind.ANYTHING ? JBIterable.<XmlTag>empty() .append(root.findSubTags("variable", XsltSupport.XSLT_NS)) .append(root.findSubTags("param", XsltSupport.XSLT_NS)) .append(root.findSubTags("template", XsltSupport.XSLT_NS)) : JBIterable.of(root.findSubTags(StringUtil.toLowerCase(kind.name()), XsltSupport.XSLT_NS)); return tags.processEach(tag -> { XsltElement el = kind.wrap(tag); if (el instanceof PsiNamedElement && el instanceof NavigationItem) { if (name.equals(((PsiNamedElement)el).getName())) { return processor.process((NavigationItem)el); } } return true; }); }, parameters.getSearchScope(), parameters.getIdFilter()); }