boolean (XmlTag tag) { if (myHistory.contains(tag)) { myIsCyclic = true; return false; } myHistory.add(tag); if (XsltSupport.isVariableOrParam(tag)) { processVarOrParam(tag); } else if (XsltSupport.isTemplate(tag, false)) { processTemplate(tag); } else if (XsltSupport.isIncludeOrImport(tag)) { if (XsltSupport.isImport(tag) && !followImport()) { return shouldContinue(); } final PsiFile containingFile = tag.getContainingFile(); assert containingFile != null; PsiFile file = containingFile.getOriginalFile(); final PsiFile psiFile = ResolveUtil.resolveFile(tag.getAttribute("href", null), file); if (psiFile != null && XsltSupport.isXsltFile(psiFile)) { processExternalFile(psiFile, tag); } } else { processTag(tag); } return shouldContinue(); }