docs: public final void readFully(byte pBytes[], int pOffset, int pLength) throws IOException {
          if (pLength < 0) {
              throw new IndexOutOfBoundsException();
          }
  
          int count = 0;
  
          while (count < pLength) {
              int read = in.read(pBytes, pOffset + count, pLength - count);
  
              if (read < 0) {
                  throw new EOFException();
              }
  
              count += read;
          }
      }