_safeInvokeSelectorOnObjectWithParameters(EditingContextDidRevertObjectsDelegateSelector, delegate, parameters);
ERXSelectorUtilities.invoke(EditingContextDidRevertObjectsDelegateSelector, delegate, parameters);
    public void revert() {        boolean wasAutoLocked = autoLock("revert");        try {            final Object delegate = delegate();            final boolean delegateImplementsWillRevert =                    delegate != null && EditingContextWillRevertObjectsDelegateSelector.implementedByObject(delegate);            final boolean delegateImplementsDidRevert =                    delegate != null && EditingContextDidRevertObjectsDelegateSelector.implementedByObject(delegate);            final boolean needToCallDelegate = delegateImplementsWillRevert || delegateImplementsDidRevert;            final NSArray insertedObjects = needToCallDelegate ? insertedObjects().immutableClone() : null;            final NSArray updatedObjects = needToCallDelegate ? updatedObjects().immutableClone() : null;            final NSArray deletedObjects = needToCallDelegate ? deletedObjects().immutableClone() : null;            final Object[] parameters = needToCallDelegate ? new Object[] {this, insertedObjects,updatedObjects, deletedObjects} : null;            if( delegateImplementsWillRevert )                _safeInvokeSelectorOnObjectWithParameters(EditingContextWillRevertObjectsDelegateSelector, delegate, parameters);            super.revert();            if ( delegateImplementsDidRevert )                _safeInvokeSelectorOnObjectWithParameters(EditingContextDidRevertObjectsDelegateSelector, delegate, parameters);                    } finally {            autoUnlock(wasAutoLocked);        }    }