docs: public void removeConsumerListForExpression(
      String topicExpression,
      boolean selector,
      boolean isWildcarded)
    {
      if (tc.isEntryEnabled()) 
        SibTr.entry(tc, 
                    "removeConsumerListForExpression", 
                    new Object[]{topicExpression, 
                                 new Boolean(selector),
                                 new Boolean(isWildcarded)});
  
      if(selector)
      {
        if(isWildcarded)
        {
          // Selector and wildcarded
          ArrayList consumerList = (ArrayList)_wildcardSelectorSubs.remove(topicExpression);
          if(consumerList == null)
          {
            // Couldn't find the consumerlist. This means we have an internal 
            // inconsistency in our tables, so throw an SIErrorException
            
            // Build the message for the Exception
            if (tc.isEntryEnabled()) 
              SibTr.exit(tc, "removeConsumerListForExpression", topicExpression);
        
            SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0005",
              new Object[] {
                "com.ibm.ws.sib.processor.matching.SubscriptionRegistrar",
                "1:265:1.5",
                topicExpression });  
            throw new SIErrorException(
              nls.getFormattedMessage(
                "INTERNAL_MESSAGING_ERROR_CWSIP0005",
                new Object[] {
                  "com.ibm.ws.sib.processor.matching.SubscriptionRegistrar",
                  "1:272:1.5",
                  topicExpression },
                null));                       
          }                          
          // Test whether table is now empty
          if(_wildcardSelectorSubs.isEmpty())
            _areWildcardSelectorSubs = false;
        }
        else
        {
          // Selector but not wildcarded
          ArrayList consumerList = (ArrayList)_exactSelectorSubs.remove(topicExpression);
          if(consumerList == null)
          {
            // Couldn't find the consumerlist. This means we have an internal 
            // inconsistency in our tables, so throw an SIErrorException
          
            // Build the message for the Exception
            if (tc.isEntryEnabled()) 
              SibTr.exit(tc, "removeConsumerListForExpression", topicExpression);
        
            SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0005",
              new Object[] {
                "com.ibm.ws.sib.processor.matching.SubscriptionRegistrar",
                "1:296:1.5",
                topicExpression });  
            throw new SIErrorException(
              nls.getFormattedMessage(
                "INTERNAL_MESSAGING_ERROR_CWSIP0005",
                new Object[] {
                  "com.ibm.ws.sib.processor.matching.SubscriptionRegistrar",
                  "1:303:1.5",
                  topicExpression },
                null));                       
          }                  
          // Test whether table is now empty
          if(_exactSelectorSubs.isEmpty())
            _areExactSelectorSubs = false;
        }
      }
      else
      {
        // No Selector expression
        if(isWildcarded)
        {
          // No selector and wildcarded
          ArrayList consumerList = (ArrayList)_wildcardNonSelectorSubs.remove(topicExpression);
          if(consumerList == null)
          {
            // Couldn't find the consumerlist. This means we have an internal 
            // inconsistency in our tables, so throw an SIErrorException
          
            // Build the message for the Exception
            if (tc.isEntryEnabled()) 
              SibTr.exit(tc, "removeConsumerListForExpression", topicExpression);
        
            SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0005",
              new Object[] {
                "com.ibm.ws.sib.processor.matching.SubscriptionRegistrar",
                "1:331:1.5",
                topicExpression });  
            throw new SIErrorException(
              nls.getFormattedMessage(
                "INTERNAL_MESSAGING_ERROR_CWSIP0005",
                new Object[] {
                  "com.ibm.ws.sib.processor.matching.SubscriptionRegistrar",
                  "1:338:1.5",
                  topicExpression },
                null));                       
          }                       
          // Test whether table is now empty
          if(_wildcardNonSelectorSubs.isEmpty())
            _areWildcardNonSelectorSubs = false;        
        }
        else
        {
          // No selector and not wildcarded
          ArrayList consumerList = (ArrayList)_exactNonSelectorSubs.remove(topicExpression);
          if(consumerList == null)
          {
            // Couldn't find the consumerlist. This means we have an internal 
            // inconsistency in our tables, so throw an SIErrorException
          
            // Build the message for the Exception
            if (tc.isEntryEnabled()) 
              SibTr.exit(tc, "removeConsumerListForExpression", topicExpression);
        
            SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0005",
              new Object[] {
                "com.ibm.ws.sib.processor.matching.SubscriptionRegistrar",
                "1:362:1.5",
                topicExpression });  
            throw new SIErrorException(
              nls.getFormattedMessage(
                "INTERNAL_MESSAGING_ERROR_CWSIP0005",
                new Object[] {
                  "com.ibm.ws.sib.processor.matching.SubscriptionRegistrar",
                  "1:369:1.5",
                  topicExpression },
                null));                       
          }                            
          // Test whether table is now empty
          if(_exactNonSelectorSubs.isEmpty())
            _areExactNonSelectorSubs = false;        
        }      
      }           
      if (tc.isEntryEnabled()) SibTr.exit(tc, "removeConsumerListForExpression");
    }