private void readArray() throws IOException {
        SourceLocation location = getSourceLocation();
        Object array = handler.startArray();
        read();
        if (++nestingLevel > MAX_NESTING_LEVEL) {
            throw error("Nesting too deep");
        }
        skipWhiteSpace();
        if (readChar(']')) {
            nestingLevel--;
            handler.endArray(array, location);
            return;
        }
        do {
            skipWhiteSpace();
            // handler.startArrayValue(array);
            readValue();
            handler.endArrayValue(array);
            skipWhiteSpace();
        } while (readChar(','));
        if (!readChar(']')) {
            throw expected("',' or ']'");
        }
        nestingLevel--;
        handler.endArray(array, location);
    }
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 ModelSyntaxException if the input is not valid JSON
smithy-model/src/main/java/software/amazon/smithy/model/node/internal/JsonParser.java