docs: public ByteBuf tlsunwrap(ByteBuffer srcBuffer, ByteBuf dstBuf, PooledByteBufAllocator allocator) {
          int writerIndex = dstBuf.writerIndex();
          ByteBuffer byteBuffer = dstBuf.nioBuffer(writerIndex, dstBuf.writableBytes());
  
          while (true) {
              SSLEngineResult result;
              try {
                  result = m_sslEngine.unwrap(srcBuffer, byteBuffer);
              } catch (SSLException | ReadOnlyBufferException | IllegalArgumentException | IllegalStateException e) {
                  dstBuf.release();
                  throw new TLSException("ssl engine unwrap fault", e);
              } catch (Throwable t) {
                  dstBuf.release();
                  throw t;
              }
  
              switch (result.getStatus()) {
              case OK:
                  if (result.bytesProduced() <= 0 || srcBuffer.hasRemaining()) {
                      continue;
                  }
                  dstBuf.writerIndex(writerIndex + result.bytesProduced());
                  return dstBuf;
              case BUFFER_OVERFLOW:
                  dstBuf.release();
                  if (m_sslEngine.getSession().getApplicationBufferSize() > dstBuf.writableBytes()) {
                      int size = m_sslEngine.getSession().getApplicationBufferSize();
                      dstBuf = allocator.buffer(size);
                      writerIndex = dstBuf.writerIndex();
                      byteBuffer = dstBuf.nioBuffer(writerIndex, dstBuf.writableBytes());
                      continue;
                  }
                  throw new TLSException("SSL engine unexpectedly overflowed when decrypting");
              case BUFFER_UNDERFLOW:
                  dstBuf.release();
                  throw new TLSException("SSL engine unexpectedly underflowed when decrypting");
              case CLOSED:
                  dstBuf.release();
                  throw new TLSException("SSL engine is closed on ssl unwrap of buffer.");
              }
          }
      }