docs: @Override
    public int read(byte[] buffer, int offset, int length) {
      if (offset < 0 || length < 0 || offset + length > buffer.length) {
        throw new ArrayIndexOutOfBoundsException(
            "length=" + buffer.length +
            "; regionStart=" + offset +
            "; regionLength=" + length);
      }
  
      final int available = available();
      if (available <= 0) {
        return -1;
      }
  
      if (length <= 0) {
        return 0;
      }
  
      int numToRead = Math.min(available, length);
      mPooledByteBuffer.read(mOffset, buffer, offset, numToRead);
      mOffset += numToRead;
      return numToRead;
    }