docs: public void matchNewExactConsumerToMonitors(
      String topicExpression,
      MonitoredConsumer mc)
    throws SIDiscriminatorSyntaxException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          SibTr.entry(
            tc,
            "matchNewExactConsumerToMonitors",
            new Object[] { topicExpression,
                           mc });
      // We'll set any monitors that we find into the following lists which
      // will be added to the consumer itself. This will ease consumer removal
      // processing
      ArrayList exactMonitorList = new ArrayList();
      ArrayList wildcardMonitorList = new ArrayList();
  
      // Iterate through the map of monitors defined on exact topic expressions,
      // Note we can use string matching in this case
      Iterator i = _registeredExactConsumerMonitors.keySet().iterator();
      while (i.hasNext())
      {
        String registeredTopic = (String)i.next();
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
          SibTr.debug(tc, "Found registered topic: " + registeredTopic);
  
        // Process those registered topics that might match by virtue
        // of a common topic stem
        if(topicExpression.equals(registeredTopic))
        {
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
            SibTr.debug(tc, "topics match, Add consumer to list");
  
          addConsumerToMonitorList(registeredTopic,
                                   _registeredExactConsumerMonitors,
                                   mc,
                                   false); // exact
  
          // Finally add reference to the monitor to the list for the new consumer
          exactMonitorList.add(registeredTopic);
        }
      }
  
      // Iterate through the map of monitors defined on wildcard topic expressions
      i = _registeredWildcardConsumerMonitors.keySet().iterator();
      while (i.hasNext())
      {
        String registeredTopic = (String)i.next();
        // Retrieve the non-wildcarded stem
        String registeredTopicStem = _mpm.retrieveNonWildcardStem(registeredTopic);
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
          SibTr.debug(tc, "Found registered topic: " + registeredTopic + "with stem: " + registeredTopicStem);
  
        // Process those registered topics that might match by virtue
        // of a common topic stem
        if(topicExpression.startsWith(registeredTopicStem))
        {
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
            SibTr.debug(tc, "Drive direct evaluation for topic: " + registeredTopic);
  
          if(_mpm.evaluateDiscriminator(topicExpression,registeredTopic))
          {
            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
              SibTr.debug(tc, "Add consumer to list");
  
            addConsumerToMonitorList(registeredTopic,
                                     _registeredWildcardConsumerMonitors,
                                     mc,
                                     true); // wildcarded
  
            // Finally add reference to the monitor to the list for the new consumer
            wildcardMonitorList.add(registeredTopic);
          }
        }
      }
  
      // Finally add lists of references to the monitors into the new consumer
      mc.setMatchingExactMonitorList(exactMonitorList);
      mc.setMatchingWildcardMonitorList(wildcardMonitorList);
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "matchNewExactConsumerToMonitors");
  
    }