docs: @Deprecated
      private void checkProducerAuthority(SIDestinationAddress destAddr,
                                          DestinationHandler destination,
                                          String destinationName,
                                          String busName,
                                          SecurityContext secContext,
                                          boolean system)
                      throws SIDiscriminatorSyntaxException, SINotAuthorizedException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(
                          tc,
                          "checkProducerAuthority",
                          new Object[] { destAddr,
                                        destination,
                                        destinationName,
                                        busName,
                                        secContext,
                                        Boolean.valueOf(system) });
  
          // Check authority to produce to destination unless we're sending to a system
          // queue in the local bus.
          if (!system || (destAddr.getBusName() == null) || destAddr.getBusName().equals(_messageProcessor.getMessagingEngineBus()))
          {
              // Perform the alternate user check first. If an alternateUser was set then we 
              // need to determine whether the connected subject has the authority to perform
              // alternate user checks.
  
              if (secContext.isAlternateUserBased())
              {
                  if (!destination.checkDestinationAccess(secContext,
                                                          OperationType.IDENTITY_ADOPTER))
                  {
                      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                          SibTr.exit(tc, "checkProducerAuthority", "not authorized to perform alternate user checks on this destination");
  
                      // Get the username
                      String userName = secContext.getUserName(true);
                      // Build the message for the Exception and the Notification
                      String nlsMessage =
                                      nls_cwsik.getFormattedMessage("DELIVERY_ERROR_SIRC_18", // USER_NOT_AUTH_SEND_ERROR_CWSIP0306
                                                                    new Object[] { destinationName,
                                                                                  userName },
                                                                    null);
  
                      // Fire a Notification if Eventing is enabled
                      _accessChecker.
                                      fireDestinationAccessNotAuthorizedEvent(destinationName,
                                                                              userName,
                                                                              OperationType.IDENTITY_ADOPTER,
                                                                              nlsMessage);
  
                      // Thrown if user denied access to destination
                      SIMPNotAuthorizedException e = new SIMPNotAuthorizedException(nlsMessage);
  
                      e.setExceptionReason(SIRCConstants.SIRC0018_USER_NOT_AUTH_SEND_ERROR);
                      e.setExceptionInserts(new String[] { destinationName, secContext.getUserName(true) });
  
                      throw e;
                  }
              }
  
              if (!destAddr.isTemporary()) // Non-temorary destination access check
              {
                  if (!destination.checkDestinationAccess(secContext,
                                                          OperationType.SEND))
                  {
                      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                          SibTr.exit(tc, "checkProducerAuthority", "not authorized to produce to this destination");
  
                      // Get the username
                      String userName = secContext.getUserName(false);
                      // Build the message for the Exception and the Notification
                      String nlsMessage =
                                      nls_cwsik.getFormattedMessage("DELIVERY_ERROR_SIRC_18", // USER_NOT_AUTH_SEND_ERROR_CWSIP0306
                                                                    new Object[] { destinationName,
                                                                                  userName },
                                                                    null);
  
                      // Fire a Notification if Eventing is enabled
                      _accessChecker.
                                      fireDestinationAccessNotAuthorizedEvent(destinationName,
                                                                              userName,
                                                                              OperationType.SEND,
                                                                              nlsMessage);
  
                      // Thrown if user denied access to destination
                      SIMPNotAuthorizedException e = new SIMPNotAuthorizedException(nlsMessage);
  
                      e.setExceptionReason(SIRCConstants.SIRC0018_USER_NOT_AUTH_SEND_ERROR);
                      e.setExceptionInserts(new String[] { destinationName, secContext.getUserName(false) });
  
                      throw e;
                  }
              }
              else // Check authority to produce to temp topic
              {
                  // get the temp prefix from the destination name
                  String destinationPrefix = SIMPUtils.parseTempPrefix(destinationName);
                  if (!_accessChecker.checkTemporaryDestinationAccess(secContext,
                                                                      destinationName, // name of destination  
                                                                      (destinationPrefix == null) ? "" : destinationPrefix, // sib.security wants empty string if prefix is null
                                                                      OperationType.SEND))
                  {
                      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                          SibTr.exit(tc, "checkProducerAuthority", "not authorized to produce to temporary destination");
  
                      // Get the username
                      String userName = secContext.getUserName(false);
                      // Build the message for the Exception and the Notification
                      String nlsMessage =
                                      nls_cwsik.getFormattedMessage("DELIVERY_ERROR_SIRC_19", // USER_NOT_AUTH_SEND_ERROR_CWSIP0306
                                                                    new Object[] { destinationPrefix,
                                                                                  userName },
                                                                    null);
  
                      // Fire a Notification if Eventing is enabled
                      _accessChecker.
                                      fireDestinationAccessNotAuthorizedEvent(destinationPrefix,
                                                                              userName,
                                                                              OperationType.SEND,
                                                                              nlsMessage);
  
                      // Thrown if user denied access to destination
                      SIMPNotAuthorizedException e = new SIMPNotAuthorizedException(nlsMessage);
  
                      e.setExceptionReason(SIRCConstants.SIRC0019_USER_NOT_AUTH_SEND_ERROR);
                      e.setExceptionInserts(new String[] { destinationPrefix, secContext.getUserName(false) });
  
                      throw e;
                  }
              }
  
              // Check authority to produce to discriminator
              if (secContext.testDiscriminatorAtCreate())
              {
                  if (!destination.checkDiscriminatorAccess(secContext,
                                                            OperationType.SEND))
                  {
                      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                          SibTr.exit(tc, "checkProducerAuthority", "not authorized to produce to this destination's discriminator");
                      // Write an audit record if access is denied
                      SibTr.audit(tc, nls_cwsik.getFormattedMessage(
                                                                    "DELIVERY_ERROR_SIRC_20", // USER_NOT_AUTH_SEND_ERROR_CWSIP0308
                                                                    new Object[] { destination.getName(),
                                                                                  secContext.getDiscriminator(),
                                                                                  secContext.getUserName(false) },
                                                                    null));
  
                      // Thrown if user denied access to destination
                      SIMPNotAuthorizedException e = new SIMPNotAuthorizedException(
                                      nls_cwsik.getFormattedMessage(
                                                                    "DELIVERY_ERROR_SIRC_20", // USER_NOT_AUTH_SEND_ERROR_CWSIP0308
                                                                    new Object[] { destination.getName(),
                                                                                  secContext.getDiscriminator(),
                                                                                  secContext.getUserName(false) },
                                                                    null));
  
                      e.setExceptionReason(SIRCConstants.SIRC0020_USER_NOT_AUTH_SEND_ERROR);
                      e.setExceptionInserts(new String[] { destination.getName(),
                                                          secContext.getDiscriminator(),
                                                          secContext.getUserName(false) });
                      throw e;
                  }
              }
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "checkProducerAuthority");
      }