docs: @Override
      public synchronized boolean registerForNotifications(ArtifactNotification targets, ArtifactListener callbackObject) throws IllegalArgumentException {
          verifyTargets(targets);
          //remember this listener..
          Registration r = new Registration();
          r.listener = new ArtifactListenerSelector(callbackObject);
          //copy the paths, rather than using the user supplied collection, as we don't trust it to remain immutable.
          Collection<String> srcPaths = targets.getPaths();
          r.paths = new ArrayList<String>(srcPaths.size());
  
          for (String path : srcPaths) {
              //we store the paths with any  ! prefixes intact.
              r.paths.add(path);
          }
          listeners.add(r);
  
          //add all the paths requested to the monitored set
          //alternatively here, could use rebuild paths, & clear & rebuild from every listener in listeners.
          pathsBeingMonitored.addAll(r.paths);
  
          reprocessChildrenNotifiers();
  
          processMonitoredPathList();
  
          return true;
      }