docs: public ControllableProxySubscription addPubSubOutputHandlerMatchTarget(
      PubSubOutputHandler handler,
      SIBUuid12 topicSpace,
      String discriminator,
      boolean foreignSecuredProxy,
      String MESubUserId)
      throws
        SIDiscriminatorSyntaxException,
        SISelectorSyntaxException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(
          tc,
          "addPubSubOutputHandlerMatchTarget",
          new Object[] { handler, topicSpace, discriminator, Boolean.valueOf(foreignSecuredProxy), MESubUserId});
  
      // Combine the topicSpace and topic
      String topicSpaceStr = topicSpace.toString();
      String theTopic = buildAddTopicExpression(topicSpaceStr, discriminator);
  
      ControllableProxySubscription key = new ControllableProxySubscription(handler,
                                                                            theTopic,
                                                                            foreignSecuredProxy,
                                                                            MESubUserId);
  
      // Store the CPS in the MatchSpace
      try
      {
        addTarget(key,
        // Use the output handler as key
        theTopic,
        null, // selector string
        null,  // selector domain
        null, // this'll pick up the default resolver
        key,  // defect 240115: Store the  wrappered PSOH
        null,
        null); // selector properties
      }
      catch (QuerySyntaxException e)
      {
        // No FFDC code needed
        SibTr.exception(tc, e);
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          SibTr.exit(tc, "addPubSubOutputHandlerMatchTarget", e);
  
        throw new SISelectorSyntaxException(
          nls.getFormattedMessage(
            "INVALID_SELECTOR_ERROR_CWSIP0371",
            new Object[] { null },
            null));
      }
      catch (InvalidTopicSyntaxException e)
      {
        // No FFDC code needed
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          SibTr.exit(tc, "addPubSubOutputHandlerMatchTarget", e);
  
        throw new SIDiscriminatorSyntaxException(
          nls.getFormattedMessage(
            "INVALID_TOPIC_ERROR_CWSIP0372",
            new Object[] { discriminator },
            null));
      }
      catch (MatchingException e)
      {
        // FFDC
        FFDCFilter.processException(
          e,
          "com.ibm.ws.sib.processor.matching.MessageProcessorMatching.addPubSubOutputHandlerMatchTarget",
          "1:1111:1.117.1.11",
          this);
  
        SibTr.exception(tc, e);
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          SibTr.exit(tc, "addPubSubOutputHandlerMatchTarget", e);
  
        SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0002",
          new Object[] {
            "com.ibm.ws.sib.processor.matching.MessageProcessorMatching",
            "1:1122:1.117.1.11",
            e });
  
        throw new SIErrorException(
          nls.getFormattedMessage(
            "INTERNAL_MESSAGING_ERROR_CWSIP0002",
            new Object[] {
              "com.ibm.ws.sib.processor.matching.MessageProcessorMatching",
              "1:1130:1.117.1.11",
              e },
            null),
          e);
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "addPubSubOutputHandlerMatchTarget", key);
  
      return key;
    }