code: function addUnderlyingListener( fullEventName, predicateEvent, compiledJsonPath ){
     
        var emitMatch = oboeBus(fullEventName).emit;
     
        predicateEvent.on( function (ascent) {
  
           var maybeMatchingMapping = compiledJsonPath(ascent);
  
           /* Possible values for maybeMatchingMapping are now:
  
            false: 
            we did not match 
  
            an object/array/string/number/null: 
            we matched and have the node that matched.
            Because nulls are valid json values this can be null.
  
            undefined:
            we matched but don't have the matching node yet.
            ie, we know there is an upcoming node that matches but we 
            can't say anything else about it. 
            */
           if (maybeMatchingMapping !== false) {
  
              emitMatchingNode(
                 emitMatch, 
                 nodeOf(maybeMatchingMapping), 
                 ascent
              );
           }
        }, fullEventName);
       
        oboeBus('removeListener').on( function(removedEventName){
  
           // if the fully qualified match event listener is later removed, clean up 
           // by removing the underlying listener if it was the last using that pattern:
        
           if( removedEventName == fullEventName ) {
           
              if( !oboeBus(removedEventName).listeners(  )) {
                 predicateEvent.un( fullEventName );
              }
           }
        });   
     }
docs: /*
  Set up the catching of events such as NODE_CLOSED and NODE_OPENED and, if
  matching the specified pattern, propagate to pattern-match events such as
  oboeBus('node:!')
  
  
  
  @param {Function} predicateEvent
  either oboeBus(NODE_CLOSED) or oboeBus(NODE_OPENED).
  @param {Function} compiledJsonPath