Collects all visible nodes in the tree.
List<Node> collectVisible() { final result = <Node>[]; traverse((node) { if (node.visible) result.add(node); }); return result; }