message = Messages.resources_readingSnap;
monitor.beginTask(message, Policy.totalWork);
ElementTreeReader reader = new ElementTreeReader(workspace.getSaveManager());
while (input.available() > 0) {
readWorkspaceFields(input, Policy.subMonitorFor(monitor, Policy.totalWork / 2));
complete = reader.readDelta(complete, input);
try {
// make sure each snapshot is read by the correct reader
int version = input.readInt();
if (version != getVersion())
return WorkspaceTreeReader.getReader(workspace, version).readSnapshotTree(input, complete, monitor);