docs: @Override
      public OutputHandler choosePtoPOutputHandler(SIBUuid8 fixedMEUuid,
                                                   SIBUuid8 preferredMEUuid,
                                                   boolean localMessage,
                                                   boolean forcePut,
                                                   HashSet<SIBUuid8> scopedMEs)
                      throws
                      SIRollbackException,
                      SIConnectionLostException,
                      SIResourceException,
                      SIErrorException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(tc, "choosePtoPOutputHandler", new Object[] { fixedMEUuid,
                                                                       preferredMEUuid,
                                                                       localMessage,
                                                                       forcePut,
                                                                       scopedMEs });
  
          OutputHandler result = null;
          boolean error = false;
  
          // We're an alias so we should never be called with a scoped ME set
          if (scopedMEs != null)
          {
              SIMPErrorException e = new SIMPErrorException("Alias called with scoped ME set");
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              {
                  SibTr.exception(tc, e);
              }
  
              e.setExceptionReason(SIRCConstants.SIRC0901_INTERNAL_MESSAGING_ERROR);
              e.setExceptionInserts(new String[] { "com.ibm.ws.sib.processor.impl.ProducerSessionImpl.handleMessage",
                                                  "1:750:1.71.2.6",
                                                  SIMPUtils.getStackTrace(e) });
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(tc, "choosePtoPOutputHandlers", e);
              throw e;
          }
  
          // Pull out any scoped ME set that we have configured
          SIBUuid8 singleScopedME = null;
          HashSet<SIBUuid8> definedScopedMEs = null;
  
          // If this is an alias that's scoped the message points of the target destination
          // then we need to pass these onto the target.
          if (_hasScopedMessagePoints)
          {
  
              if (_singleScopedQueuePointME != null)
                  singleScopedME = _singleScopedQueuePointME;
              else
                  definedScopedMEs = _scopedQueuePointMEs;
  
              // If the caller has fixed an ME, first check it's in our set
              if (fixedMEUuid != null)
              {
                  if ((singleScopedME != null) && !fixedMEUuid.equals(singleScopedME))
                      error = true;
                  else if ((definedScopedMEs != null) && !definedScopedMEs.contains(fixedMEUuid))
                      error = true;
              }
  
              // If we have a single ME scoped by this alias we may as pass it to the target as
              // a fixed ME (which it must match as we've already checked that) to save
              // having to parse a HashSet everywhere for no need.
              if (singleScopedME != null)
                  fixedMEUuid = singleScopedME;
          }
  
          // Look to the resolved destination to choose an output handler as the
          // alias destination doesnt store any messages
          if (!error)
              result = _targetDestinationHandler.choosePtoPOutputHandler(fixedMEUuid,
                                                                         preferredMEUuid,
                                                                         localMessage,
                                                                         forcePut,
                                                                         definedScopedMEs);
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "choosePtoPOutputHandler", result);
  
          return result;
      }