docs: @Override
      public ProducerSession createSystemProducerSession(SIDestinationAddress destAddress,
                                                         String discriminator,
                                                         DestinationType destFilter,
                                                         OrderingContext context,
                                                         String alternateUser,
                                                         boolean clearPubSubFingerprints)
                      throws SIConnectionUnavailableException, SIConnectionDroppedException,
                      SIResourceException, SIConnectionLostException, SILimitExceededException,
                      SIErrorException,
                      SINotAuthorizedException,
                      SINotPossibleInCurrentConfigurationException,
                      SIIncorrectCallException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(tc, "createSystemProducerSession",
                          new Object[] { destAddress, discriminator, destFilter, context, alternateUser, clearPubSubFingerprints });
  
          // See if this connection has been closed
          checkNotClosed();
  
          checkProducerSessionNullParameters(destAddress);
  
          if (!destAddress.getDestinationName().startsWith(SIMPConstants.SYSTEM_DESTINATION_PREFIX))
          {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(tc, "createSystemProducerSession", "SIIncorrectCallException");
              throw new SIIncorrectCallException(
                              nls.getFormattedMessage(
                                                      "SYSTEM_DESTINATION_USAGE_ERROR_CWSIP0024",
                                                      new Object[] { destAddress.getDestinationName(),
                                                                    _messageProcessor.getMessagingEngineName() },
                                                      null));
          }
  
          SecurityContext secContext = null;
          // If security is enabled then we need to set up a security context
          if (_isBusSecure)
          {
              // Feature 219101: Add the alternate user string to the security context
              secContext = new SecurityContext(this._subject,
                              alternateUser,
                              null,
                              _messageProcessor.getAuthorisationUtils());
          }
  
          //create a producer session
          ProducerSession session = null;
          try
          {
              session =
                              internalCreateProducerSession(
                                                            destAddress,
                                                            destFilter,
                                                            true,
                                                            secContext,
                                                            false, // keepSecurityUserid
                                                            false, // fixedQueuePoint
                                                            true, // preferLocal
                                                            clearPubSubFingerprints,
                                                            null);
          } catch (SITemporaryDestinationNotFoundException e)
          {
              // Temporary destination not found should not happen for a System destination
              // FFDC
              FFDCFilter.processException(
                                          e,
                                          "com.ibm.ws.sib.processor.impl.ConnectionImpl.createSystemProducerSession",
                                          "1:4590:1.347.1.25",
                                          this);
  
              SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0002",
                          new Object[] {
                                        "com.ibm.ws.sib.processor.impl.ConnectionImpl",
                                        "1:4596:1.347.1.25",
                                        e });
  
              SibTr.exception(tc, e);
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(tc, "createSystemProducerSession", "SIErrorException");
  
              throw new SIErrorException(nls.getFormattedMessage(
                                                                 "INTERNAL_MESSAGING_ERROR_CWSIP0002",
                                                                 new Object[] { "ConnectionImpl",
                                                                               "1:4607:1.347.1.25",
                                                                               e },
                                                                 null),
                              e);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "createSystemProducerSession", session);
          return session;
      }