This node's descendants in depth-first preorder.
Iterable<Node> get descendants sync* { for (final child in children) { yield child; yield* child.descendants; } }