docs: public void consumeMessages(LockedMessageEnumeration vEnum) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "consumeMessages", vEnum);
  
          if (mainConsumer.getConversation().getConnectionReference().isClosed()) {
              // stop consumer to avoid infinite loop     
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  SibTr.debug(this, tc, "The connection is closed so we shouldn't consume anymore messages. Consumer Session should be closed soon");
              stopConsumer();
          } else {
              String xctErrStr = null;
  
              try {
                  // Get the next message in the vEnum
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      SibTr.debug(this, tc, "Getting next locked message");
  
                  SIBusMessage sibMessage = vEnum.nextLocked(); // d172528
  
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      SibTr.debug(this, tc, "Received message", sibMessage);
  
                  // Send the message
                  int msgLen = consumerSession.sendMessage(sibMessage); // d172528    // D221806
  
                  // If the messages are unrecoverable then we can optimise this by deleting
                  // the message now
                  if (!CommsUtils.isRecoverable(sibMessage, consumerSession.getUnrecoverableReliability())) {
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                          SibTr.debug(this, tc, "Deleting the message");
                      vEnum.deleteCurrent(null);
                  }
  
                  consumerSession.setLowestPriority(JFapChannelConstants.getJFAPPriority(sibMessage.getPriority())); // d172528
  
                  // Start D221806
                  // Ensure we take a lock on the consumer session so that the request for more messages
                  // doesn't corrupt the counters.
                  synchronized (consumerSession) {
                      int oldSentBytes = consumerSession.getSentBytes();
                      int newSentBytes = oldSentBytes + msgLen;
                      consumerSession.setSentBytes(newSentBytes);
  
                      if (msgLen == 0 || newSentBytes >= consumerSession.getRequestedBytes()) {
                          // in addition to the pacing control, we must avoid an infinite loop
                          // attempting to send messages that don't get through.  If msgLen
                          // is 0 then no message was sent, and we must stop the consumer
                          // and crucially, give up the asynchconsumerbusylock so the consumer
                          // can be closed if need be.
                          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                              SibTr.debug(this, tc, "Stopping consumer session (sent bytes >= requested bytes || msgLen = 0)");
                          stopConsumer();
                      }
                  }
                  // End D221806
              }
              // start d172528
              catch (Throwable e) {
                  //No FFDC code needed
                  //Only FFDC if we haven't received a meTerminated event OR if e isn't a SIException
                  final ConversationState convState = (ConversationState) consumerSession.getConversation().getAttachment();
  
                  if (!(e instanceof SIException) || !convState.hasMETerminated()) {
                      FFDCFilter.processException(e,
                                                  CLASS_NAME + ".consumeMessages",
                                                  CommsConstants.CATASYNCHRHREADER_CONSUME_MSGS_01,
                                                  this);
                  }
  
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      SibTr.debug(tc, e.getMessage(), e);
  
                  StaticCATHelper.sendAsyncExceptionToClient(e,
                                                             CommsConstants.CATASYNCHRHREADER_CONSUME_MSGS_01, // d186970
                                                             consumerSession.getClientSessionId(),
                                                             consumerSession.getConversation(), 0);
              } // end d172528
  
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "consumeMessages");
      }