@Override
 public EntityState getEntityState(EntityReference anIdentity)
     throws EntityStoreException, EntityNotFoundException {
   EntityState entityState = uow.getEntityState(anIdentity);
   versions.rememberVersion(entityState.identity(), entityState.version());
   loaded.add(entityState);
   return entityState;
 }
 @Override
 public void discard() {
   try {
     uow.discard();
   } finally {
     versions.forgetVersions(loaded);
   }
 }
    @Override
    public StateCommitter applyChanges() throws EntityStoreException {
      versions.checkForConcurrentModification(loaded, module, currentTime);

      final StateCommitter committer = uow.applyChanges();

      return new StateCommitter() {
        @Override
        public void commit() {
          committer.commit();
          versions.forgetVersions(loaded);
        }

        @Override
        public void cancel() {
          committer.cancel();
          versions.forgetVersions(loaded);
        }
      };
    }
 @Override
 public EntityState newEntityState(EntityReference anIdentity, EntityDescriptor entityDescriptor)
     throws EntityStoreException {
   return uow.newEntityState(anIdentity, entityDescriptor);
 }
 @Override
 public long currentTime() {
   return uow.currentTime();
 }
 @Override
 public String identity() {
   return uow.identity();
 }