docs: private void evaluateCandidateExpression(String topicExpression,
                                            Map subscriptions,
                                            String topicStem,
                                            Set consumerSet)
    throws SIDiscriminatorSyntaxException                                      
    {
      if (tc.isEntryEnabled())
          SibTr.entry(
            tc,
            "evaluateCandidateExpression",
            new Object[] { topicExpression, topicStem}); 
  
      // Iterate through the map
      Iterator i = subscriptions.keySet().iterator();
      while (i.hasNext())
      {
        String consumerTopic = (String)i.next();     
        
        if (tc.isDebugEnabled()) 
          SibTr.debug(tc, "Found consumer topic: " + consumerTopic);
          
        // Test candidates
        if(consumerTopic.startsWith(topicStem))
        {
          if (tc.isDebugEnabled()) 
            SibTr.debug(tc, "Drive direct evaluation for topic: " + consumerTopic);
          
          if(_mpm.evaluateDiscriminator(consumerTopic,topicExpression))
          {
            ArrayList consumerList = (ArrayList)subscriptions.get(consumerTopic);
            if (tc.isDebugEnabled())
              SibTr.debug(tc, "Add members of list to set");
            consumerSet.addAll(consumerList); 
          }    
        }
      }                                 
      
      if (tc.isEntryEnabled())
        SibTr.exit(tc, "evaluateCandidateExpression");
    }