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.

def add_node(self, node, xtra=None, branch=None):
        """
        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.
                
        """
        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