private void nextSnapshot(List<SnapshotFile> files) {
		
		int count = 0;
		
		for (SnapshotFile file : files) {
			if (file.getSize() >= 4194304 && file.getState() instanceof New) {
				// Files >= 4MB and NEW state change to UNMODIFIED
				Unmodified unmodified = new Unmodified();
				file.setState(unmodified);
				count++;
				continue;
			} else if (file.getSize() >= 4194304) {
				// Files >= 4MB don't make changes.
				count++;
				continue;
			} else {
				// Files < than 4MB process as normals.
				State newState = file.getState().nextState(this.random);
				file.setState(newState);
				if (!(newState instanceof Deleted))	count++;
			}
		}
		
		// Create new files
		int newFiles = Math.round(count*P_N/100);
		for (int i=0; i<newFiles; i++) {
			String filename = RandomStringUtils.randomAlphabetic(7) + ".gz";
			SnapshotFile file = new SnapshotFile(filename, getFileSize(), new New());
			files.add(file);
		}
		
		assert (this.totalBytes >= 2147483648L); // 2GB
		
	}