public Node node(String path, Integer changesetNumber, String changesetIdentifier) {
   Map<String, String> rawContent = contentCache.readFor(changesetNumber);
   if (!path.equals("") && rawContent.containsKey(path)) {
     return new FileNode(this, path, changesetNumber, changesetIdentifier, rawContent.get(path));
   } else {
     DirNode dirNode =
         new DirNode(this, path, changesetNumber, changesetIdentifier, rawContent.get(path) + "/");
     dirNode.setChildren(childNodesFor(dirNode, rawContent));
     return dirNode;
   }
 }