docs: private void parseConversationHeader(WsByteBuffer contextBuffer)
     {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "parseConversationHeader", contextBuffer);
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) JFapUtils.debugTraceWsByteBufferInfo(this, tc, contextBuffer, "contextBuffer");
  
        WsByteBuffer parseConversationBuffer = readData(contextBuffer, unparsedConversationHeader);
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) JFapUtils.debugTraceWsByteBufferInfo(this, tc, parseConversationBuffer, "parseConversationBuffer");
  
        if (parseConversationBuffer != null)
        {
           conversationHeaderFields.conversationId = parseConversationBuffer.getShort();
           conversationHeaderFields.requestNumber = parseConversationBuffer.getShort();
           transmissionPayloadRemaining -= JFapChannelConstants.SIZEOF_CONVERSATION_HEADER;
  
           if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "conversationId:"+conversationHeaderFields.conversationId+" requestNumber:"+conversationHeaderFields.requestNumber);
           if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "transmissionLayout:"+transmissionLayout);
  
           if (transmissionLayout == JFapChannelConstants.XMIT_CONVERSATION)
           {
              transmissionPayloadDataLength = primaryHeaderFields.segmentLength -
                 (JFapChannelConstants.SIZEOF_PRIMARY_HEADER + JFapChannelConstants.SIZEOF_CONVERSATION_HEADER);
              state = STATE_PARSE_CONVERSATION_PAYLOAD;
           }
           else if (transmissionLayout == JFapChannelConstants.XMIT_SEGMENT_MIDDLE)
           {
              transmissionPayloadDataLength = primaryHeaderFields.segmentLength -
                 (JFapChannelConstants.SIZEOF_PRIMARY_HEADER + JFapChannelConstants.SIZEOF_CONVERSATION_HEADER);
              state = STATE_PARSE_SEGMENT_MIDDLE_PAYLOAD;
           }
           else if (transmissionLayout == JFapChannelConstants.XMIT_SEGMENT_END)
           {
              transmissionPayloadDataLength = primaryHeaderFields.segmentLength -
                 (JFapChannelConstants.SIZEOF_PRIMARY_HEADER + JFapChannelConstants.SIZEOF_CONVERSATION_HEADER);
  
              state = STATE_PARSE_SEGMENT_END_PAYLOAD;
           }
           else if (transmissionLayout == JFapChannelConstants.XMIT_SEGMENT_START)
           {
              state = STATE_PARSING_SEGMENT_START_HEADER;
           }
           else if (transmissionLayout == JFapChannelConstants.XMIT_PRIMARY_ONLY)
           {
              throwable = new SIErrorException(nls.getFormattedMessage("TRANSPARSER_INTERNAL_SICJ0054", null, "TRANSPARSER_INTERNAL_SICJ0054")); // D226223
              // This FFDC was generated because we entered the method to parse conversation
              // headers when the transmission appears to only have a primary header.
              FFDCFilter.processException(throwable, "com.ibm.ws.sib.jfapchannel.impl.InboundTransmissionParser", JFapChannelConstants.INBOUNDXMITPARSER_PARSECONVHDR_01, getFormattedBytes(contextBuffer));  // D267629
              state = STATE_ERROR;
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "Invalid state detected - Entered parseConversationHeader method when transmission only contained a primary header");
           }
           else if (transmissionLayout == JFapChannelConstants.XMIT_LAYOUT_UNKNOWN)
           {
              throwable = new SIErrorException(nls.getFormattedMessage("TRANSPARSER_INTERNAL_SICJ0054", null, "TRANSPARSER_INTERNAL_SICJ0054")); // D226223
              // This FFDC was generated because we encountered a segment type for which
              // we were unable to determine the layout of the segment.
              FFDCFilter.processException(throwable, "com.ibm.ws.sib.jfapchannel.impl.InboundTransmissionParser", JFapChannelConstants.INBOUNDXMITPARSER_PARSECONVHDR_02, getFormattedBytes(contextBuffer));  // D267629
              state = STATE_ERROR;
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "Invalid state detected - Entered parseConversationHeader method when transmission layout could not be determined");
           }
           else
           {
              throwable = new SIErrorException(nls.getFormattedMessage("TRANSPARSER_INTERNAL_SICJ0054", null, "TRANSPARSER_INTERNAL_SICJ0054")); // D226223
              // This FFDC was generated because the method used to determine transmission
              // layout returned a value that we were not expecting.
              FFDCFilter.processException(throwable, "com.ibm.ws.sib.jfapchannel.impl.InboundTransmissionParser", JFapChannelConstants.INBOUNDXMITPARSER_PARSECONVHDR_03, getFormattedBytes(contextBuffer));  // D267629
              state = STATE_ERROR;
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "Unknown transmission layout detected in parseConversationHeader");
           }
        }
        else
        {
           if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "need more data");
           needMoreData = true;
        }
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "parseConversationHeader");
     }