docs: public void addConsumerDispatcherMatchTarget(
      ConsumerDispatcher consumerDispatcher,
      SIBUuid12 topicSpace,
      SelectionCriteria criteria)
      throws
        SIDiscriminatorSyntaxException,
        SISelectorSyntaxException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(
          tc,
          "addConsumerDispatcherMatchTarget",
          new Object[] { consumerDispatcher, topicSpace, criteria });
  
      // Combine the topicSpace and topic
      String topicSpaceStr = topicSpace.toString();
      String theTopic = buildAddTopicExpression(topicSpaceStr,
                                    (criteria == null) ? null : criteria.getDiscriminator());
      // Store the CD in the MatchSpace
      try
      {
        // Set up the other parameters for addTarget
        String selectorString = null;
        SelectorDomain selectorDomain = SelectorDomain.SIMESSAGE;
        Map<String, Object> selectorProperties = null;
        Resolver resolver = null;
        if(criteria != null)
        {
          selectorString = criteria.getSelectorString();
          selectorDomain = criteria.getSelectorDomain();
          // See if these criteria have any selector properties. They might if they are MPSelectionCriteria
          if(criteria instanceof MPSelectionCriteria)
          {
            MPSelectionCriteria mpCriteria = (MPSelectionCriteria)criteria;
            selectorProperties = mpCriteria.getSelectorProperties();
          }
  
          if(selectorString != null &&
             selectorString.trim().length() != 0)
          {
            if(selectorDomain.equals(SelectorDomain.JMS))
            {
              resolver = _jmsResolver;
            }
            else if(selectorDomain.equals(SelectorDomain.SIMESSAGE))
            {
              resolver = _simessageResolver;
            }
            else // In the XPath1.0 case we use the default resolver
            {
              resolver = _defaultResolver;
            }
          }
        }
  
        // Set the CD and selection criteria into a wrapper that extends MatchTarget
        MatchingConsumerDispatcher Matchkey = new MatchingConsumerDispatcher(consumerDispatcher);
        MatchingConsumerDispatcherWithCriteira key = new MatchingConsumerDispatcherWithCriteira (consumerDispatcher,criteria);
  
        addTarget(key,    // Use the CD and selection criteria as key
                  theTopic,
                  selectorString,
                  selectorDomain,
                  resolver, // null will pick up the default resolver
                  Matchkey, // Use the wrapped cd as the Match key
                  null,
                  selectorProperties);
  
        // Now that this subscription is in the MatchSpace, let the subscription know.
        consumerDispatcher.setIsInMatchSpace(true);
      }
      catch (QuerySyntaxException e)
      {
        // No FFDC code needed
        SibTr.exception(tc, e);
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          SibTr.exit(tc, "addConsumerDispatcherMatchTarget", "SISelectorSyntaxException");
  
        throw new SISelectorSyntaxException(
          nls.getFormattedMessage(
            "INVALID_SELECTOR_ERROR_CWSIP0371",
            new Object[] { criteria },
            null));
      }
      catch (InvalidTopicSyntaxException e)
      {
        // No FFDC code needed
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          SibTr.exit(tc, "addConsumerDispatcherMatchTarget", e);
  
        throw new SIDiscriminatorSyntaxException(
          nls.getFormattedMessage(
            "INVALID_TOPIC_ERROR_CWSIP0372",
            new Object[] { (criteria == null) ? null : criteria.getDiscriminator() },
            null));
      }
      catch (MatchingException e)
      {
        // FFDC
        FFDCFilter.processException(
          e,
          "com.ibm.ws.sib.processor.matching.MessageProcessorMatching.addConsumerDispatcherMatchTarget",
          "1:981:1.117.1.11",
          this);
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          SibTr.exit(tc, "addConsumerDispatcherMatchTarget", "SIErrorException");
  
        SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0002",
          new Object[] {
            "com.ibm.ws.sib.processor.matching.MessageProcessorMatching",
            "1:990:1.117.1.11",
            e });
  
        throw new SIErrorException(
          nls.getFormattedMessage(
            "INTERNAL_MESSAGING_ERROR_CWSIP0002",
            new Object[] {
              "com.ibm.ws.sib.processor.matching.MessageProcessorMatching",
              "1:998:1.117.1.11",
              e },
            null),
          e);
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "addConsumerDispatcherMatchTarget");
    }