docs: def node_from_elem(elem, nodefactory=Node, lazy=()):
      """
      Convert (recursively) an ElementTree object into a Node object.
      """
      children = list(elem)
      lineno = getattr(elem, 'lineno', None)
      if not children:
          return nodefactory(elem.tag, dict(elem.attrib), elem.text,
                             lineno=lineno)
      if striptag(elem.tag) in lazy:
          nodes = (node_from_elem(ch, nodefactory, lazy) for ch in children)
      else:
          nodes = [node_from_elem(ch, nodefactory, lazy) for ch in children]
      return nodefactory(elem.tag, dict(elem.attrib), nodes=nodes, lineno=lineno)