private ShapeNode PickNextNode(ShapeNode root) { // TODO: Could auto-set geometry leaf nodes to Inactive. Predicate <TreeGraphNode> pred = (node) => { return(((ShapeNode)node).Value.Status == ShapeStatus.Active); }; return(root.BreadthFirstSearch(pred) as ShapeNode); }