docs: public void requestMsgs(int requestNumber, int receivedBytes, int reqBytes)
     {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "requestMsgs",
                                                                                     new Object[]
                                                                                     {
                                                                                        ""+requestNumber,
                                                                                        ""+receivedBytes,
                                                                                        ""+reqBytes
                                                                                     });
  
        try
        {
           // We need to lock down the session to prevent the async consumer updating and corrupting
           // the counters, and / or stopping the session
           synchronized (this)
           {
              // Update the counters
              setSentBytes(getSentBytes() - receivedBytes);
              setRequestedBytes(reqBytes);
  
              int sent = getSentBytes();
              if (sent < reqBytes)
              {
                 if (!started)
                 {
                    if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                       SibTr.debug(this, tc, "Starting the session (sentBytes < requestedBytes && !started)");
                    getConsumerSession().start(false);
                    started = true;
                 }
                 else
                 {
                    if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "Already started");
                 }
              }
              if (sent >= reqBytes)
              {
                 if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                    SibTr.debug(this, tc, "Stopping the session (sentBytes >= requestedBytes)");
                 getConsumerSession().stop();
                 started = false;
              }
           }
        }
        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 + ".requestMsgs",
                                          CommsConstants.CATPROXYCONSUMER_REQUEST_MSGS_01,
                                          this);
           }
  
           if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, e.getMessage(), e);
  
           StaticCATHelper.sendAsyncExceptionToClient(e,
                                                      CommsConstants.CATPROXYCONSUMER_REQUEST_MSGS_01,  // d186970
                                                      getClientSessionId(), getConversation(), 0);
        }
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "requestMsgs");
     }