void (@NotNull DefaultTreeModel model, @NotNull ChangesBrowserNode<?> node) { ChangesBrowserNode<?> collapsedNode = node; while (collapsedNode.getChildCount() == 1) { ChangesBrowserNode<?> child = (ChangesBrowserNode<?>)collapsedNode.getChildAt(0); ChangesBrowserNode<?> collapsed = collapseParentWithOnlyChild(collapsedNode, child); if (collapsed == null) break; collapsedNode = collapsed; } if (collapsedNode != node) { ChangesBrowserNode<?> parent = node.getParent(); final int idx = parent.getIndex(node); model.removeNodeFromParent(node); model.insertNodeInto(collapsedNode, parent, idx); node = collapsedNode; } node.iterateNodeChildren().forEach(child -> { collapseDirectories(model, child); }); }