private int consumeUntilNoLongerMatches(Predicate<Character> predicate) {
        int startPosition = position;
        while (!eof()) {
            char peekedChar = peek();
            if (!predicate.test(peekedChar)) {
                break;
            }
            skip();
        }

        return position - startPosition;
    }
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