public TemporaryStorage apply(Snapshot snapshot) {
final Storage storage = MemStorage.newEmptyStorage();
FakeClock clock = new FakeClock();
clock.setNowMillis(snapshot.getTimestamp());
final SnapshotStore<Snapshot> snapshotStore = new SnapshotStoreImpl(clock, storage);
snapshotStore.applySnapshot(snapshot);
return new TemporaryStorage() {
@Override
public void deleteTasks(final Query.Builder query) {
storage.write(new MutateWork.NoResult.Quiet() {