docs: def _element_to_node(self, node, name, value):
          """ Insert the parsed element (``name``, ``value`` pair) into the node.
  
          You should always use the returned node and forget the one
          that was given in parameter.
  
          :param node: the node where the is added to
          :returns: the node. Note that this may be a new node instance.
          """
  
          # is the target node a list?
          try:
              node.append(value)
          except AttributeError:
              pass
          else:
              return node
  
          # target node is a dict
          if name in node:
              # there's already an element with same name -> convert the node into list
              node = node.values() + [value]
          else:
              # just add the value into the node
              node[name] = value
          return node