private Object parseJsonArray() {
        increaseNestingLevel();
        List<Object> values = new ArrayList<>();
        ws();

        if (peek() == ']') {
            skip();
            decreaseNestingLevel();
            return values;
        }

        while (!eof() && peek() != '`') {
            values.add(parseJsonValue());
            ws();
            if (expect(',', ']') == ',') {
                ws();
            } else {
                decreaseNestingLevel();
                return values;
            }
        }

        throw syntax("Unclosed JSON array");
    }
Gets a slice of the expression starting from the given 0-based
character position, read all the way through to the current
position of the parser.

@param start Position to slice from, ending at the current position.
@return Returns the slice of the expression from {@code start} to {@link #position}.
smithy-jmespath/src/main/java/software/amazon/smithy/jmespath/Lexer.java