@Override public void commit() { PreCommitEvent preCommitEvent = new PreCommitEvent(this, modifiedInstances, removedInstances); events.publish(PreCommitEvent.class, preCommitEvent); if (preCommitEvent.isCommitPrevented()) return; Set<Entity> committed = performCommit(); events.publish(PostCommitEvent.class, new PostCommitEvent(this, committed)); mergeCommitted(committed); modifiedInstances.clear(); removedInstances.clear(); }