docs: private void fireMessageExceptionedEvent(String apiMsgId,
                                               SIMPMessage message,
                                               int exceptionReason)
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(tc,
                          "fireMessageExceptionedEvent",
                          new Object[] { apiMsgId,
                                        message,
                                        Integer.valueOf(exceptionReason) });
  
          JsMessagingEngine me = _messageProcessor.getMessagingEngine();
          RuntimeEventListener listener = _messageProcessor.getRuntimeEventListener();
  
          String systemMessageId = message.getMessage().getSystemMessageId();
  
          // Check that we have a RuntimeEventListener
          if (listener != null)
          {
              // Build the message for the Notification
  
              String nlsMessage =
                              nls_mt.getFormattedMessage(
                                                         "MESSAGE_EXCEPTION_DESTINATIONED_CWSJU0012",
                                                         new Object[] {
                                                                       apiMsgId,
                                                                       systemMessageId,
                                                                       _exceptionDestinationName,
                                                                       Integer.valueOf(exceptionReason),
                                                                       message.getMessage().getExceptionMessage() },
                                                         null);
  
              // Build the properties for the Notification
              Properties props = new Properties();
  
              // Set values for the intended destination
              String intendedDestinationName = "";
              String intendedDestinationUuid = SIBUuid12.toZeroString();
  
              if (_originalDestination != null)
              {
                  intendedDestinationName = _originalDestination.getName();
                  intendedDestinationUuid = _originalDestination.getUuid().toString();
              }
              props.put(SibNotificationConstants.KEY_INTENDED_DESTINATION_NAME,
                        intendedDestinationName);
              props.put(SibNotificationConstants.KEY_INTENDED_DESTINATION_UUID,
                        intendedDestinationUuid);
  
              // Set values for the exception destination
              props.put(SibNotificationConstants.KEY_EXCEPTION_DESTINATION_NAME,
                        _exceptionDestination.getName());
              props.put(SibNotificationConstants.KEY_EXCEPTION_DESTINATION_UUID,
                        _exceptionDestination.getUuid().toString());
  
              props.put(SibNotificationConstants.KEY_SYSTEM_MESSAGE_IDENTIFIER,
                        (systemMessageId == null) ? "" : systemMessageId);
  
              props.put(SibNotificationConstants.KEY_MESSAGE_EXCEPTION_REASON,
                        String.valueOf(exceptionReason));
  
              // Fire the event
              listener.runtimeEventOccurred(me,
                                            SibNotificationConstants.TYPE_SIB_MESSAGE_EXCEPTIONED,
                                            nlsMessage,
                                            props);
          }
          else
          {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  SibTr.debug(tc, "Null RuntimeEventListener, cannot fire event");
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "fireMessageExceptionedEvent");
      }