public void accept(ChangeVisitor v) {
   try {
     for (ChangeSet change : iterChanges()) {
       change.accept(v);
     }
   } catch (ChangeVisitor.StopVisitingException e) {
   }
   v.finished();
 }
  private boolean doEndChangeSet(String name) {
    if (myCurrentChangeSet.isEmpty()) {
      myCurrentChangeSet = null;
      return false;
    }

    myCurrentChangeSet.setName(name);
    myCurrentChangeSet.lock();

    myStorage.writeNextSet(myCurrentChangeSet);
    myCurrentChangeSet = null;

    return true;
  }
 public synchronized void close() {
   if (!ApplicationManager.getApplication().isUnitTestMode()) {
     LocalHistoryLog.LOG.assertTrue(
         myCurrentChangeSet == null || myCurrentChangeSet.isEmpty(),
         "current changes won't be saved: " + myCurrentChangeSet);
   }
   myStorage.close();
 }
 public synchronized void addChange(Change c) {
   assert myChangeSetDepth != 0;
   myCurrentChangeSet.addChange(c);
 }