docs: public ByteBuffer getRemnant() throws IOException {
          if (!m_rxNetData.hasRemaining()) {
              return m_rxNetData.slice();
          }
          ByteBuffer remnant = ByteBuffer.allocate(m_eng.getSession().getApplicationBufferSize());
          SSLEngineResult result = m_eng.unwrap(m_rxNetData, remnant);
          switch (result.getStatus()) {
          case OK:
              assert !m_rxNetData.hasRemaining() : "there are unexpected additional remnants";
              return ((ByteBuffer)remnant.flip()).slice().asReadOnlyBuffer();
          case BUFFER_OVERFLOW:
              throw new IOException("buffer underflow while decrypting handshake remnant");
          case BUFFER_UNDERFLOW:
              throw new IOException("buffer overflow while decrypting handshake remnant");
          case CLOSED:
              throw new IOException("ssl engine closed while decrypting handshake remnant");
          }
          return null; // unreachable
      }