docs: @Override
      public void readSet(int requestNumber, SIMessageHandle[] msgHandles) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "readSet",
                                             new Object[] { requestNumber, msgHandles });
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
              SibTr.debug(this, tc, "Request to read " + msgHandles.length +
                                                       " message(s)");
  
          final ConversationState convState = (ConversationState) getConversation().getAttachment();
  
          try {
              SIBusMessage[] messages = bifSession.readSet(msgHandles);
  
              // Add the number of items first
              CommsServerByteBuffer buff = poolManager.allocate();
              buff.putInt(messages.length);
  
              for (int x = 0; x < messages.length; x++) {
                  buff.putMessage((JsMessage) messages[x],
                                  convState.getCommsConnection(),
                                  getConversation());
              }
  
              try {
                  getConversation().send(buff,
                                         JFapChannelConstants.SEG_READ_SET_R,
                                         requestNumber,
                                         JFapChannelConstants.PRIORITY_MEDIUM,
                                         true,
                                         ThrottlingPolicy.BLOCK_THREAD,
                                         null);
              } catch (SIException e) {
                  FFDCFilter.processException(e,
                                              CLASS_NAME + ".readSet",
                                              CommsConstants.CATBIFCONSUMER_READSET_01,
                                              this);
  
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      SibTr.debug(this, tc, e.getMessage(), e);
  
                  SibTr.error(tc, "COMMUNICATION_ERROR_SICO2033", e);
              }
          } catch (Exception e) {
              //No FFDC code needed
              //Only FFDC if we haven't received a meTerminated event OR if this Exception isn't a SIException.
              if (!(e instanceof SIException) || !convState.hasMETerminated()) {
                  FFDCFilter.processException(e,
                                              CLASS_NAME + ".readSet",
                                              CommsConstants.CATBIFCONSUMER_READSET_02,
                                              this);
              }
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  SibTr.debug(this, tc, e.getMessage(), e);
  
              StaticCATHelper.sendExceptionToClient(e,
                                                    CommsConstants.CATBIFCONSUMER_READSET_02,
                                                    getConversation(), requestNumber);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "readSet");
      }