docs: public ConversationReceiveListener dataReceived(WsByteBuffer data, int segmentType,
                                                      int requestNumber, int priority,
                                                      boolean allocatedFromBufferPool,
                                                      boolean partOfExchange, // f181007
                                                      Conversation conversation) {
          if (tc.isEntryEnabled())
              SibTr.entry(tc, "dataReceived");
  
          ConversationReceiveListener listener = null; // F193735.3
  
          int connectionType = -1;
          ServerLinkLevelState lls = null;
  
          if (tc.isDebugEnabled()) {
              String LF = System.getProperty("line.separator");
              String debugInfo = LF + LF + "-------------------------------------------------------" + LF;
  
              debugInfo += " Segment type  : " + JFapChannelConstants.getSegmentName(segmentType) +
                                          " - " + segmentType +
                                          " (0x" + Integer.toHexString(segmentType) + ")" + LF;
              debugInfo += " Request number: " + requestNumber + LF;
              debugInfo += " Priority      : " + priority + LF;
              debugInfo += " Exchange?     : " + partOfExchange + LF;
              debugInfo += " From pool?    : " + allocatedFromBufferPool + LF;
              debugInfo += " Conversation  : " + conversation + LF;
  
              debugInfo += "-------------------------------------------------------" + LF;
  
              SibTr.debug(this, tc, debugInfo);
              SibTr.debug(this, tc, conversation.getFullSummary());
          }
  
          // If no listener has yet been associated with this conversation, determine
          // the appropriate one to use based on the first byte of the handshake data.
          // SEG_HANDSHAKE is expected at this point.
          if (segmentType == JFapChannelConstants.SEG_HANDSHAKE) {
              data.flip();
  
              //Now get connection mode
              connectionType = data.get(); // d175811
  
              //Store away the connection type for fututre conversations
              switch (connectionType) {
                  // Client handshake
                  case CommsConstants.HANDSHAKE_CLIENT:
                      listener = serverTransportAcceptListener.acceptConnection(conversation);
                      lls = (ServerLinkLevelState) conversation.getLinkLevelAttachment();
                      lls.setConnectionType(CommsConstants.HANDSHAKE_CLIENT);
                      break;
  
                  // Unknown handshake type
                  default:
                      // begin F174602
                      String nlsText = nls.getFormattedMessage("INVALID_PROP_SICO8008",
                                                               new Object[] { "" + connectionType }, // d192293
                                                               null);
  
                      SIConnectionLostException commsException = new SIConnectionLostException(nlsText);
  
                      StaticCATHelper.sendExceptionToClient(commsException,
                                                            null, // d186970
                                                            conversation,
                                                            requestNumber);
                      break;
                  // end F174602
              }
          } else {
              //We've previously noted the initiating connection type from an earlier
              //conversation on this connections so we can retrieve it from the
              //Link level state
  
              lls = (ServerLinkLevelState) conversation.getLinkLevelAttachment();
              connectionType = lls.getConnectionType();
  
              switch (connectionType) {
                  // Client handshake
                  case CommsConstants.HANDSHAKE_CLIENT:
                      if (tc.isDebugEnabled())
                          SibTr.debug(tc, "Conversation was initiated by a Client. Filtering accordingly");
                      listener = serverTransportAcceptListener.acceptConnection(conversation);
                      break;
  
                  // Unknown handshake type
                  default: //F174776
                      if (tc.isDebugEnabled())
                          SibTr.debug(tc, "Conversation was initiated by an unknown entity ", "" + connectionType);
                      break;
                  // end F174602
              }
          }
  
          if (tc.isEntryEnabled())
              SibTr.exit(tc, "dataReceived", listener); // F193735.3
  
          // F174776 Return the chosen subordinate listener to handle all data from
          // now on, on this conversation
          return listener;
      }