private DataTree convertThisSnapShot() throws IOException {
    // create a datatree
    DataTree dataTree = new DataTree();
    DataNodeV1 oldDataNode = oldDataTree.getNode("");
    if (oldDataNode == null) {
      // should never happen
      LOG.error("Upgrading from an empty snapshot.");
    }

    recurseThroughDataTree(dataTree, "");
    dataTree.lastProcessedZxid = oldDataTree.lastProcessedZxid;
    return dataTree;
  }
 /**
  * recurse through the old datatree and construct the new data tree
  *
  * @param dataTree the new datatree to be constructed
  * @param path the path to start with
  */
 private void recurseThroughDataTree(DataTree dataTree, String path) {
   if (path == null) return;
   DataNodeV1 oldDataNode = oldDataTree.getNode(path);
   HashSet<String> children = oldDataNode.children;
   DataNode parent = null;
   if ("".equals(path)) {
     parent = null;
   } else {
     int lastSlash = path.lastIndexOf('/');
     String parentPath = path.substring(0, lastSlash);
     parent = dataTree.getNode(parentPath);
   }
   DataNode thisDatNode = convertDataNode(dataTree, parent, oldDataNode);
   dataTree.addDataNode(path, thisDatNode);
   if (children == null || children.size() == 0) {
     return;
   } else {
     for (String child : children) {
       recurseThroughDataTree(dataTree, path + "/" + child);
     }
   }
 }