code: protected void destroy() {
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(tc, "CompletionKey::destroy entered for:" + this);
          }
  
          // Free existing ByteBuffer objects.
          if (this.rawData != null) {
              if (this.wsByteBuf != null) {
                  this.wsByteBuf.release();
                  this.wsByteBuf = null;
              }
              this.rawData = null;
  
              this.stagingByteBuffer = null;
          }
      }
docs: Cleanup resources held by CompletionKey