code: def add_node(self, node, xtra=None, branch=None):
          
          if not node in self:
              node_ = DictNode(node, xtra)
              self.update(node_)
              self[node].branch = (branch or getattr(node, "branch", None))
              return True
          return False
docs: Adds a **node object** to the ``DictGraph``. Returns ``True`` if a 
          new **node object** has been added. If the **node object** is already in
          the ``DictGraph`` returns ``False``.
          
          Arguments:
          
            - node(``object``) Node to be added. Any hashable Python ``object``.
            - xtra(``dict``) [default: ``None``] The newly created topological 
              ``Node.xtra`` dictionary will be updated with the contents of this 
              dictionary. 
            - branch(``object``) [default: ``None``] an identificator used to 
              sort topologically equivalent branches.