boolean (@NotNull PsiElement element) { // self-reference is only a trick to enable rename/find usages etc. but it shouldn't actually // refer to itself because this would list the element to be renamed/searched for twice assert !super.isReferenceTo(element); if (element == myParam) return false; if (!(element instanceof XsltParameter param)) return false; final String name = param.getName(); if (name == null || !name.equals(myParam.getName())) return false; final XsltTemplate template = XsltCodeInsightUtil.getTemplate(myTag, false); final XsltTemplate myTemplate = XsltCodeInsightUtil.getTemplate(param.getTag(), false); if (template == myTemplate) return true; if (template == null || myTemplate == null) return false; if (!Comparing.equal(template.getMode(), myTemplate.getMode())) { return false; } final XmlFile xmlFile = (XmlFile)element.getContainingFile(); final XmlFile myFile = (XmlFile)myParam.getContainingFile(); if (myFile == xmlFile) return true; return XsltIncludeIndex.isReachableFrom(myFile, xmlFile); }