docs: public static void sendSessionCreateResponse(int segmentType, int requestNumber,
                                                   Conversation conversation, short sessionId,
                                                   DestinationSession session,
                                                   SIDestinationAddress originalDestinationAddr) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(tc, "sendSessionCreateResponse");
  
          CommsByteBuffer buffer = poolManager.allocate();
  
          // Add the Message processor session id if we are sending back a consumer response
          if (segmentType == JFapChannelConstants.SEG_CREATE_CONS_FOR_DURABLE_SUB_R ||
              segmentType == JFapChannelConstants.SEG_CREATE_CONSUMER_SESS_R) {
              long id = 0;
              try {
                  id = ((ConsumerSession) session).getId();
              } catch (SIException e) {
                  //No FFDC code needed
                  //Only FFDC if we haven't received a meTerminated event.
                  if (!((ConversationState) conversation.getAttachment()).hasMETerminated()) {
                      FFDCFilter.processException(e, CLASS_NAME + ".sendSessionCreateResponse",
                                                  CommsConstants.STATICCATHELPER_SENDSESSRESPONSE_02);
                  }
  
                  // Not a lot we can do here - so just debug the error
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      SibTr.debug(tc, "Unable to get session id", e);
              }
              buffer.putLong(id);
          }
  
          if (segmentType == JFapChannelConstants.SEG_CREATE_CONSUMER_SESS_R) {
              buffer.putShort(CommsConstants.CF_UNICAST);
          }
  
          buffer.putShort(sessionId);
  
          // Now get the destination address from the session so we can get sizes
          JsDestinationAddress destAddress = (JsDestinationAddress) session.getDestinationAddress();
  
          // We should only send back the destination address if it is different from the original.
          // To do this, we can do a simple compare on their toString() methods.
          if (originalDestinationAddr == null ||
              (!originalDestinationAddr.toString().equals(destAddress.toString()))) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  SibTr.debug(tc, "Destination address is different: Orig, New",
                              new Object[]
                              {
                               originalDestinationAddr,
                               destAddress
                              });
  
              buffer.putSIDestinationAddress(destAddress, conversation.getHandshakeProperties().getFapLevel());
          }
  
          try {
              // Send the response to the client.
              conversation.send(buffer,
                                segmentType,
                                requestNumber,
                                JFapChannelConstants.PRIORITY_MEDIUM,
                                true,
                                ThrottlingPolicy.BLOCK_THREAD,
                                null);
          } catch (SIException e) {
              FFDCFilter.processException(e,
                                          CLASS_NAME + ".sendSessionCreateResponse",
                                          CommsConstants.STATICCATHELPER_SENDSESSRESPONSE_01);
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  SibTr.debug(tc, e.getMessage(), e);
  
              SibTr.error(tc, "COMMUNICATION_ERROR_SICO2023", e);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "sendSessionCreateResponse");
      }