private void loadSnapshots(InputStream in, int size) throws IOException {
   for (int i = 0; i < size; i++) {
     SnapshotSection.Snapshot pbs = SnapshotSection.Snapshot.parseDelimitedFrom(in);
     INodeDirectory root = loadINodeDirectory(pbs.getRoot(), parent.getLoaderContext());
     int sid = pbs.getSnapshotId();
     INodeDirectorySnapshottable parent =
         (INodeDirectorySnapshottable) fsDir.getInode(root.getId()).asDirectory();
     Snapshot snapshot = new Snapshot(sid, root, parent);
     // add the snapshot to parent, since we follow the sequence of
     // snapshotsByNames when saving, we do not need to sort when loading
     parent.addSnapshot(snapshot);
     snapshotMap.put(sid, snapshot);
   }
 }