docs: public void addApplicationSignatureMatchTarget(
      ApplicationSignature appSignature,
      SIBUuid12 destUuid,
      SIBUuid8 cmUuid,
      SelectionCriteria criteria)
      throws
        SIDiscriminatorSyntaxException,
        SISelectorSyntaxException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(
          tc,
          "addApplicationSignatureMatchTarget",
          new Object[] { appSignature, destUuid, cmUuid, criteria });
  
      // Set the appSignature into a wrapper that extends MatchTarget
      MatchingApplicationSignature mas = new MatchingApplicationSignature(appSignature);
  
      // Form a branch for the MatchSpace from a combination of the destination uuid and
      // the CM uuid
      String mSpacePrefix = destUuid.toString() +
                            MatchSpace.SUBTOPIC_SEPARATOR_CHAR +
                            cmUuid.toString();
  
      // Combine the topicSpace and topic
      String theTopic = null;
      if (criteria != null && criteria.getDiscriminator() != null)
      {
        theTopic = buildAddTopicExpression(mSpacePrefix,
                                           criteria.getDiscriminator());
      }
      else
      {
        theTopic = mSpacePrefix; // destination name
      }
  
      // Put the App Signature into 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;
            }
          }
        }
  
        addTarget(appSignature, // N.B we use the raw appSignature as key
        theTopic,
        selectorString,
        selectorDomain,
        resolver,
        mas,
        null,
        selectorProperties);
      }
      catch (QuerySyntaxException e)
      {
        // No FFDC code needed
  
        SibTr.exception(tc, e);
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          SibTr.exit(tc, "addApplicationSignatureMatchTarget", "SISelectorSyntaxException");
  
        throw new SISelectorSyntaxException(
          nls.getFormattedMessage(
            "INVALID_SELECTOR_ERROR_CWSIP0371",
            new Object[] { criteria },
            null));
      }
      catch (InvalidTopicSyntaxException e)
      {
        // No FFDC code needed
  
        SibTr.exception(tc, e);
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          SibTr.exit(tc, "addApplicationSignatureMatchTarget", "SIDiscriminatorSyntaxException");
        String theTopicString;
        if (criteria != null && criteria.getDiscriminator() != null)
        {
          theTopicString = criteria.getDiscriminator();
        }
        else
        {
          theTopicString = mSpacePrefix; // destination uuid and cmuuid combo
        }
        throw new SIDiscriminatorSyntaxException(
          nls.getFormattedMessage(
            "INVALID_TOPIC_ERROR_CWSIP0372",
            new Object[] { theTopicString },
            null));
      }
      catch (MatchingException e)
      {
        // FFDC
        FFDCFilter.processException(
          e,
          "com.ibm.ws.sib.processor.matching.MessageProcessorMatching.addApplicationSignatureMatchTarget",
          "1:2856:1.117.1.11",
          this);
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          SibTr.exit(tc, "addApplicationSignatureMatchTarget", "SIErrorException");
  
        SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0002",
          new Object[] {
            "com.ibm.ws.sib.processor.matching.MessageProcessorMatching",
            "1:2865:1.117.1.11",
            e });
  
        throw new SIErrorException(
          nls.getFormattedMessage(
            "INTERNAL_MESSAGING_ERROR_CWSIP0002",
            new Object[] {
              "com.ibm.ws.sib.processor.matching.MessageProcessorMatching",
              "1:2873:1.117.1.11",
              e },
            null),
          e);
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "addApplicationSignatureMatchTarget");
    }