code: public synchronized void playMethodCalls(Memento memento, String [] savePoints)
     {
  	String savePoint = null;
  	
  	MethodCallFact methodCallFact = null;
  	SummaryException exceptions = new SummaryException();
  	
  	//loop thru savepoints
  	for (int i = 0; i < savePoints.length; i++)
  	{
  	   savePoint = savePoints[i];
  	   
  	   if(savePoint == null || savePoint.length() == 0 || savePoint.trim().length() == 0)
  		continue;
  	   
  	   Debugger.println(this,"processing savepoint="+savePoint);
  	   
  	   //get method call fact
  	   methodCallFact = (MethodCallFact)memento.restore(savePoint, MethodCallFact.class);
  	   try
  	   {
  		ObjectProxy.executeMethod(prepareObject(methodCallFact,savePoint), methodCallFact);
  	   }
  	   catch(Exception e)
  	   {
  		exceptions.addException(new SystemException("savePoint="+savePoint+" methodCallFact="+methodCallFact+" exception="+Debugger.stackTrace(e)));
  		throw new SystemException(e); // TODO: 
  	   }
  	}
  	
  	if(!exceptions.isEmpty())
  	   throw exceptions;
     }
docs: Redo the method calls of a target object
  @param memento the memento to restore MethodCallFact
  @param savePoints the list of the MethodCallFact save points
  @throws SummaryException