docs: public static void readFully(Reader reader, char[] buffer, int offset) throws IOException {
      int originalOffset = offset;
      int expected = buffer.length - offset;
      while (offset < buffer.length) {
        int numRead = reader.read(buffer, offset, buffer.length - offset);
        if (numRead < 0) {
          throw new IOException(
                  String.format("Reached end of stream earlier than expected. Expected to read %d bytes. Actual: %d",
                  expected, offset - originalOffset));
        }
        offset += numRead;
      }
    }