docs: public void stop(int requestNumber, SendListener sendListener)
     {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "stop",
                                             new Object[]{requestNumber, sendListener});
  
        try
        {
           getConsumerSession().stop();
           started = false;
  
           // The send listener is passed into the send() call so that we can be notified
           // when the data leaves the box
           try
           {
              getConversation().send(poolManager.allocate(),
                                     JFapChannelConstants.SEG_STOP_SESS_R,
                                     requestNumber,
                                     getLowestPriority(),
                                     true,
                                     ThrottlingPolicy.BLOCK_THREAD,
                                     sendListener);
           }
           catch (SIException e)
           {            
              FFDCFilter.processException(e,
                                          CLASS_NAME + ".stop",
                                          CommsConstants.CATCONSUMER_STOP_02,
                                          this);
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, e.getMessage(), e);
  
              SibTr.error(tc, "COMMUNICATION_ERROR_SICO2013", e);
  
              // in send() there is at least one example where a sub class of SIException is thrown
              // and errorOccurred() is not called on the listener.  So as a catch all we will do it
              // here safe in the knowledge that we can't do it too many times now.
              
              // if e is an SIConnectionLostException then lets pass it in to errorOccurred(),
              // otherwise null
              SIConnectionLostException cle = (e instanceof SIConnectionLostException) ? 
                                                  (SIConnectionLostException)e : null;
              
              sendListener.errorOccurred(cle, getConversation());
           }
        }
        catch (SIException e)
        {
           //No FFDC code needed
           //Only FFDC if we haven't received a meTerminated event.
           if(!((ConversationState)getConversation().getAttachment()).hasMETerminated())
           {
              FFDCFilter.processException(e,
                                          CLASS_NAME + ".stop",
                                          CommsConstants.CATCONSUMER_STOP_01,
                                          this);
           }
  
           if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(tc, e.getMessage(), e);
  
           StaticCATHelper.sendExceptionToClient(e,
                                                 CommsConstants.CATCONSUMER_STOP_01,
                                                 getConversation(), requestNumber);
  
           // Also notify the send listener
           sendListener.errorOccurred(null, getConversation());
        }
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "stop");
     }