docs: @Override
      public void finishResponseMessage(WsByteBuffer[] body) throws IOException, MessageSentException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(tc, "finishResponseMessage(body)");
          }
          if (!headersParsed()) {
              // request message must have the headers parsed prior to sending
              // any data out (this is a completely invalid state in the channel
              // above)
              IOException ioe = new IOException("Request not read yet");
              FFDCFilter.processException(ioe, CLASS_NAME + ".finishResponseMessage", "941");
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Attempt to send response without a request msg");
              }
              throw ioe;
          }
  
          if (isMessageSent()) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Message already sent");
              }
  
              throw new MessageSentException("Message already sent");
          }
  
          // if headers haven't been sent and chunked encoding is not explicitly
          // configured, then set this up for Content-Length
          if (!headersSent() && !getResponseImpl().isChunkedEncodingSet()) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "finishMessage() setting partial body false");
              }
              setPartialBody(false);
          }
  
          if (getHttpConfig().runningOnZOS()) {
              // @311734 - add this to notify the xmem channel of our final write
              getVC().getStateMap().put(HttpConstants.FINAL_WRITE_MARK, "true");
          }
          try {
              sendFullOutgoing(body, getResponseImpl());
          } finally {
              logFinalResponse(getNumBytesWritten());
          }
  
          HttpInvalidMessageException inv = checkResponseValidity();
          if (null != inv) {
              throw inv;
          }
      }