@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);
        }
      };
    }