docs: public void removeConsumer(MonitoredConsumer mc)
    {
      if (tc.isEntryEnabled()) 
        SibTr.entry(tc, 
                    "removeConsumer", 
                    new Object[]{mc});
        
      boolean selector = mc.isSelector();
      boolean isWildcarded = mc.isWildcarded();
      String topic = mc.getTopic();
      ArrayList consumerList = 
        _subscriptionRegistrar.getConsumerListForExpression(topic, selector, isWildcarded);
          
      //TODO: handle empty return
          
      if (tc.isDebugEnabled())
        SibTr.debug(tc, "Found existing entry with list: " + consumerList +
                        ", of size: " + consumerList.size());
          
      // Remove the consumer      
      boolean removed = consumerList.remove(mc);
      if(!removed)
      {
        // Couldn't find the consumer. This means we have an internal 
        // inconsistency in our tables, so throw an SIErrorException
      
        if (tc.isEntryEnabled()) 
          SibTr.exit(tc, "removeConsumer", "SIErrorException");
        
        SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0001",
          new Object[] {
            "com.ibm.ws.sib.processor.matching.ConsumerMonitoring",
            "1:248:1.7"
            });  
          
        throw new SIErrorException(
          nls.getFormattedMessage(
            "INTERNAL_MESSAGING_ERROR_CWSIP0001",
            new Object[] {
              "com.ibm.ws.sib.processor.matching.ConsumerMonitoring",
              "1:256:1.7"
            },
            null));      
      }          
                   
      // Only remove the row in the table from the subscription registrar
      // if this was the last consumer in the list
      if(consumerList.isEmpty())
      {
        _subscriptionRegistrar.removeConsumerListForExpression(topic,selector,isWildcarded);                  
      }
          
      // 1. Need to remove sub references from consumer monitor tables
      // 2. Drive callbacks where appropriate
      ArrayList exactMonitorList = (ArrayList)mc.getMatchingExactMonitorList();
      ArrayList wildcardMonitorList = (ArrayList)mc.getMatchingWildcardMonitorList();
          
      _consumerMonitorRegistrar.
        removeConsumerFromRegisteredMonitors(mc, exactMonitorList, wildcardMonitorList);
            
      if (tc.isEntryEnabled()) SibTr.exit(tc, "removeConsumer"); 
    }