code: def get_node(self, path):
          
          try:
              path = path.rstrip('/')
              if path == '':
                  raise NodeError("Cannot retrieve node without path")
              self.nodes  # access nodes first in order to set _nodes_dict
              paths = path.split('/')
              if len(paths) == 1:
                  if not self.is_root():
                      path = '/'.join((self.path, paths[0]))
                  else:
                      path = paths[0]
                  return self._nodes_dict[path]
              elif len(paths) > 1:
                  if self.changeset is None:
                      raise NodeError("Cannot access deeper "
                                      "nodes without changeset")
                  else:
                      path1, path2 = paths[0], '/'.join(paths[1:])
                      return self.get_node(path1).get_node(path2)
              else:
                  raise KeyError
          except KeyError:
              raise NodeError("Node does not exist at %s" % path)
docs: Returns node from within this particular ``DirNode``, so it is now
          allowed to fetch, i.e. node located at 'docs/api/index.rst' from node
          'docs'. In order to access deeper nodes one must fetch nodes between
          them first - this would work::
  
             docs = root.get_node('docs')
             docs.get_node('api').get_node('index.rst')
  
          :param: path - relative to the current node
  
          .. note::
             To access lazily (as in example above) node have to be initialized
             with related changeset object - without it node is out of
             context and may know nothing about anything else than nearest
             (located at same level) nodes.