void parse(Reader reader, int buffersize) throws IOException {
        if (reader == null) {
            throw new NullPointerException("reader is null");
        }
        if (buffersize <= 0) {
            throw new IllegalArgumentException("buffersize is zero or negative");
        }
        this.reader = reader;
        buffer = new char[buffersize];
        bufferOffset = 0;
        index = 0;
        fill = 0;
        line = 1;
        lineOffset = 0;
        current = 0;
        captureStart = -1;
        read();
        skipWhiteSpace();
        readValue();
        skipWhiteSpace();
        if (!isEndOfText()) {
            throw error("Unexpected character");
        }
    }
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