code: private boolean registerListener(String newPath, ArtifactListenerSelector newListener) {
          boolean updatedCoveringPaths = addCoveringPath(newPath);
  
          Collection<ArtifactListenerSelector> listenersForPath = listeners.get(newPath);
          if ( listenersForPath == null ) {
              // Each listeners collection is expected to be small.
              listenersForPath = new LinkedList<ArtifactListenerSelector>();
              listeners.put(newPath, listenersForPath);
          }
          listenersForPath.add(newListener);
  
          return ( updatedCoveringPaths );
      }
docs: Register a listener to a specified path.
  
  Registration has two effects: The listener is put into a table
  which maps the listener to specified path.  The path of the
  listener are added to the covering paths collection, possibly
  causing newly covered paths to be removed from the collection.
  If the new path is already covered, the covering paths
  collection is not changed.
  
  @param newPath The path to which to register the listener.
  @param newListener The listener which is to be registered.
  
  @return True or false telling if the uncovered paths collection
  was updated.