docs: private void processBytesBuffer(boolean endOfInput) throws IOException
    {
      // prepare bytes buffer for reading
      bytesBuffer.flip();
  
      // decode bytes from input buffer into decoder characters buffer till bytes buffer underflow
      while(true) {
        CoderResult coderResult = decoder.decode(bytesBuffer, charactersBuffer, endOfInput);
        if(coderResult.isOverflow()) {
          flushCharactersBuffer();
        }
        else if(coderResult.isUnderflow()) {
          break;
        }
        else {
          // isMalformed() - decoder is configured to replace malformed input with '?'
          // isUnmappable() - decoder is configured to replace with '?' characters that cannot be mapped
          // so there is no reason to be here
          throw new IOException("Unexpected coder result.");
        }
      }
  
      // discard the bytes that have been read
      bytesBuffer.compact();
    }