docs: private void rcvMFPRequestSchema(CommsByteBuffer request, Conversation conversation, int requestNumber,
                                       int segmentId, boolean allocatedFromBufferPool,
                                       boolean partOfExchange) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "rcvMFPRequestSchema",
                          new Object[]
                          {
                           request,
                           conversation,
                           Integer.valueOf(requestNumber),
                           Boolean.valueOf(allocatedFromBufferPool),
                           Boolean.valueOf(partOfExchange)
                          });
  
          CompHandshake ch = null;
          ConversationState convState = (ConversationState) conversation.getAttachment();
          CommsConnection cc = convState.getCommsConnection();
  
          try {
              // Get MFP Singleton
              ch = (CompHandshake) CompHandshakeFactory.getInstance();
  
              byte[] mfpRequestData = request.getRemaining();
  
              // Get hold of product version
              HandshakeProperties handshakeGroup = conversation.getHandshakeProperties();
              int productVersion = handshakeGroup.getMajorVersion();
  
              // Give MFP received Schema
              byte[] mfpReplyData = ch.compRequest(cc, productVersion, segmentId, mfpRequestData);
  
              if (mfpReplyData == null) {
                  // Oops something went wrong in MFP
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      SibTr.debug(this, tc, "MFP returned null");
  
                  SIErrorException e = new SIErrorException(
                                  nls.getFormattedMessage("MFP_SCHEMA_REQUEST_FAILED_SICO2056", null, null) // D256974
                  );
  
                  FFDCFilter.processException(e, CLASS_NAME + ".rcvMFPRequestSchema",
                                              CommsConstants.SERVERTRANSPORTRECEIVELISTENER_MFPREQSCH_01,
                                              this);
  
                  StaticCATHelper.sendExceptionToClient(e, null, conversation, requestNumber);
              } else {
                  // Otherwise send the data back for MFP
                  CommsByteBuffer reply = poolManager.allocate();
                  reply.wrap(mfpReplyData);
  
                  try {
                      conversation.send(reply,
                                        JFapChannelConstants.SEG_REQUEST_SCHEMA_R,
                                        requestNumber,
                                        JFapChannelConstants.PRIORITY_HIGHEST,
                                        true,
                                        ThrottlingPolicy.BLOCK_THREAD,
                                        null);
                  } catch (SIException e) {
                      FFDCFilter.processException(e,
                                                  CLASS_NAME + ".rcvMFPRequestSchema",
                                                  CommsConstants.SERVERTRANSPORTRECEIVELISTENER_MFPREQSCH_02,
                                                  this);
  
                      SibTr.error(tc, "COMMUNICATION_ERROR_SICO2019", e);
                  }
              }
          } catch (Exception e) {
              FFDCFilter.processException(e, CLASS_NAME + ".rcvMFPRequestSchema",
                                          CommsConstants.SERVERTRANSPORTRECEIVELISTENER_MFPREQSCH_03,
                                          this);
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  SibTr.debug(this, tc, "MFP unable to create CompHandshake Singleton", e);
          }
  
          request.release(allocatedFromBufferPool);
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "rcvMFPRequestSchema");
      }