private void readArray() throws IOException {
    Object array = handler.startArray();
    read();
    if (++nestingLevel > MAX_NESTING_LEVEL) {
      throw error("Nesting too deep");
    }
    skipWhiteSpace();
    if (readChar(']')) {
      nestingLevel--;
      handler.endArray(array);
      return;
    }
    do {
      skipWhiteSpace();
      handler.startArrayValue(array);
      readValue();
      handler.endArrayValue(array);
      skipWhiteSpace();
    } while (readChar(','));
    if (!readChar(']')) {
      throw expected("',' or ']'");
    }
    nestingLevel--;
    handler.endArray(array);
  }
Reads the entire input from the given reader and parses it as JSON. The input must contain a
valid JSON value, optionally padded with whitespace.
<p>
Characters are read in chunks into an input buffer of the given size. Hence, wrapping a reader
in an additional <code>BufferedReader</code> likely won't improve reading performance.
</p>

@param reader
         the reader to read the input from
@param buffersize
         the size of the input buffer in chars
@throws IOException
          if an I/O error occurs in the reader
@throws ParseException
          if the input is not valid JSON
flatlaf-core/src/main/java/com/formdev/flatlaf/json/JsonParser.java