void (TreeChangeImpl nextChange) { ASTNode newParent = nextChange.getChangedParent(); for (TreeChangeImpl descendant : new ArrayList<>(myChangesByAllParents.get(newParent))) { ASTNode ancestorChild = findAncestorChild(newParent, descendant); if (ancestorChild != null) { nextChange.markChildChanged(ancestorChild, descendant.getLengthDelta()); } unregisterChange(descendant); } registerChange(nextChange); }