code: protected final ByteBuf newDirectBuffer(Object holder, ByteBuf buf) {
          final int readableBytes = buf.readableBytes();
          if (readableBytes == 0) {
              ReferenceCountUtil.release(holder);
              return Unpooled.EMPTY_BUFFER;
          }
  
          final ByteBufAllocator alloc = alloc();
          if (alloc.isDirectBufferPooled()) {
              return newDirectBuffer0(holder, buf, alloc, readableBytes);
          }
  
          final ByteBuf directBuf = ByteBufUtil.threadLocalDirectBuffer();
          if (directBuf == null) {
              return newDirectBuffer0(holder, buf, alloc, readableBytes);
          }
  
          directBuf.writeBytes(buf, buf.readerIndex(), readableBytes);
          ReferenceCountUtil.safeRelease(holder);
          return directBuf;
      }
docs: Returns an off-heap copy of the specified {@link ByteBuf}, and releases the specified holder.
  The caller must ensure that the holder releases the original {@link ByteBuf} when the holder is released by
  this method.