docs: public final int read(byte[] dst, int offset, int length) throws IOException
      {
          if (!is_byte_data()) {
              throw new IOException("byte read is not support over character sources");
          }
          int remaining = length;
          while (remaining > 0 && !isEOF()) {
              int ready = _limit - _pos;
              if (ready > remaining) {
                  ready = remaining;
              }
              System.arraycopy(_bytes, _pos, dst, offset, ready);
              _pos += ready;
              offset += ready;
              remaining -= ready;
              if (remaining == 0 || _pos < _limit || refill_helper()) {
                  break;
              }
          }
          return length - remaining;
      }