docs: public void rollback(Checkpoint<M> cp){
  		if (cp == null){
  			checkpoints.clear();
  		}else {
  			while (!checkpoints.isEmpty()){
  				Checkpoint<M> last = checkpoints.pop();
  				if (last == cp){
  					return;
  				}
  			}
  			throw new InvalidCheckpointException();// Implicitly rollback has happened.
  		}
  	}