code: def get_nodes(self, path):
          
  
          if self._get_kind(path) != NodeKind.DIR:
              raise ChangesetError("Directory does not exist for revision %s at "
                  " '%s'" % (self.revision, path))
          path = self._fix_path(path)
  
          filenodes = [FileNode(f, changeset=self) for f in self._file_paths
              if os.path.dirname(f) == path]
          dirs = path == '' and '' or [d for d in self._dir_paths
              if d and posixpath.dirname(d) == path]
          dirnodes = [DirNode(d, changeset=self) for d in dirs
              if os.path.dirname(d) == path]
  
          als = self.repository.alias
          for k, vals in self._extract_submodules().iteritems():
              #vals = url,rev,type
              loc = vals[0]
              cs = vals[1]
              dirnodes.append(SubModuleNode(k, url=loc, changeset=cs,
                                            alias=als))
          nodes = dirnodes + filenodes
          # cache nodes
          for node in nodes:
              self.nodes[node.path] = node
          nodes.sort()
  
          return nodes
docs: Returns combined ``DirNode`` and ``FileNode`` objects list representing
          state of changeset at the given ``path``. If node at the given ``path``
          is not instance of ``DirNode``, ChangesetError would be raised.