boolean (DomParentStrategy strategy, final Object o) { if (strategy == o) return true; if (!(o instanceof DomParentStrategy)) return false; final XmlElement thatElement = ((DomParentStrategy)o).getXmlElement(); if (thatElement == null) return false; XmlElement element = strategy.getXmlElement(); if (element == null) return false; if (xmlElementsEqual(element, thatElement)) { if (element != thatElement) { final PsiElement nav1 = element.getNavigationElement(); final PsiElement nav2 = thatElement.getNavigationElement(); if (nav1 != nav2) { PsiElement curContext = findIncluder(element); PsiElement navContext = findIncluder(nav1); LOG.error( "x:include processing error\n" + "nav1,nav2=" + nav1 + "," + nav2 + ";\n" + nav1.getContainingFile() + ":" + nav1.getTextRange().getStartOffset() + "!=" + nav2.getContainingFile() + ":" + nav2.getTextRange().getStartOffset() + ";\n" + (nav1 == element) + ";" + (nav2 == thatElement) + ";\n" + "contexts equal: " + (curContext == navContext) + ";\n" + "curContext?.physical=" + (curContext != null && curContext.isPhysical()) + ";\n" + "navContext?.physical=" + (navContext != null && navContext.isPhysical()) + ";\n" + "myElement.physical=" + element.isPhysical() + ";\n" + "thatElement.physical=" + thatElement.isPhysical(), new Throwable(), new Attachment("Including tag text 1.xml", curContext == null ? "null" : curContext.getText()), new Attachment("Including tag text 2.xml", navContext == null ? "null" : navContext.getText())); throw new AssertionError(); } } return true; } return false; }