docs: protected void getNetworkBuffer(long requestedSize) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, "getNetworkBuffer: size=" + requestedSize);
          }
          // Reset the netBuffer mark.
          this.netBufferMark = 0;
          int allocationSize = getConnLink().getPacketBufferSize();
          if (allocationSize < requestedSize) {
              allocationSize = (int) requestedSize;
          }
  
          if (null == this.netBuffer) {
              // Need to allocate a buffer to give to the device channel to read into.
              this.netBuffer = SSLUtils.allocateByteBuffer(allocationSize, true);
          } else {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Found existing netbuffer, " + SSLUtils.getBufferTraceInfo(netBuffer));
              }
  
              int cap = netBuffer.capacity();
              int pos = netBuffer.position();
              int lim = netBuffer.limit();
              if (pos == lim) {
                  // 431269 - nothing is currently in this buffer, see if we can reuse it
                  if (cap >= allocationSize) {
                      this.netBuffer.clear();
                  } else {
                      this.netBuffer.release();
                      this.netBuffer = SSLUtils.allocateByteBuffer(allocationSize, true);
                  }
              } else {
                  // if we have less than the allocation size amount of data + empty,
                  // then make a new buffer to start clean inside of...
                  if ((cap - pos) < allocationSize) {
                      // allocate a new buffer, copy the existing data over
                      WsByteBuffer buffer = SSLUtils.allocateByteBuffer(allocationSize, true);
                      SSLUtils.copyBuffer(this.netBuffer, buffer, lim - pos);
                      this.netBuffer.release();
                      this.netBuffer = buffer;
                  } else {
                      this.netBufferMark = pos;
                      this.netBuffer.position(lim);
                      this.netBuffer.limit(cap);
                  }
              }
          }
          // Inform the device side channel to read into the new buffers.
          deviceReadContext.setBuffer(this.netBuffer);
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(tc, "netBuffer: " + SSLUtils.getBufferTraceInfo(this.netBuffer));
          }
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "getNetworkBuffer");
          }
      }