docs: public boolean invokeEndpoint(final MessageEndpoint endpoint,
              final SIBusMessage message, final AbstractConsumerSession session,
              final SITransaction transaction, String debugMEName)
              throws ResourceAdapterInternalException {
  
          final String methodName = "invokeEndpoint";
          if (TRACE.isEntryEnabled()) {
              SibTr.entry(this, TRACE, methodName, new Object[] { endpoint,
                      message, session, transaction });
          }
  
          // Check that endpoint is a SibRaMessageListener
          if (!(endpoint instanceof SibRaMessageListener)) {
  
              throw new ResourceAdapterInternalException(NLS.getFormattedMessage(
                      ("UNEXPECTED_ENDPOINT_CWSIV0850"), new Object[] { endpoint,
                              SibRaMessageListener.class }, null));
  
          }
  
          final SibRaMessageListener listener = (SibRaMessageListener) endpoint;
  
          // Wrap session before passing to MDB
          final SibRaAbstractConsumerSession wrappedSession = new SibRaAbstractConsumerSession(
                  session);
  
          boolean success;
          try {
  
              // Deliver message
              listener.onMessage(message, wrappedSession, transaction);
              success = true;
  
          } catch (final Throwable exc) {
  
              // Failed to deliver message
              FFDCFilter.processException(exc, CLASS_NAME + "." + methodName,
                      FFDC_PROBE_1, this);
              if (TRACE.isEventEnabled()) {
                  SibTr.exception(this, TRACE, exc);
              }
              success = false;
              // If the throwable is a ThreadDeath then we want to rethrow the
              // exception to make sure that the thread dies correctly
              if (exc instanceof ThreadDeath)
              {
                // we cast to a threaddeath so we don't have to declare the throwable
                throw (ThreadDeath)exc;
              }
  
          } finally {
  
              // Stop an MDB that has cached the session reusing it
              wrappedSession.outOfScope();
  
          }
  
          if (TRACE.isEntryEnabled()) {
              SibTr.exit(this, TRACE, methodName, Boolean.valueOf(success));
          }
          return success;
  
      }