@Override
public synchronized void addEventListener(EventListener listener, int eventTypes, String absPath,
boolean isDeep, String[] uuid, String[] nodeTypeName, boolean noLocal) throws RepositoryException {
boolean includeExternal = !(listener instanceof ExcludeExternal);
String oakPath = namePathMapper.getOakPath(absPath);
FilterProvider filterProvider = new JcrFilterProvider(ntMgr, eventTypes, oakPath, isDeep,
uuid, validateNodeTypeNames(nodeTypeName), !noLocal, includeExternal, permissionProvider);
ChangeProcessor processor = processors.get(listener);
if (processor == null) {
log.info(OBSERVATION, "Registering event listener {} with filter {}", listener, filterProvider);
ListenerTracker tracker = new ListenerTracker(