docs: public void addConsumer(
      Object key,
      String topic,
      String selectorString,
      MatchTarget target,
      boolean isWildcarded)
    throws SIDiscriminatorSyntaxException                                         
    {
      if (tc.isEntryEnabled()) 
        SibTr.entry(tc, 
                    "addConsumer", 
                    new Object[]{key, 
                                 topic, 
                                 selectorString, 
                                 target,
                                 new Boolean(isWildcarded)});
  
      boolean selector = false;
      MonitoredConsumer mc = (MonitoredConsumer)target;
      // Is there a selector expression
      if (selectorString != null && selectorString.trim().length() != 0)
      {
        selector = true;
      }
      
      // Has a consumer already registered on this topicexpression? 
      //
      // If they have then, we can use the matching monitor lists in the existing consumer
      // to short circuit the monitor matching process.
      //
      // Note that in this case we are agnostic about selectors.....but need to 
      // make sure that the SubscriptionRegistrar adds the consumer in the 
      // correct place
      if(selector)
      {
        // This consumer has a selector, see if there is an existing subscription
        // registrar entry
        if(_subscriptionRegistrar.isKnownSelectorExpression(topic, isWildcarded))
        {
          // Found existing entry in selector table add this consumer to
          // that entry        
          addConsumerForKnownTopicExpr(topic, selector, isWildcarded, mc, true);        
        }
        else
        {
          // See if theres a corresponding non-selector entry
          if(_subscriptionRegistrar.isKnownNonSelectorExpression(topic, isWildcarded))
          {
            // Found existing entry in non-selector table, add a new row in the 
            // subscriptionRegistrar's selector table
            _subscriptionRegistrar.addNewConsumerForExpression(topic,mc,selector, isWildcarded);
            addConsumerForKnownTopicExpr(topic, selector, isWildcarded, mc, false);             
          }
          else
          {
            // An Entirely new expression, we'll have to do the matching
            // Add a new row in the table of subscriptions        
            _subscriptionRegistrar.addNewConsumerForExpression(topic,mc,selector, isWildcarded);          
            addConsumerForNewTopicExpr(topic, isWildcarded, mc);                  
          }
        }
      }
      else
      {
        // This consumer has no selector, see if there is an existing subscription
        // registrar entry
        if(_subscriptionRegistrar.isKnownNonSelectorExpression(topic, isWildcarded))
        {
          // Found existing entry in non-selector table add this consumer to
          // that entry        
          addConsumerForKnownTopicExpr(topic, selector, isWildcarded, mc, true);        
        }
        else
        {
          // See if theres a corresponding selector entry
          if(_subscriptionRegistrar.isKnownSelectorExpression(topic, isWildcarded))
          {
            // Found existing entry in selector table, add a new row in the 
            // subscriptionRegistrar's non-selector table
            _subscriptionRegistrar.addNewConsumerForExpression(topic,mc,selector, isWildcarded);
            addConsumerForKnownTopicExpr(topic, selector, isWildcarded, mc, false);             
          }
          else
          {
            // An Entirely new expression, we'll have to do the matching
            // Add a new row in the table of subscriptions        
            _subscriptionRegistrar.addNewConsumerForExpression(topic,mc,selector, isWildcarded);          
            addConsumerForNewTopicExpr(topic, isWildcarded, mc);                  
          }
        }      
      }
  
      // Set info into the Target itself
      if(selector)
        mc.setSelector();
      if(isWildcarded)
        mc.setWildcarded();
      mc.setTopic(topic);     
   
      if (tc.isEntryEnabled()) SibTr.exit(tc, "addConsumer");
    }