docs: def find_one_node(self, *keys, value, decend=True):
          """Find a node on the branch of the instance with a
          `keys=data` item in the `data` dict. 
  
          Nested values are accessed by specifying the keys in sequence. 
          e.g. `node.get_data("country", "city")` would access
          `node.data["country"]["city"]`
  
          :param keys: the `data` dict key(s) referencing the required value.
          :type keys: str 
          :param value: the value corresponding to `keys`. Note that
              `value` is a keyword-only argument.
          :param decend: `decend=True` traverse down the branch sub-tree  
              starting from `self`. `decend=False` traverse up the   
              branch from `self` towards root.
          :type decend: bool 
          :returns: the first node found with `keys=data` in the `data` dict. 
          :rtype: Node or None 
          """
          if decend:
              traversal = self
          else:
              traversal = self._ancestors
          for _node in traversal:
              _val = _node.get_data(*keys)
              if _val == value:
                  return _node
          return None