docs: def walk_preorder(self):
          """Iterates the program tree starting from this object, going down."""
          yield self
          for child in self._children():
              for descendant in child.walk_preorder():
                  yield descendant