int (@NotNull TreeChangeImpl o) { List<ASTNode> thisParents = ContainerUtil.reverse(getSuperParents()); List<ASTNode> thatParents = ContainerUtil.reverse(o.getSuperParents()); for (int i = 1; i <= thisParents.size() && i <= thatParents.size(); i++) { ASTNode thisParent = i < thisParents.size() ? thisParents.get(i) : myParent; ASTNode thatParent = i < thatParents.size() ? thatParents.get(i) : o.myParent; int result = compareNodePositions(thisParent, thatParent); if (result != 0) return result; } return 0; }