All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ai.vespa.schemals.parser.indexinglanguage.IndexingParser Maven / Gradle / Ivy

There is a newer version: 8.441.21
Show newest version
/* Generated by: CongoCC Parser Generator. IndexingParser.java  */
package ai.vespa.schemals.parser.indexinglanguage;

import com.yahoo.language.Linguistics;
import com.yahoo.language.process.Embedder;
import com.yahoo.vespa.indexinglanguage.linguistics.AnnotatorConfig;
import com.yahoo.vespa.indexinglanguage.expressions.*;
import com.yahoo.text.StringUtilities;
import com.yahoo.document.datatypes.*;
import com.yahoo.collections.Pair;
import java.util.LinkedHashMap;
import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;
import java.util.List;
import java.math.BigInteger;
import java.math.BigDecimal;
import java.io.OutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.Collections;
import java.util.EnumSet;
import java.util.ListIterator;
import java.util.concurrent.CancellationException;
import ai.vespa.schemals.parser.indexinglanguage.Token.TokenType;
import static ai.vespa.schemals.parser.indexinglanguage.Token.TokenType.*;
import ai.vespa.schemals.parser.indexinglanguage.ast.InvalidNode;
import ai.vespa.schemals.parser.indexinglanguage.ast.root;
import ai.vespa.schemals.parser.indexinglanguage.ast.script;
import ai.vespa.schemals.parser.indexinglanguage.ast.statement;
import ai.vespa.schemals.parser.indexinglanguage.ast.expression;
import ai.vespa.schemals.parser.indexinglanguage.ast.nonChoiceExpression;
import ai.vespa.schemals.parser.indexinglanguage.ast.math;
import ai.vespa.schemals.parser.indexinglanguage.ast.value;
import ai.vespa.schemals.parser.indexinglanguage.ast.attributeExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.base64DecodeExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.base64EncodeExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.binarizeExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.busy_waitExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.clearStateExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.echoExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.embedExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.exactExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.flattenExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.forEachExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.getFieldExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.getVarExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.guardExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.hashExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.hexDecodeExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.hexEncodeExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.hostNameExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.ifThenExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.ifThenCmp;
import ai.vespa.schemals.parser.indexinglanguage.ast.indexExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.inputExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.joinExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.lowerCaseExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.ngramExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.normalizeExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.nowExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.optimizePredicateExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.packBitsExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.passthroughExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.randomExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.selectInputExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.setLanguageExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.setValueExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.setVarExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.sleepExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.splitExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.substringExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.summaryExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.switchExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.thisExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.tokenizeExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.tokenizeCfg;
import ai.vespa.schemals.parser.indexinglanguage.ast.toArrayExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.toByteExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.toDoubleExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.toFloatExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.toIntExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.toLongExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.toPosExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.toEpochSecondExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.toStringExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.toWsetExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.toBoolExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.trimExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.literalBoolExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.zcurveExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.executionValueExp;
import ai.vespa.schemals.parser.indexinglanguage.ast.identifierStr;
import ai.vespa.schemals.parser.indexinglanguage.ast.fieldName;
import ai.vespa.schemals.parser.indexinglanguage.ast.fieldValue;
import ai.vespa.schemals.parser.indexinglanguage.ast.numericValue;
import ai.vespa.schemals.parser.indexinglanguage.ast.stringValue;
import ai.vespa.schemals.parser.indexinglanguage.ast.stringLiteral;
import ai.vespa.schemals.parser.indexinglanguage.ast.integerValue;
import ai.vespa.schemals.parser.indexinglanguage.ast.consumeNL;


public class IndexingParser {
    /**
    * @author Simon Thoresen Hult
    *
    * Ported to CongoCC by Magnus Eide-Fredriksen
    */
    private String defaultFieldName;
    private Linguistics linguistics;
    private Map embedders;
    private AnnotatorConfig annotatorCfg;
    private PrintStream logger = new PrintStream(new OutputStream() {

        public void write(int b) {
            return;
        }

    }
    );

    public IndexingParser(PrintStream logger, String inputSource, CharSequence content) {
        this(inputSource, content);
        this.logger = logger;
        this.embedders = new HashMap();
    }

    public IndexingParser setDefaultFieldName(String fieldName) {
        defaultFieldName = fieldName;
        return this;
    }

    public IndexingParser setLinguistics(Linguistics linguistics) {
        this.linguistics = linguistics;
        return this;
    }

    public IndexingParser setEmbedders(Map embedders) {
        this.embedders = embedders;
        return this;
    }

    public IndexingParser setAnnotatorConfig(AnnotatorConfig cfg) {
        annotatorCfg = cfg;
        return this;
    }

    private static DoubleFieldValue parseDouble(String str) {
        return new DoubleFieldValue(new BigDecimal(str).doubleValue());
    }

    private static FloatFieldValue parseFloat(String str) {
        if (str.endsWith("f") || str.endsWith("F")) {
            str = str.substring(0, str.length() - 1);
        }
        return new FloatFieldValue(new BigDecimal(str).floatValue());
    }

    private static IntegerFieldValue parseInteger(String str) {
        if (str.startsWith("0x")) {
            return new IntegerFieldValue(new BigInteger(str.substring(2), 16).intValue());
        } else {
            return new IntegerFieldValue(new BigInteger(str).intValue());
        }
    }

    private static LongFieldValue parseLong(String str) {
        if (str.endsWith("l") || str.endsWith("L")) {
            str = str.substring(0, str.length() - 1);
        }
        if (str.startsWith("0x")) {
            return new LongFieldValue(new BigInteger(str.substring(2), 16).longValue());
        } else {
            return new LongFieldValue(new BigInteger(str).longValue());
        }
    }

    static final int UNLIMITED = Integer.MAX_VALUE;
    // The last token successfully "consumed"
    Token lastConsumedToken;
    private TokenType nextTokenType;
    // Normally null when parsing, populated when doing lookahead
    private Token currentLookaheadToken;
    private int remainingLookahead;
    private boolean hitFailure;
    private boolean passedPredicate;
    private String currentlyParsedProduction;
    private String currentLookaheadProduction;
    private int lookaheadRoutineNesting;
    private EnumSet outerFollowSet;
    private final boolean legacyGlitchyLookahead = false;
    private final Token DUMMY_START_TOKEN = new Token();
    private boolean cancelled;

    public void cancel() {
        cancelled = true;
    }

    public boolean isCancelled() {
        return cancelled;
    }

    /** Generated Lexer. */
    private IndexingParserLexer token_source;

    public void setInputSource(String inputSource) {
        token_source.setInputSource(inputSource);
    }

    String getInputSource() {
        return token_source.getInputSource();
    }

    //=================================
    // Generated constructors
    //=================================
    public IndexingParser(String inputSource, CharSequence content) {
        this(new IndexingParserLexer(inputSource, content));
    }

    public IndexingParser(CharSequence content) {
        this("input", content);
    }

    /**
    * @param inputSource just the name of the input source (typically the filename) that
    * will be used in error messages and so on.
    * @param path The location (typically the filename) from which to get the input to parse
    */
    public IndexingParser(String inputSource, Path path) throws IOException {
        this(inputSource, TokenSource.stringFromBytes(Files.readAllBytes(path)));
    }

    public IndexingParser(String inputSource, Path path, Charset charset) throws IOException {
        this(inputSource, TokenSource.stringFromBytes(Files.readAllBytes(path), charset));
    }

    /**
    * @param path The location (typically the filename) from which to get the input to parse
    */
    public IndexingParser(Path path) throws IOException {
        this(path.toString(), path);
    }

    /** Constructor with user supplied Lexer. */
    public IndexingParser(IndexingParserLexer lexer) {
        token_source = lexer;
        lastConsumedToken = DUMMY_START_TOKEN;
        lastConsumedToken.setTokenSource(lexer);
    }

    /**
    * Set the starting line/column for location reporting.
    * By default, this is 1,1.
    */
    public void setStartingPos(int startingLine, int startingColumn) {
        token_source.setStartingPos(startingLine, startingColumn);
    }

    // this method is for testing only.
    public boolean getLegacyGlitchyLookahead() {
        return legacyGlitchyLookahead;
    }

    // If the next token is cached, it returns that
    // Otherwise, it goes to the token_source, i.e. the Lexer.
    private Token nextToken(final Token tok) {
        Token result = token_source.getNextToken(tok);
        while (result.isUnparsed()) {
            result = token_source.getNextToken(result);
            if (result.isInvalid()) {
                if (isParserTolerant()) {
                    result.setUnparsed(true);
                }
            }
        }
        nextTokenType = null;
        return result;
    }

    /**
    * @return the next Token off the stream. This is the same as #getToken(1)
    */
    public final Token getNextToken() {
        return getToken(1);
    }

    /**
    * @param index how many tokens to look ahead
    * @return the specific regular (i.e. parsed) Token index ahead/behind in the stream.
    * If we are in a lookahead, it looks ahead from the currentLookaheadToken
    * Otherwise, it is the lastConsumedToken. If you pass in a negative
    * number it goes backward.
    */
    public final Token getToken(final int index) {
        Token t = currentLookaheadToken == null ? lastConsumedToken : currentLookaheadToken;
        for (int i = 0; i < index; i++) {
            t = nextToken(t);
        }
        for (int i = 0; i > index; i--) {
            t = t.getPrevious();
            if (t == null) break;
        }
        return t;
    }

    private TokenType nextTokenType() {
        if (nextTokenType == null) {
            nextTokenType = nextToken(lastConsumedToken).getType();
        }
        return nextTokenType;
    }

    boolean activateTokenTypes(TokenType...types) {
        if (token_source.activeTokenTypes == null) return false;
        boolean result = false;
        for (TokenType tt : types) {
            result |= token_source.activeTokenTypes.add(tt);
        }
        if (result) {
            token_source.reset(getToken(0));
            nextTokenType = null;
        }
        return result;
    }

    boolean deactivateTokenTypes(TokenType...types) {
        boolean result = false;
        if (token_source.activeTokenTypes == null) {
            token_source.activeTokenTypes = EnumSet.allOf(TokenType.class);
        }
        for (TokenType tt : types) {
            result |= token_source.activeTokenTypes.remove(tt);
        }
        if (result) {
            token_source.reset(getToken(0));
            nextTokenType = null;
        }
        return result;
    }

    private static final HashMap> enumSetCache = new HashMap<>();

    private static EnumSet tokenTypeSet(TokenType first, TokenType...rest) {
        TokenType[] key = new TokenType[1 + rest.length];
        key[0] = first;
        if (rest.length > 0) {
            System.arraycopy(rest, 0, key, 1, rest.length);
        }
        Arrays.sort(key);
        if (enumSetCache.containsKey(key)) {
            return enumSetCache.get(key);
        }
        EnumSet result = (rest.length == 0) ? EnumSet.of(first) : EnumSet.of(first, rest);
        enumSetCache.put(key, result);
        return result;
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:248:1
    final public Expression root() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "root";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:248:1
        root thisProduction = null;
        if (buildTree) {
            thisProduction = new root();
            openNodeScope(thisProduction);
        }
        Expression exp;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$root();
            }
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:253:7
            pushOntoCallStack("root", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 253, 7);
            if (outerFollowSet != null) {
                EnumSet newFollowSet = follow_set$IndexingParser_ccc$253$7.clone();
                newFollowSet.addAll(outerFollowSet);
                outerFollowSet = newFollowSet;
            }
            try {
                exp = statement();
            } finally {
                popCallStack();
            }
            // Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:253:25
            if (nextTokenType() == SCOLON) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:253:27
                EnumSet followSet32 = null;
                if (outerFollowSet != null) {
                    followSet32 = follow_set$IndexingParser_ccc$253$27.clone();
                    followSet32.addAll(outerFollowSet);
                }
                consumeToken(SCOLON, false, followSet32);
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:254:5
            while (exp instanceof ExpressionList && ((ExpressionList) exp).size() == 1)exp = ((ExpressionList) exp).get(0);
            thisProduction.expression = exp;
            return exp;
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:263:1
    final public ScriptExpression script() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "script";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:263:1
        script thisProduction = null;
        if (buildTree) {
            thisProduction = new script();
            openNodeScope(thisProduction);
        }
        StatementExpression exp;
        List lst = new ArrayList();
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$script();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:269:9
            consumeToken(LCURLY, false, follow_set$IndexingParser_ccc$269$9);
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:269:18
            pushOntoCallStack("script", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 269, 18);
            outerFollowSet = follow_set$IndexingParser_ccc$269$18;
            try {
                consumeNL();
            } finally {
                popCallStack();
            }
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:269:32
            pushOntoCallStack("script", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 269, 32);
            outerFollowSet = follow_set$IndexingParser_ccc$269$32;
            try {
                exp = statement();
            } finally {
                popCallStack();
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:269:50
            lst.add(exp);
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:269:68
            pushOntoCallStack("script", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 269, 68);
            outerFollowSet = follow_set$IndexingParser_ccc$269$68;
            try {
                consumeNL();
            } finally {
                popCallStack();
            }
            // Code for ZeroOrMore specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:270:7
            while (true) {
                if (!(nextTokenType() == SCOLON)) break;
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:270:9
                consumeToken(SCOLON, false, follow_set$IndexingParser_ccc$270$9);
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:270:18
                pushOntoCallStack("script", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 270, 18);
                outerFollowSet = follow_set$IndexingParser_ccc$270$18;
                try {
                    consumeNL();
                } finally {
                    popCallStack();
                }
                // Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:270:30
                if (first_set$IndexingParser_ccc$270$32.contains(nextTokenType())) {
                    // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:270:32
                    pushOntoCallStack("script", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 270, 32);
                    outerFollowSet = follow_set$IndexingParser_ccc$270$32$;
                    try {
                        exp = statement();
                    } finally {
                        popCallStack();
                    }
                    // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:270:50
                    lst.add(exp);
                    // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:270:68
                    pushOntoCallStack("script", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 270, 68);
                    outerFollowSet = follow_set$IndexingParser_ccc$270$68;
                    try {
                        consumeNL();
                    } finally {
                        popCallStack();
                    }
                }
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:270:85
            EnumSet followSet72 = null;
            if (outerFollowSet != null) {
                followSet72 = follow_set$IndexingParser_ccc$270$85.clone();
                followSet72.addAll(outerFollowSet);
            }
            consumeToken(RCURLY, false, followSet72);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:271:5
            return new ScriptExpression(lst);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:274:1
    final public StatementExpression statement() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "statement";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:274:1
        statement thisProduction = null;
        if (buildTree) {
            thisProduction = new statement();
            openNodeScope(thisProduction);
        }
        Expression exp;
        List lst = new ArrayList();
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$statement();
            }
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:280:7
            pushOntoCallStack("statement", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 280, 7);
            if (outerFollowSet != null) {
                EnumSet newFollowSet = follow_set$IndexingParser_ccc$280$7.clone();
                newFollowSet.addAll(outerFollowSet);
                outerFollowSet = newFollowSet;
            }
            try {
                exp = expression();
            } finally {
                popCallStack();
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:280:26
            lst.add(exp);
            // Code for ZeroOrMore specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:280:44
            while (true) {
                if (!(nextTokenType() == PIPE)) break;
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:280:46
                consumeToken(PIPE, false, follow_set$IndexingParser_ccc$280$46);
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:280:53
                pushOntoCallStack("statement", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 280, 53);
                outerFollowSet = follow_set$IndexingParser_ccc$280$53;
                try {
                    consumeNL();
                } finally {
                    popCallStack();
                }
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:280:65
                pushOntoCallStack("statement", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 280, 65);
                if (outerFollowSet != null) {
                    EnumSet newFollowSet = follow_set$IndexingParser_ccc$280$65.clone();
                    newFollowSet.addAll(outerFollowSet);
                    outerFollowSet = newFollowSet;
                }
                try {
                    exp = expression();
                } finally {
                    popCallStack();
                }
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:280:84
                lst.add(exp);
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:281:5
            thisProduction.expression = new StatementExpression(lst);
            return thisProduction.expression;
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:287:1
    final public Expression expression() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "expression";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:287:1
        expression thisProduction = null;
        if (buildTree) {
            thisProduction = new expression();
            openNodeScope(thisProduction);
        }
        Expression choice;
        List choices = new ArrayList();
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$expression();
            }
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:293:5
            pushOntoCallStack("expression", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 293, 5);
            if (outerFollowSet != null) {
                EnumSet newFollowSet = follow_set$IndexingParser_ccc$293$5.clone();
                newFollowSet.addAll(outerFollowSet);
                outerFollowSet = newFollowSet;
            }
            try {
                choice = nonChoiceExpression();
            } finally {
                popCallStack();
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:293:36
            choices.add(choice);
            // Code for ZeroOrMore specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:294:5
            while (true) {
                if (!(nextTokenType() == CHOICE)) break;
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:294:7
                consumeToken(CHOICE, false, follow_set$IndexingParser_ccc$294$7);
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:294:16
                pushOntoCallStack("expression", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 294, 16);
                if (outerFollowSet != null) {
                    EnumSet newFollowSet = follow_set$IndexingParser_ccc$294$16.clone();
                    newFollowSet.addAll(outerFollowSet);
                    outerFollowSet = newFollowSet;
                }
                try {
                    choice = nonChoiceExpression();
                } finally {
                    popCallStack();
                }
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:294:47
                choices.add(choice);
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:295:5
            return choices.size() == 1 ? choices.get(0) : new ChoiceExpression(choices);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:298:1
    final public Expression nonChoiceExpression() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "nonChoiceExpression";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:298:1
        nonChoiceExpression thisProduction = null;
        if (buildTree) {
            thisProduction = new nonChoiceExpression();
            openNodeScope(thisProduction);
        }
        Expression exp;
        List lst = new ArrayList();
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$nonChoiceExpression();
            }
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:304:7
            pushOntoCallStack("nonChoiceExpression", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 304, 7);
            if (outerFollowSet != null) {
                EnumSet newFollowSet = follow_set$IndexingParser_ccc$304$7.clone();
                newFollowSet.addAll(outerFollowSet);
                outerFollowSet = newFollowSet;
            }
            try {
                exp = math();
            } finally {
                popCallStack();
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:304:20
            lst.add(exp);
            // Code for ZeroOrMore specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:304:38
            while (true) {
                if (!(nextTokenType() == DOT)) break;
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:304:40
                consumeToken(DOT, false, follow_set$IndexingParser_ccc$304$40);
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:304:46
                pushOntoCallStack("nonChoiceExpression", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 304, 46);
                if (outerFollowSet != null) {
                    EnumSet newFollowSet = follow_set$IndexingParser_ccc$304$46.clone();
                    newFollowSet.addAll(outerFollowSet);
                    outerFollowSet = newFollowSet;
                }
                try {
                    exp = math();
                } finally {
                    popCallStack();
                }
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:304:59
                lst.add(exp);
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:305:5
            return lst.size() == 1 ? exp : new CatExpression(lst);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:308:1
    final public Expression math() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "math";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:308:1
        math thisProduction = null;
        if (buildTree) {
            thisProduction = new math();
            openNodeScope(thisProduction);
        }
        ArithmeticExpression.Operator op = ArithmeticExpression.Operator.ADD;
        MathResolver math = new MathResolver();
        Expression exp;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$math();
            }
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:315:11
            pushOntoCallStack("math", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 315, 11);
            if (outerFollowSet != null) {
                EnumSet newFollowSet = follow_set$IndexingParser_ccc$315$11.clone();
                newFollowSet.addAll(outerFollowSet);
                outerFollowSet = newFollowSet;
            }
            try {
                exp = value();
            } finally {
                popCallStack();
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:315:25
            math.push(op, exp);
            // Code for ZeroOrMore specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:316:7
            while (true) {
                if (!(first_set$IndexingParser_ccc$316$9.contains(nextTokenType()))) break;
                if (nextTokenType() == ADD) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:316:11
                    consumeToken(ADD, false, follow_set$IndexingParser_ccc$316$11);
                    // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:316:25
                    op = ArithmeticExpression.Operator.ADD;
                } else if (nextTokenType() == DIV) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:317:11
                    consumeToken(DIV, false, follow_set$IndexingParser_ccc$317$11);
                    // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:317:25
                    op = ArithmeticExpression.Operator.DIV;
                } else if (nextTokenType() == MOD) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:318:11
                    consumeToken(MOD, false, follow_set$IndexingParser_ccc$318$11);
                    // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:318:25
                    op = ArithmeticExpression.Operator.MOD;
                } else if (nextTokenType() == MUL) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:319:11
                    consumeToken(MUL, false, follow_set$IndexingParser_ccc$319$11);
                    // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:319:25
                    op = ArithmeticExpression.Operator.MUL;
                } else if (nextTokenType() == SUB) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:320:11
                    consumeToken(SUB, false, follow_set$IndexingParser_ccc$320$11);
                    // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:320:25
                    op = ArithmeticExpression.Operator.SUB;
                } else {
                    pushOntoCallStack("math", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 316, 11);
                    throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$316$11$, parsingStack);
                }
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:321:11
                pushOntoCallStack("math", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 321, 11);
                if (outerFollowSet != null) {
                    EnumSet newFollowSet = follow_set$IndexingParser_ccc$321$11.clone();
                    newFollowSet.addAll(outerFollowSet);
                    outerFollowSet = newFollowSet;
                }
                try {
                    exp = value();
                } finally {
                    popCallStack();
                }
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:321:25
                math.push(op, exp);
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:322:5
            return math.resolve();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:327:1
    final public Expression value() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "value";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:327:1
        value thisProduction = null;
        if (buildTree) {
            thisProduction = new value();
            openNodeScope(thisProduction);
        }
        Expression val;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$value();
            }
            if (nextTokenType() == ATTRIBUTE) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:332:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 332, 7);
                try {
                    val = attributeExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == BASE64_DECODE) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:333:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 333, 7);
                try {
                    val = base64DecodeExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == BASE64_ENCODE) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:334:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 334, 7);
                try {
                    val = base64EncodeExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == BINARIZE) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:335:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 335, 7);
                try {
                    val = binarizeExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == BUSY_WAIT) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:336:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 336, 7);
                try {
                    val = busy_waitExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == CLEAR_STATE) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:337:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 337, 7);
                try {
                    val = clearStateExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == ECHO) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:338:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 338, 7);
                try {
                    val = echoExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == EMBED) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:339:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 339, 7);
                try {
                    val = embedExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == EXACT) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:340:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 340, 7);
                try {
                    val = exactExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == FLATTEN) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:341:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 341, 7);
                try {
                    val = flattenExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == FOR_EACH) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:342:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 342, 7);
                try {
                    val = forEachExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == GET_FIELD) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:343:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 343, 7);
                try {
                    val = getFieldExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == GET_VAR) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:344:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 344, 7);
                try {
                    val = getVarExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == GUARD) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:345:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 345, 7);
                try {
                    val = guardExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == HASH) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:346:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 346, 7);
                try {
                    val = hashExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == HEX_DECODE) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:347:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 347, 7);
                try {
                    val = hexDecodeExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == HEX_ENCODE) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:348:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 348, 7);
                try {
                    val = hexEncodeExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == HOST_NAME) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:349:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 349, 7);
                try {
                    val = hostNameExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == IF) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:350:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 350, 7);
                try {
                    val = ifThenExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == INDEX) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:351:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 351, 7);
                try {
                    val = indexExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == INPUT) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:352:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 352, 7);
                try {
                    val = inputExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == JOIN) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:353:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 353, 7);
                try {
                    val = joinExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == LOWER_CASE) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:354:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 354, 7);
                try {
                    val = lowerCaseExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == NGRAM) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:355:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 355, 7);
                try {
                    val = ngramExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == NORMALIZE) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:356:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 356, 7);
                try {
                    val = normalizeExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == NOW) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:357:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 357, 7);
                try {
                    val = nowExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == OPTIMIZE_PREDICATE) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:358:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 358, 7);
                try {
                    val = optimizePredicateExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == PACK_BITS) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:359:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 359, 7);
                try {
                    val = packBitsExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == PASSTHROUGH) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:360:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 360, 7);
                try {
                    val = passthroughExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == RANDOM) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:361:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 361, 7);
                try {
                    val = randomExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == LCURLY) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:362:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 362, 7);
                try {
                    val = script();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == SELECT_INPUT) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:363:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 363, 7);
                try {
                    val = selectInputExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == SET_LANGUAGE) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:364:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 364, 7);
                try {
                    val = setLanguageExp();
                } finally {
                    popCallStack();
                }
            } else if (first_set$IndexingParser_ccc$365$7.contains(nextTokenType())) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:365:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 365, 7);
                try {
                    val = setValueExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == SET_VAR) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:366:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 366, 7);
                try {
                    val = setVarExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == SLEEP) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:367:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 367, 7);
                try {
                    val = sleepExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == SPLIT) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:368:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 368, 7);
                try {
                    val = splitExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == SUBSTRING) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:369:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 369, 7);
                try {
                    val = substringExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == SUMMARY) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:370:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 370, 7);
                try {
                    val = summaryExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == SWITCH) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:371:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 371, 7);
                try {
                    val = switchExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == THIS) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:372:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 372, 7);
                try {
                    val = thisExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == TOKENIZE) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:373:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 373, 7);
                try {
                    val = tokenizeExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == TO_ARRAY) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:374:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 374, 7);
                try {
                    val = toArrayExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == TO_BYTE) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:375:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 375, 7);
                try {
                    val = toByteExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == TO_DOUBLE) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:376:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 376, 7);
                try {
                    val = toDoubleExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == TO_FLOAT) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:377:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 377, 7);
                try {
                    val = toFloatExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == TO_INT) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:378:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 378, 7);
                try {
                    val = toIntExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == TO_LONG) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:379:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 379, 7);
                try {
                    val = toLongExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == TO_POS) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:380:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 380, 7);
                try {
                    val = toPosExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == TO_EPOCH_SECOND) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:381:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 381, 7);
                try {
                    val = toEpochSecondExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == TO_STRING) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:382:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 382, 7);
                try {
                    val = toStringExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == TO_WSET) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:383:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 383, 7);
                try {
                    val = toWsetExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == TO_BOOL) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:384:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 384, 7);
                try {
                    val = toBoolExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == TRIM) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:385:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 385, 7);
                try {
                    val = trimExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == TRUE || nextTokenType == FALSE) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:386:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 386, 7);
                try {
                    val = literalBoolExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == ZCURVE) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:387:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 387, 7);
                try {
                    val = zcurveExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == UNDERSCORE) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:388:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 388, 7);
                try {
                    val = executionValueExp();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == LPAREN) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:389:9
                consumeToken(LPAREN, false, follow_set$IndexingParser_ccc$389$9);
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:389:18
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 389, 18);
                outerFollowSet = follow_set$IndexingParser_ccc$389$18;
                try {
                    val = statement();
                } finally {
                    popCallStack();
                }
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:389:36
                EnumSet followSet495 = null;
                if (outerFollowSet != null) {
                    followSet495 = follow_set$IndexingParser_ccc$389$36.clone();
                    followSet495.addAll(outerFollowSet);
                }
                consumeToken(RPAREN, false, followSet495);
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:389:45
                val = new ParenthesisExpression(val);
            } else {
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 332, 7);
                throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$332$7, parsingStack);
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:390:5
            return val;
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:393:1
    final public Expression attributeExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "attributeExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:393:1
        attributeExp thisProduction = null;
        if (buildTree) {
            thisProduction = new attributeExp();
            openNodeScope(thisProduction);
        }
        String val = defaultFieldName;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$attributeExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:398:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$398$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(ATTRIBUTE, false, followSet20);
            // Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:398:19
            if (first_set$IndexingParser_ccc$398$21.contains(nextTokenType())) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:398:21
                pushOntoCallStack("attributeExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 398, 21);
                try {
                    val = fieldName();
                } finally {
                    popCallStack();
                }
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:399:5
            return new AttributeExpression(val);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:402:1
    final public Expression base64DecodeExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "base64DecodeExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:402:1
        base64DecodeExp thisProduction = null;
        if (buildTree) {
            thisProduction = new base64DecodeExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$base64DecodeExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:404:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$404$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(BASE64_DECODE, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:405:5
            return new Base64DecodeExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:408:1
    final public Expression base64EncodeExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "base64EncodeExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:408:1
        base64EncodeExp thisProduction = null;
        if (buildTree) {
            thisProduction = new base64EncodeExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$base64EncodeExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:410:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$410$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(BASE64_ENCODE, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:411:5
            return new Base64EncodeExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:414:1
    final public Expression binarizeExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "binarizeExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:414:1
        binarizeExp thisProduction = null;
        if (buildTree) {
            thisProduction = new binarizeExp();
            openNodeScope(thisProduction);
        }
        NumericFieldValue threshold = new DoubleFieldValue(0);
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$binarizeExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:418:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$418$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(BINARIZE, false, followSet20);
            // Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:418:18
            if (first_set$IndexingParser_ccc$418$20.contains(nextTokenType())) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:418:20
                pushOntoCallStack("binarizeExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 418, 20);
                try {
                    threshold = numericValue();
                } finally {
                    popCallStack();
                }
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:419:5
            return new BinarizeExpression(threshold.getNumber().doubleValue());
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:422:1
    final public Expression busy_waitExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "busy_waitExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:422:1
        busy_waitExp thisProduction = null;
        if (buildTree) {
            thisProduction = new busy_waitExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$busy_waitExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:424:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$424$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(BUSY_WAIT, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:425:5
            return new BusyWaitExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:428:1
    final public Expression clearStateExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "clearStateExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:428:1
        clearStateExp thisProduction = null;
        if (buildTree) {
            thisProduction = new clearStateExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$clearStateExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:430:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$430$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(CLEAR_STATE, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:431:5
            return new ClearStateExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:434:1
    final public Expression echoExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "echoExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:434:1
        echoExp thisProduction = null;
        if (buildTree) {
            thisProduction = new echoExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$echoExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:436:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$436$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(ECHO, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:437:5
            return new EchoExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:440:1
    final public Expression embedExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "embedExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:440:1
        embedExp thisProduction = null;
        if (buildTree) {
            thisProduction = new embedExp();
            openNodeScope(thisProduction);
        }
        String embedderId = "";
        String embedderArgument;
        List embedderArguments = new ArrayList();
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$embedExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:448:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$448$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(EMBED, false, followSet20);
            // Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:448:15
            if (scan$IndexingParser_ccc$448$17()) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:448:44
                pushOntoCallStack("embedExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 448, 44);
                if (outerFollowSet != null) {
                    EnumSet newFollowSet = follow_set$IndexingParser_ccc$448$44.clone();
                    newFollowSet.addAll(outerFollowSet);
                    outerFollowSet = newFollowSet;
                }
                try {
                    embedderId = identifierStr();
                } finally {
                    popCallStack();
                }
            }
            // Code for ZeroOrMore specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:449:7
            while (true) {
                if (!(scan$IndexingParser_ccc$449$9())) break;
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:449:36
                pushOntoCallStack("embedExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 449, 36);
                if (outerFollowSet != null) {
                    EnumSet newFollowSet = follow_set$IndexingParser_ccc$449$36.clone();
                    newFollowSet.addAll(outerFollowSet);
                    outerFollowSet = newFollowSet;
                }
                try {
                    embedderArgument = identifierStr();
                } finally {
                    popCallStack();
                }
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:449:72
                embedderArguments.add(embedderArgument);
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:451:5
            // return new EmbedExpression(embedders, embedderId, embedderArguments);
            return null;
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:457:1
    final public Expression exactExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "exactExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:457:1
        exactExp thisProduction = null;
        if (buildTree) {
            thisProduction = new exactExp();
            openNodeScope(thisProduction);
        }
        int maxTokenLength = annotatorCfg.getMaxTokenLength();
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$exactExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:462:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$462$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(EXACT, false, followSet20);
            // Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:462:16
            if (nextTokenType() == MAX_TOKEN_LENGTH) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:462:18
                consumeToken(MAX_TOKEN_LENGTH, false, follow_set$IndexingParser_ccc$462$18);
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:462:37
                consumeToken(COLON, false, follow_set$IndexingParser_ccc$462$37);
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:462:45
                pushOntoCallStack("exactExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 462, 45);
                try {
                    maxTokenLength = integerValue();
                } finally {
                    popCallStack();
                }
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:463:5
            return new ExactExpression(maxTokenLength);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:466:1
    final public Expression flattenExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "flattenExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:466:1
        flattenExp thisProduction = null;
        if (buildTree) {
            thisProduction = new flattenExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$flattenExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:468:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$468$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(FLATTEN, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:469:5
            return new FlattenExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:472:1
    final public Expression forEachExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "forEachExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:472:1
        forEachExp thisProduction = null;
        if (buildTree) {
            thisProduction = new forEachExp();
            openNodeScope(thisProduction);
        }
        Expression val;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$forEachExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:477:7
            consumeToken(FOR_EACH, false, follow_set$IndexingParser_ccc$477$7);
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:477:18
            consumeToken(LCURLY, false, follow_set$IndexingParser_ccc$477$18);
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:477:27
            pushOntoCallStack("forEachExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 477, 27);
            outerFollowSet = follow_set$IndexingParser_ccc$477$27;
            try {
                consumeNL();
            } finally {
                popCallStack();
            }
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:477:39
            pushOntoCallStack("forEachExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 477, 39);
            outerFollowSet = follow_set$IndexingParser_ccc$477$39;
            try {
                val = statement();
            } finally {
                popCallStack();
            }
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:477:57
            pushOntoCallStack("forEachExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 477, 57);
            outerFollowSet = follow_set$IndexingParser_ccc$477$57;
            try {
                consumeNL();
            } finally {
                popCallStack();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:477:69
            EnumSet followSet40 = null;
            if (outerFollowSet != null) {
                followSet40 = follow_set$IndexingParser_ccc$477$69.clone();
                followSet40.addAll(outerFollowSet);
            }
            consumeToken(RCURLY, false, followSet40);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:478:5
            return new ForEachExpression(val);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:481:1
    final public Expression getFieldExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "getFieldExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:481:1
        getFieldExp thisProduction = null;
        if (buildTree) {
            thisProduction = new getFieldExp();
            openNodeScope(thisProduction);
        }
        String val;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$getFieldExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:486:7
            consumeToken(GET_FIELD, false, follow_set$IndexingParser_ccc$486$7);
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:486:19
            pushOntoCallStack("getFieldExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 486, 19);
            try {
                val = identifierStr();
            } finally {
                popCallStack();
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:487:5
            return new GetFieldExpression(val);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:490:1
    final public Expression getVarExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "getVarExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:490:1
        getVarExp thisProduction = null;
        if (buildTree) {
            thisProduction = new getVarExp();
            openNodeScope(thisProduction);
        }
        String val;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$getVarExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:495:7
            consumeToken(GET_VAR, false, follow_set$IndexingParser_ccc$495$7);
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:495:17
            pushOntoCallStack("getVarExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 495, 17);
            try {
                val = identifierStr();
            } finally {
                popCallStack();
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:496:5
            return new GetVarExpression(val);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:499:1
    final public Expression guardExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "guardExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:499:1
        guardExp thisProduction = null;
        if (buildTree) {
            thisProduction = new guardExp();
            openNodeScope(thisProduction);
        }
        Expression val;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$guardExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:504:7
            consumeToken(GUARD, false, follow_set$IndexingParser_ccc$504$7);
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:504:15
            pushOntoCallStack("guardExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 504, 15);
            try {
                val = script();
            } finally {
                popCallStack();
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:505:5
            return new GuardExpression(val);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:508:1
    final public Expression hashExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "hashExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:508:1
        hashExp thisProduction = null;
        if (buildTree) {
            thisProduction = new hashExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$hashExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:510:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$510$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(HASH, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:511:5
            return new HashExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:514:1
    final public Expression hexDecodeExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "hexDecodeExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:514:1
        hexDecodeExp thisProduction = null;
        if (buildTree) {
            thisProduction = new hexDecodeExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$hexDecodeExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:516:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$516$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(HEX_DECODE, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:517:5
            return new HexDecodeExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:520:1
    final public Expression hexEncodeExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "hexEncodeExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:520:1
        hexEncodeExp thisProduction = null;
        if (buildTree) {
            thisProduction = new hexEncodeExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$hexEncodeExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:522:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$522$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(HEX_ENCODE, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:523:5
            return new HexEncodeExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:526:1
    final public Expression hostNameExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "hostNameExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:526:1
        hostNameExp thisProduction = null;
        if (buildTree) {
            thisProduction = new hostNameExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$hostNameExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:528:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$528$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(HOST_NAME, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:529:5
            return new HostNameExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:532:1
    final public Expression ifThenExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "ifThenExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:532:1
        ifThenExp thisProduction = null;
        if (buildTree) {
            thisProduction = new ifThenExp();
            openNodeScope(thisProduction);
        }
        Expression lhs, rhs, ifTrue, ifFalse = null;
        IfThenExpression.Comparator cmp;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$ifThenExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:538:7
            consumeToken(IF, false, follow_set$IndexingParser_ccc$538$7);
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:538:12
            consumeToken(LPAREN, false, follow_set$IndexingParser_ccc$538$12);
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:538:21
            pushOntoCallStack("ifThenExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 538, 21);
            outerFollowSet = follow_set$IndexingParser_ccc$538$21;
            try {
                lhs = expression();
            } finally {
                popCallStack();
            }
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:538:40
            pushOntoCallStack("ifThenExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 538, 40);
            outerFollowSet = follow_set$IndexingParser_ccc$538$40;
            try {
                cmp = ifThenCmp();
            } finally {
                popCallStack();
            }
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:538:58
            pushOntoCallStack("ifThenExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 538, 58);
            outerFollowSet = follow_set$IndexingParser_ccc$538$58;
            try {
                rhs = expression();
            } finally {
                popCallStack();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:538:77
            consumeToken(RPAREN, false, follow_set$IndexingParser_ccc$538$77);
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:539:7
            pushOntoCallStack("ifThenExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 539, 7);
            if (outerFollowSet != null) {
                EnumSet newFollowSet = follow_set$IndexingParser_ccc$539$7.clone();
                newFollowSet.addAll(outerFollowSet);
                outerFollowSet = newFollowSet;
            }
            try {
                ifTrue = script();
            } finally {
                popCallStack();
            }
            // Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:539:25
            if (nextTokenType() == ELSE) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:539:27
                consumeToken(ELSE, false, follow_set$IndexingParser_ccc$539$27);
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:539:34
                pushOntoCallStack("ifThenExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 539, 34);
                try {
                    ifFalse = script();
                } finally {
                    popCallStack();
                }
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:540:5
            return new IfThenExpression(lhs, cmp, rhs, ifTrue, ifFalse);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:543:1
    final public IfThenExpression.Comparator ifThenCmp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "ifThenCmp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:543:1
        ifThenCmp thisProduction = null;
        if (buildTree) {
            thisProduction = new ifThenCmp();
            openNodeScope(thisProduction);
        }
        IfThenExpression.Comparator val = null;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$ifThenCmp();
            }
            if (nextTokenType() == EQ) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:548:7
                EnumSet followSet24 = null;
                if (outerFollowSet != null) {
                    followSet24 = follow_set$IndexingParser_ccc$548$7.clone();
                    followSet24.addAll(outerFollowSet);
                }
                consumeToken(EQ, false, followSet24);
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:548:12
                val = IfThenExpression.Comparator.EQ;
            } else if (nextTokenType() == NE) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:549:7
                EnumSet followSet35 = null;
                if (outerFollowSet != null) {
                    followSet35 = follow_set$IndexingParser_ccc$549$7.clone();
                    followSet35.addAll(outerFollowSet);
                }
                consumeToken(NE, false, followSet35);
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:549:12
                val = IfThenExpression.Comparator.NE;
            } else if (nextTokenType() == LE) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:550:7
                EnumSet followSet46 = null;
                if (outerFollowSet != null) {
                    followSet46 = follow_set$IndexingParser_ccc$550$7.clone();
                    followSet46.addAll(outerFollowSet);
                }
                consumeToken(LE, false, followSet46);
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:550:12
                val = IfThenExpression.Comparator.LE;
            } else if (nextTokenType() == LT) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:551:7
                EnumSet followSet57 = null;
                if (outerFollowSet != null) {
                    followSet57 = follow_set$IndexingParser_ccc$551$7.clone();
                    followSet57.addAll(outerFollowSet);
                }
                consumeToken(LT, false, followSet57);
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:551:12
                val = IfThenExpression.Comparator.LT;
            } else if (nextTokenType() == GE) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:552:7
                EnumSet followSet68 = null;
                if (outerFollowSet != null) {
                    followSet68 = follow_set$IndexingParser_ccc$552$7.clone();
                    followSet68.addAll(outerFollowSet);
                }
                consumeToken(GE, false, followSet68);
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:552:12
                val = IfThenExpression.Comparator.GE;
            } else if (nextTokenType() == GT) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:553:7
                EnumSet followSet79 = null;
                if (outerFollowSet != null) {
                    followSet79 = follow_set$IndexingParser_ccc$553$7.clone();
                    followSet79.addAll(outerFollowSet);
                }
                consumeToken(GT, false, followSet79);
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:553:12
                val = IfThenExpression.Comparator.GT;
            } else {
                pushOntoCallStack("ifThenCmp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 548, 7);
                throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$548$7$, parsingStack);
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:554:5
            return val;
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:557:1
    final public Expression indexExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "indexExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:557:1
        indexExp thisProduction = null;
        if (buildTree) {
            thisProduction = new indexExp();
            openNodeScope(thisProduction);
        }
        String val = defaultFieldName;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$indexExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:562:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$562$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(INDEX, false, followSet20);
            // Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:562:15
            if (first_set$IndexingParser_ccc$562$17.contains(nextTokenType())) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:562:17
                pushOntoCallStack("indexExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 562, 17);
                try {
                    val = fieldName();
                } finally {
                    popCallStack();
                }
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:563:5
            return new IndexExpression(val);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:566:1
    final public Expression inputExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "inputExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:566:1
        inputExp thisProduction = null;
        if (buildTree) {
            thisProduction = new inputExp();
            openNodeScope(thisProduction);
        }
        String val = defaultFieldName;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$inputExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:571:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$571$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(INPUT, false, followSet20);
            // Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:571:15
            if (first_set$IndexingParser_ccc$571$17.contains(nextTokenType())) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:571:17
                pushOntoCallStack("inputExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 571, 17);
                try {
                    val = identifierStr();
                } finally {
                    popCallStack();
                }
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:572:5
            return new InputExpression(val);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:575:1
    final public Expression joinExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "joinExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:575:1
        joinExp thisProduction = null;
        if (buildTree) {
            thisProduction = new joinExp();
            openNodeScope(thisProduction);
        }
        String val;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$joinExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:580:7
            consumeToken(JOIN, false, follow_set$IndexingParser_ccc$580$7);
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:580:14
            pushOntoCallStack("joinExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 580, 14);
            try {
                val = stringLiteral();
            } finally {
                popCallStack();
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:581:5
            return new JoinExpression(val);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:584:1
    final public Expression lowerCaseExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "lowerCaseExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:584:1
        lowerCaseExp thisProduction = null;
        if (buildTree) {
            thisProduction = new lowerCaseExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$lowerCaseExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:586:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$586$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(LOWER_CASE, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:587:5
            return new LowerCaseExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:590:1
    final public Expression ngramExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "ngramExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:590:1
        ngramExp thisProduction = null;
        if (buildTree) {
            thisProduction = new ngramExp();
            openNodeScope(thisProduction);
        }
        int gramSize;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$ngramExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:595:7
            consumeToken(NGRAM, false, follow_set$IndexingParser_ccc$595$7);
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:595:15
            pushOntoCallStack("ngramExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 595, 15);
            try {
                gramSize = integerValue();
            } finally {
                popCallStack();
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:596:5
            return new NGramExpression(linguistics, gramSize);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:599:1
    final public Expression normalizeExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "normalizeExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:599:1
        normalizeExp thisProduction = null;
        if (buildTree) {
            thisProduction = new normalizeExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$normalizeExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:601:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$601$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(NORMALIZE, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:602:5
            return new NormalizeExpression(linguistics);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:605:1
    final public Expression nowExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "nowExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:605:1
        nowExp thisProduction = null;
        if (buildTree) {
            thisProduction = new nowExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$nowExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:607:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$607$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(NOW, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:608:5
            return new NowExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:611:1
    final public Expression optimizePredicateExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "optimizePredicateExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:611:1
        optimizePredicateExp thisProduction = null;
        if (buildTree) {
            thisProduction = new optimizePredicateExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$optimizePredicateExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:613:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$613$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(OPTIMIZE_PREDICATE, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:614:5
            return new OptimizePredicateExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:617:1
    final public Expression packBitsExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "packBitsExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:617:1
        packBitsExp thisProduction = null;
        if (buildTree) {
            thisProduction = new packBitsExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$packBitsExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:619:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$619$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(PACK_BITS, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:620:5
            return new PackBitsExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:623:1
    final public Expression passthroughExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "passthroughExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:623:1
        passthroughExp thisProduction = null;
        if (buildTree) {
            thisProduction = new passthroughExp();
            openNodeScope(thisProduction);
        }
        String val = defaultFieldName;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$passthroughExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:628:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$628$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(PASSTHROUGH, false, followSet20);
            // Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:628:21
            if (first_set$IndexingParser_ccc$628$23.contains(nextTokenType())) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:628:23
                pushOntoCallStack("passthroughExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 628, 23);
                try {
                    val = fieldName();
                } finally {
                    popCallStack();
                }
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:629:5
            return new PassthroughExpression(val);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:632:1
    final public Expression randomExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "randomExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:632:1
        randomExp thisProduction = null;
        if (buildTree) {
            thisProduction = new randomExp();
            openNodeScope(thisProduction);
        }
        Integer val = null;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$randomExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:637:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$637$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(RANDOM, false, followSet20);
            // Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:637:16
            if (scan$IndexingParser_ccc$637$18()) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:637:41
                pushOntoCallStack("randomExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 637, 41);
                try {
                    val = integerValue();
                } finally {
                    popCallStack();
                }
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:638:5
            return new RandomExpression(val);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:641:1
    final public Expression selectInputExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "selectInputExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:641:1
        selectInputExp thisProduction = null;
        if (buildTree) {
            thisProduction = new selectInputExp();
            openNodeScope(thisProduction);
        }
        List> cases = new ArrayList>();
        Expression exp;
        String str;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$selectInputExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:648:7
            consumeToken(SELECT_INPUT, false, follow_set$IndexingParser_ccc$648$7);
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:648:22
            consumeToken(LCURLY, false, follow_set$IndexingParser_ccc$648$22);
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:648:31
            pushOntoCallStack("selectInputExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 648, 31);
            outerFollowSet = follow_set$IndexingParser_ccc$648$31;
            try {
                consumeNL();
            } finally {
                popCallStack();
            }
            // Code for OneOrMore specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:648:43
            while (true) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:648:45
                pushOntoCallStack("selectInputExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 648, 45);
                outerFollowSet = follow_set$IndexingParser_ccc$648$45;
                try {
                    str = identifierStr();
                } finally {
                    popCallStack();
                }
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:648:67
                consumeToken(COLON, false, follow_set$IndexingParser_ccc$648$67);
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:648:75
                pushOntoCallStack("selectInputExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 648, 75);
                outerFollowSet = follow_set$IndexingParser_ccc$648$75;
                try {
                    exp = statement();
                } finally {
                    popCallStack();
                }
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:648:93
                consumeToken(SCOLON, false, follow_set$IndexingParser_ccc$648$93);
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:648:102
                pushOntoCallStack("selectInputExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 648, 102);
                outerFollowSet = follow_set$IndexingParser_ccc$648$102;
                try {
                    consumeNL();
                } finally {
                    popCallStack();
                }
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:649:7
                cases.add(new Pair(str, exp));
                if (!(first_set$IndexingParser_ccc$648$45$.contains(nextTokenType()))) break;
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:649:65
            EnumSet followSet62 = null;
            if (outerFollowSet != null) {
                followSet62 = follow_set$IndexingParser_ccc$649$65.clone();
                followSet62.addAll(outerFollowSet);
            }
            consumeToken(RCURLY, false, followSet62);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:650:5
            return new SelectInputExpression(cases);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:653:1
    final public Expression setLanguageExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "setLanguageExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:653:1
        setLanguageExp thisProduction = null;
        if (buildTree) {
            thisProduction = new setLanguageExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$setLanguageExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:655:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$655$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(SET_LANGUAGE, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:656:5
            return new SetLanguageExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:659:1
    final public Expression setValueExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "setValueExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:659:1
        setValueExp thisProduction = null;
        if (buildTree) {
            thisProduction = new setValueExp();
            openNodeScope(thisProduction);
        }
        FieldValue val;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$setValueExp();
            }
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:664:7
            pushOntoCallStack("setValueExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 664, 7);
            try {
                val = fieldValue();
            } finally {
                popCallStack();
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:665:5
            return new ConstantExpression(val);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:668:1
    final public Expression setVarExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "setVarExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:668:1
        setVarExp thisProduction = null;
        if (buildTree) {
            thisProduction = new setVarExp();
            openNodeScope(thisProduction);
        }
        String val;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$setVarExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:673:7
            consumeToken(SET_VAR, false, follow_set$IndexingParser_ccc$673$7);
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:673:17
            pushOntoCallStack("setVarExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 673, 17);
            try {
                val = identifierStr();
            } finally {
                popCallStack();
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:674:5
            return new SetVarExpression(val);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:677:1
    final public Expression sleepExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "sleepExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:677:1
        sleepExp thisProduction = null;
        if (buildTree) {
            thisProduction = new sleepExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$sleepExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:679:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$679$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(SLEEP, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:680:5
            return new SleepExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:683:1
    final public Expression splitExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "splitExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:683:1
        splitExp thisProduction = null;
        if (buildTree) {
            thisProduction = new splitExp();
            openNodeScope(thisProduction);
        }
        String val;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$splitExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:688:7
            consumeToken(SPLIT, false, follow_set$IndexingParser_ccc$688$7);
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:688:15
            pushOntoCallStack("splitExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 688, 15);
            try {
                val = stringLiteral();
            } finally {
                popCallStack();
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:689:5
            return new SplitExpression(val);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:692:1
    final public Expression substringExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "substringExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:692:1
        substringExp thisProduction = null;
        if (buildTree) {
            thisProduction = new substringExp();
            openNodeScope(thisProduction);
        }
        long from, to;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$substringExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:697:7
            consumeToken(SUBSTRING, false, follow_set$IndexingParser_ccc$697$7);
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:697:19
            pushOntoCallStack("substringExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 697, 19);
            outerFollowSet = follow_set$IndexingParser_ccc$697$19;
            try {
                from = integerValue();
            } finally {
                popCallStack();
            }
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:697:41
            pushOntoCallStack("substringExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 697, 41);
            try {
                to = integerValue();
            } finally {
                popCallStack();
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:698:5
            return new SubstringExpression((int) from, (int) to);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:701:1
    final public Expression summaryExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "summaryExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:701:1
        summaryExp thisProduction = null;
        if (buildTree) {
            thisProduction = new summaryExp();
            openNodeScope(thisProduction);
        }
        String val = defaultFieldName;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$summaryExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:706:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$706$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(SUMMARY, false, followSet20);
            // Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:706:17
            if (first_set$IndexingParser_ccc$706$19.contains(nextTokenType())) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:706:19
                pushOntoCallStack("summaryExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 706, 19);
                try {
                    val = fieldName();
                } finally {
                    popCallStack();
                }
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:707:5
            return new SummaryExpression(val);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:710:1
    final public Expression switchExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "switchExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:710:1
        switchExp thisProduction = null;
        if (buildTree) {
            thisProduction = new switchExp();
            openNodeScope(thisProduction);
        }
        Map cases = new LinkedHashMap();
        Expression exp, defaultExp = null;
        String str;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$switchExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:717:7
            consumeToken(SWITCH, false, follow_set$IndexingParser_ccc$717$7);
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:717:16
            consumeToken(LCURLY, false, follow_set$IndexingParser_ccc$717$16);
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:717:25
            pushOntoCallStack("switchExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 717, 25);
            outerFollowSet = follow_set$IndexingParser_ccc$717$25;
            try {
                consumeNL();
            } finally {
                popCallStack();
            }
            // Code for OneOrMore specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:718:7
            while (true) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:718:9
                consumeToken(CASE, false, follow_set$IndexingParser_ccc$718$9);
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:718:16
                pushOntoCallStack("switchExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 718, 16);
                outerFollowSet = follow_set$IndexingParser_ccc$718$16;
                try {
                    str = stringLiteral();
                } finally {
                    popCallStack();
                }
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:718:38
                consumeToken(COLON, false, follow_set$IndexingParser_ccc$718$38);
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:718:46
                pushOntoCallStack("switchExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 718, 46);
                outerFollowSet = follow_set$IndexingParser_ccc$718$46;
                try {
                    exp = statement();
                } finally {
                    popCallStack();
                }
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:718:64
                cases.put(str, exp);
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:718:89
                consumeToken(SCOLON, false, follow_set$IndexingParser_ccc$718$89);
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:718:98
                pushOntoCallStack("switchExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 718, 98);
                outerFollowSet = follow_set$IndexingParser_ccc$718$98;
                try {
                    consumeNL();
                } finally {
                    popCallStack();
                }
                if (!(nextTokenType() == CASE)) break;
            }
            // Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:719:7
            if (nextTokenType() == CASE_DEFAULT) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:719:9
                consumeToken(CASE_DEFAULT, false, follow_set$IndexingParser_ccc$719$9);
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:719:24
                consumeToken(COLON, false, follow_set$IndexingParser_ccc$719$24);
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:719:32
                pushOntoCallStack("switchExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 719, 32);
                outerFollowSet = follow_set$IndexingParser_ccc$719$32;
                try {
                    defaultExp = statement();
                } finally {
                    popCallStack();
                }
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:719:57
                consumeToken(SCOLON, false, follow_set$IndexingParser_ccc$719$57);
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:719:66
                pushOntoCallStack("switchExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 719, 66);
                outerFollowSet = follow_set$IndexingParser_ccc$719$66;
                try {
                    consumeNL();
                } finally {
                    popCallStack();
                }
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:720:7
            EnumSet followSet94 = null;
            if (outerFollowSet != null) {
                followSet94 = follow_set$IndexingParser_ccc$720$7.clone();
                followSet94.addAll(outerFollowSet);
            }
            consumeToken(RCURLY, false, followSet94);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:721:5
            return new SwitchExpression(cases, defaultExp);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:724:1
    final public Expression thisExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "thisExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:724:1
        thisExp thisProduction = null;
        if (buildTree) {
            thisProduction = new thisExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$thisExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:726:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$726$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(THIS, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:727:5
            return new ThisExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:730:1
    final public Expression tokenizeExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "tokenizeExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:730:1
        tokenizeExp thisProduction = null;
        if (buildTree) {
            thisProduction = new tokenizeExp();
            openNodeScope(thisProduction);
        }
        AnnotatorConfig cfg = annotatorCfg;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$tokenizeExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:735:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$735$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(TOKENIZE, false, followSet20);
            // Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:735:18
            if (first_set$IndexingParser_ccc$735$20.contains(nextTokenType())) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:735:20
                pushOntoCallStack("tokenizeExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 735, 20);
                try {
                    cfg = tokenizeCfg();
                } finally {
                    popCallStack();
                }
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:736:5
            return new TokenizeExpression(linguistics, cfg);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:739:1
    final public AnnotatorConfig tokenizeCfg() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "tokenizeCfg";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:739:1
        tokenizeCfg thisProduction = null;
        if (buildTree) {
            thisProduction = new tokenizeCfg();
            openNodeScope(thisProduction);
        }
        AnnotatorConfig val = new AnnotatorConfig(annotatorCfg);
        String str = "SHORTEST";
        Integer maxLength;
        Integer maxTermOccurrences;
        Integer maxTokenLength;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$tokenizeCfg();
            }
            // Code for OneOrMore specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:748:5
            boolean inFirst0 = true;
            while (true) {
                // Code for ExpansionChoice specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:748:7
                if (nextTokenType() == STEM) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:748:7
                    EnumSet followSet25 = null;
                    if (outerFollowSet != null) {
                        followSet25 = follow_set$IndexingParser_ccc$748$7.clone();
                        followSet25.addAll(outerFollowSet);
                    }
                    consumeToken(STEM, false, followSet25);
                    // Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:748:14
                    if (nextTokenType() == COLON) {
                        // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:748:16
                        consumeToken(COLON, false, follow_set$IndexingParser_ccc$748$16);
                        // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:748:24
                        pushOntoCallStack("tokenizeCfg", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 748, 24);
                        if (outerFollowSet != null) {
                            EnumSet newFollowSet = follow_set$IndexingParser_ccc$748$24.clone();
                            newFollowSet.addAll(outerFollowSet);
                            outerFollowSet = newFollowSet;
                        }
                        try {
                            str = stringLiteral();
                        } finally {
                            popCallStack();
                        }
                    }
                    // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:748:50
                    val.setStemMode(str);
                } else if (nextTokenType() == MAX_LENGTH) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:749:7
                    consumeToken(MAX_LENGTH, false, follow_set$IndexingParser_ccc$749$7);
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:749:20
                    consumeToken(COLON, false, follow_set$IndexingParser_ccc$749$20);
                    // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:749:29
                    pushOntoCallStack("tokenizeCfg", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 749, 29);
                    if (outerFollowSet != null) {
                        EnumSet newFollowSet = follow_set$IndexingParser_ccc$749$29.clone();
                        newFollowSet.addAll(outerFollowSet);
                        outerFollowSet = newFollowSet;
                    }
                    try {
                        maxLength = integerValue();
                    } finally {
                        popCallStack();
                    }
                    // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:749:56
                    val.setMaxTokenizeLength(maxLength);
                } else if (nextTokenType() == MAX_OCCURRENCES) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:750:7
                    consumeToken(MAX_OCCURRENCES, false, follow_set$IndexingParser_ccc$750$7);
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:750:25
                    consumeToken(COLON, false, follow_set$IndexingParser_ccc$750$25);
                    // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:750:34
                    pushOntoCallStack("tokenizeCfg", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 750, 34);
                    if (outerFollowSet != null) {
                        EnumSet newFollowSet = follow_set$IndexingParser_ccc$750$34.clone();
                        newFollowSet.addAll(outerFollowSet);
                        outerFollowSet = newFollowSet;
                    }
                    try {
                        maxTermOccurrences = integerValue();
                    } finally {
                        popCallStack();
                    }
                    // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:750:70
                    val.setMaxTermOccurrences(maxTermOccurrences);
                } else if (nextTokenType() == MAX_TOKEN_LENGTH) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:751:7
                    consumeToken(MAX_TOKEN_LENGTH, false, follow_set$IndexingParser_ccc$751$7);
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:751:26
                    consumeToken(COLON, false, follow_set$IndexingParser_ccc$751$26);
                    // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:751:34
                    pushOntoCallStack("tokenizeCfg", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 751, 34);
                    if (outerFollowSet != null) {
                        EnumSet newFollowSet = follow_set$IndexingParser_ccc$751$34.clone();
                        newFollowSet.addAll(outerFollowSet);
                        outerFollowSet = newFollowSet;
                    }
                    try {
                        maxTokenLength = integerValue();
                    } finally {
                        popCallStack();
                    }
                    // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:751:66
                    val.setMaxTokenLength(maxTokenLength);
                } else if (nextTokenType() == NORMALIZE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:752:7
                    EnumSet followSet106 = null;
                    if (outerFollowSet != null) {
                        followSet106 = follow_set$IndexingParser_ccc$752$7.clone();
                        followSet106.addAll(outerFollowSet);
                    }
                    consumeToken(NORMALIZE, false, followSet106);
                    // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:752:19
                    val.setRemoveAccents(true);
                } else if (inFirst0) {
                    pushOntoCallStack("tokenizeCfg", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 748, 7);
                    throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$748$7$, parsingStack);
                } else {
                    break;
                }
                inFirst0 = false;
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:753:5
            return val;
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:756:1
    final public Expression toArrayExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "toArrayExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:756:1
        toArrayExp thisProduction = null;
        if (buildTree) {
            thisProduction = new toArrayExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$toArrayExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:758:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$758$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(TO_ARRAY, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:759:5
            return new ToArrayExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:762:1
    final public Expression toByteExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "toByteExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:762:1
        toByteExp thisProduction = null;
        if (buildTree) {
            thisProduction = new toByteExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$toByteExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:764:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$764$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(TO_BYTE, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:765:5
            return new ToByteExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:768:1
    final public Expression toDoubleExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "toDoubleExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:768:1
        toDoubleExp thisProduction = null;
        if (buildTree) {
            thisProduction = new toDoubleExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$toDoubleExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:770:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$770$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(TO_DOUBLE, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:771:5
            return new ToDoubleExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:774:1
    final public Expression toFloatExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "toFloatExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:774:1
        toFloatExp thisProduction = null;
        if (buildTree) {
            thisProduction = new toFloatExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$toFloatExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:776:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$776$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(TO_FLOAT, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:777:5
            return new ToFloatExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:780:1
    final public Expression toIntExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "toIntExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:780:1
        toIntExp thisProduction = null;
        if (buildTree) {
            thisProduction = new toIntExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$toIntExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:782:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$782$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(TO_INT, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:783:5
            return new ToIntegerExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:786:1
    final public Expression toLongExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "toLongExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:786:1
        toLongExp thisProduction = null;
        if (buildTree) {
            thisProduction = new toLongExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$toLongExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:788:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$788$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(TO_LONG, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:789:5
            return new ToLongExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:792:1
    final public Expression toPosExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "toPosExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:792:1
        toPosExp thisProduction = null;
        if (buildTree) {
            thisProduction = new toPosExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$toPosExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:794:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$794$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(TO_POS, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:795:5
            return new ToPositionExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:798:1
    final public Expression toEpochSecondExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "toEpochSecondExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:798:1
        toEpochSecondExp thisProduction = null;
        if (buildTree) {
            thisProduction = new toEpochSecondExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$toEpochSecondExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:800:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$800$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(TO_EPOCH_SECOND, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:801:5
            return new ToEpochSecondExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:804:1
    final public Expression toStringExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "toStringExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:804:1
        toStringExp thisProduction = null;
        if (buildTree) {
            thisProduction = new toStringExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$toStringExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:806:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$806$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(TO_STRING, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:807:5
            return new ToStringExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:810:1
    final public Expression toWsetExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "toWsetExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:810:1
        toWsetExp thisProduction = null;
        if (buildTree) {
            thisProduction = new toWsetExp();
            openNodeScope(thisProduction);
        }
        boolean createIfNonExistent = false;
        boolean removeIfZero = false;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$toWsetExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:816:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$816$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(TO_WSET, false, followSet20);
            // Code for ZeroOrMore specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:816:17
            while (true) {
                // Code for ExpansionChoice specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:816:19
                if (nextTokenType() == CREATE_IF_NON_EXISTENT) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:816:19
                    EnumSet followSet37 = null;
                    if (outerFollowSet != null) {
                        followSet37 = follow_set$IndexingParser_ccc$816$19.clone();
                        followSet37.addAll(outerFollowSet);
                    }
                    consumeToken(CREATE_IF_NON_EXISTENT, false, followSet37);
                    // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:816:44
                    createIfNonExistent = true;
                } else if (nextTokenType() == REMOVE_IF_ZERO) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:817:19
                    EnumSet followSet48 = null;
                    if (outerFollowSet != null) {
                        followSet48 = follow_set$IndexingParser_ccc$817$19.clone();
                        followSet48.addAll(outerFollowSet);
                    }
                    consumeToken(REMOVE_IF_ZERO, false, followSet48);
                    // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:817:44
                    removeIfZero = true;
                } else {
                    break;
                }
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:818:5
            return new ToWsetExpression(createIfNonExistent, removeIfZero);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:821:1
    final public Expression toBoolExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "toBoolExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:821:1
        toBoolExp thisProduction = null;
        if (buildTree) {
            thisProduction = new toBoolExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$toBoolExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:823:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$823$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(TO_BOOL, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:824:5
            return new ToBoolExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:827:1
    final public Expression trimExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "trimExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:827:1
        trimExp thisProduction = null;
        if (buildTree) {
            thisProduction = new trimExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$trimExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:829:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$829$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(TRIM, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:830:5
            return new TrimExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:833:1
    final public Expression literalBoolExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "literalBoolExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:833:1
        literalBoolExp thisProduction = null;
        if (buildTree) {
            thisProduction = new literalBoolExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$literalBoolExp();
            }
            if (nextTokenType() == TRUE) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:835:7
                EnumSet followSet24 = null;
                if (outerFollowSet != null) {
                    followSet24 = follow_set$IndexingParser_ccc$835$7.clone();
                    followSet24.addAll(outerFollowSet);
                }
                consumeToken(TRUE, false, followSet24);
            } else if (nextTokenType() == FALSE) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:835:16
                EnumSet followSet33 = null;
                if (outerFollowSet != null) {
                    followSet33 = follow_set$IndexingParser_ccc$835$16.clone();
                    followSet33.addAll(outerFollowSet);
                }
                consumeToken(FALSE, false, followSet33);
            } else {
                pushOntoCallStack("literalBoolExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 835, 7);
                throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$835$7$, parsingStack);
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:836:5
            return new LiteralBoolExpression(Boolean.parseBoolean(lastConsumedToken.toString()));
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:839:1
    final public Expression zcurveExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "zcurveExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:839:1
        zcurveExp thisProduction = null;
        if (buildTree) {
            thisProduction = new zcurveExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$zcurveExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:841:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$841$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(ZCURVE, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:842:5
            return new ZCurveExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:845:1
    final public Expression executionValueExp() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "executionValueExp";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:845:1
        executionValueExp thisProduction = null;
        if (buildTree) {
            thisProduction = new executionValueExp();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$executionValueExp();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:847:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$847$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(UNDERSCORE, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:848:5
            return new ExecutionValueExpression();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:851:1
    final public String identifierStr() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "identifierStr";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:851:1
        identifierStr thisProduction = null;
        if (buildTree) {
            thisProduction = new identifierStr();
            openNodeScope(thisProduction);
        }
        String val;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$identifierStr();
            }
            if (nextTokenType() == STRING) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:856:7
                pushOntoCallStack("identifierStr", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 856, 7);
                try {
                    val = stringLiteral();
                } finally {
                    popCallStack();
                }
            } else if (first_set$IndexingParser_ccc$857$7.contains(nextTokenType())) {
                if (nextTokenType() == ATTRIBUTE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:857:9
                    EnumSet followSet43 = null;
                    if (outerFollowSet != null) {
                        followSet43 = follow_set$IndexingParser_ccc$857$9.clone();
                        followSet43.addAll(outerFollowSet);
                    }
                    consumeToken(ATTRIBUTE, false, followSet43);
                } else if (nextTokenType() == BASE64_DECODE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:858:9
                    EnumSet followSet52 = null;
                    if (outerFollowSet != null) {
                        followSet52 = follow_set$IndexingParser_ccc$858$9.clone();
                        followSet52.addAll(outerFollowSet);
                    }
                    consumeToken(BASE64_DECODE, false, followSet52);
                } else if (nextTokenType() == BASE64_ENCODE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:859:9
                    EnumSet followSet61 = null;
                    if (outerFollowSet != null) {
                        followSet61 = follow_set$IndexingParser_ccc$859$9.clone();
                        followSet61.addAll(outerFollowSet);
                    }
                    consumeToken(BASE64_ENCODE, false, followSet61);
                } else if (nextTokenType() == BINARIZE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:860:9
                    EnumSet followSet70 = null;
                    if (outerFollowSet != null) {
                        followSet70 = follow_set$IndexingParser_ccc$860$9.clone();
                        followSet70.addAll(outerFollowSet);
                    }
                    consumeToken(BINARIZE, false, followSet70);
                } else if (nextTokenType() == BUSY_WAIT) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:861:9
                    EnumSet followSet79 = null;
                    if (outerFollowSet != null) {
                        followSet79 = follow_set$IndexingParser_ccc$861$9.clone();
                        followSet79.addAll(outerFollowSet);
                    }
                    consumeToken(BUSY_WAIT, false, followSet79);
                } else if (nextTokenType() == CASE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:862:9
                    EnumSet followSet88 = null;
                    if (outerFollowSet != null) {
                        followSet88 = follow_set$IndexingParser_ccc$862$9.clone();
                        followSet88.addAll(outerFollowSet);
                    }
                    consumeToken(CASE, false, followSet88);
                } else if (nextTokenType() == CASE_DEFAULT) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:863:9
                    EnumSet followSet97 = null;
                    if (outerFollowSet != null) {
                        followSet97 = follow_set$IndexingParser_ccc$863$9.clone();
                        followSet97.addAll(outerFollowSet);
                    }
                    consumeToken(CASE_DEFAULT, false, followSet97);
                } else if (nextTokenType() == CLEAR_STATE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:864:9
                    EnumSet followSet106 = null;
                    if (outerFollowSet != null) {
                        followSet106 = follow_set$IndexingParser_ccc$864$9.clone();
                        followSet106.addAll(outerFollowSet);
                    }
                    consumeToken(CLEAR_STATE, false, followSet106);
                } else if (nextTokenType() == CREATE_IF_NON_EXISTENT) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:865:9
                    EnumSet followSet115 = null;
                    if (outerFollowSet != null) {
                        followSet115 = follow_set$IndexingParser_ccc$865$9.clone();
                        followSet115.addAll(outerFollowSet);
                    }
                    consumeToken(CREATE_IF_NON_EXISTENT, false, followSet115);
                } else if (nextTokenType() == ECHO) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:866:9
                    EnumSet followSet124 = null;
                    if (outerFollowSet != null) {
                        followSet124 = follow_set$IndexingParser_ccc$866$9.clone();
                        followSet124.addAll(outerFollowSet);
                    }
                    consumeToken(ECHO, false, followSet124);
                } else if (nextTokenType() == EXACT) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:867:9
                    EnumSet followSet133 = null;
                    if (outerFollowSet != null) {
                        followSet133 = follow_set$IndexingParser_ccc$867$9.clone();
                        followSet133.addAll(outerFollowSet);
                    }
                    consumeToken(EXACT, false, followSet133);
                } else if (nextTokenType() == ELSE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:868:9
                    EnumSet followSet142 = null;
                    if (outerFollowSet != null) {
                        followSet142 = follow_set$IndexingParser_ccc$868$9.clone();
                        followSet142.addAll(outerFollowSet);
                    }
                    consumeToken(ELSE, false, followSet142);
                } else if (nextTokenType() == EMBED) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:869:9
                    EnumSet followSet151 = null;
                    if (outerFollowSet != null) {
                        followSet151 = follow_set$IndexingParser_ccc$869$9.clone();
                        followSet151.addAll(outerFollowSet);
                    }
                    consumeToken(EMBED, false, followSet151);
                } else if (nextTokenType() == FLATTEN) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:870:9
                    EnumSet followSet160 = null;
                    if (outerFollowSet != null) {
                        followSet160 = follow_set$IndexingParser_ccc$870$9.clone();
                        followSet160.addAll(outerFollowSet);
                    }
                    consumeToken(FLATTEN, false, followSet160);
                } else if (nextTokenType() == FOR_EACH) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:871:9
                    EnumSet followSet169 = null;
                    if (outerFollowSet != null) {
                        followSet169 = follow_set$IndexingParser_ccc$871$9.clone();
                        followSet169.addAll(outerFollowSet);
                    }
                    consumeToken(FOR_EACH, false, followSet169);
                } else if (nextTokenType() == GET_FIELD) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:872:9
                    EnumSet followSet178 = null;
                    if (outerFollowSet != null) {
                        followSet178 = follow_set$IndexingParser_ccc$872$9.clone();
                        followSet178.addAll(outerFollowSet);
                    }
                    consumeToken(GET_FIELD, false, followSet178);
                } else if (nextTokenType() == GET_VAR) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:873:9
                    EnumSet followSet187 = null;
                    if (outerFollowSet != null) {
                        followSet187 = follow_set$IndexingParser_ccc$873$9.clone();
                        followSet187.addAll(outerFollowSet);
                    }
                    consumeToken(GET_VAR, false, followSet187);
                } else if (nextTokenType() == GUARD) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:874:9
                    EnumSet followSet196 = null;
                    if (outerFollowSet != null) {
                        followSet196 = follow_set$IndexingParser_ccc$874$9.clone();
                        followSet196.addAll(outerFollowSet);
                    }
                    consumeToken(GUARD, false, followSet196);
                } else if (nextTokenType() == HASH) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:875:9
                    EnumSet followSet205 = null;
                    if (outerFollowSet != null) {
                        followSet205 = follow_set$IndexingParser_ccc$875$9.clone();
                        followSet205.addAll(outerFollowSet);
                    }
                    consumeToken(HASH, false, followSet205);
                } else if (nextTokenType() == HEX_DECODE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:876:9
                    EnumSet followSet214 = null;
                    if (outerFollowSet != null) {
                        followSet214 = follow_set$IndexingParser_ccc$876$9.clone();
                        followSet214.addAll(outerFollowSet);
                    }
                    consumeToken(HEX_DECODE, false, followSet214);
                } else if (nextTokenType() == HEX_ENCODE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:877:9
                    EnumSet followSet223 = null;
                    if (outerFollowSet != null) {
                        followSet223 = follow_set$IndexingParser_ccc$877$9.clone();
                        followSet223.addAll(outerFollowSet);
                    }
                    consumeToken(HEX_ENCODE, false, followSet223);
                } else if (nextTokenType() == HOST_NAME) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:878:9
                    EnumSet followSet232 = null;
                    if (outerFollowSet != null) {
                        followSet232 = follow_set$IndexingParser_ccc$878$9.clone();
                        followSet232.addAll(outerFollowSet);
                    }
                    consumeToken(HOST_NAME, false, followSet232);
                } else if (nextTokenType() == IDENTIFIER) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:879:9
                    EnumSet followSet241 = null;
                    if (outerFollowSet != null) {
                        followSet241 = follow_set$IndexingParser_ccc$879$9.clone();
                        followSet241.addAll(outerFollowSet);
                    }
                    consumeToken(IDENTIFIER, false, followSet241);
                } else if (nextTokenType() == IF) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:880:9
                    EnumSet followSet250 = null;
                    if (outerFollowSet != null) {
                        followSet250 = follow_set$IndexingParser_ccc$880$9.clone();
                        followSet250.addAll(outerFollowSet);
                    }
                    consumeToken(IF, false, followSet250);
                } else if (nextTokenType() == INDEX) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:881:9
                    EnumSet followSet259 = null;
                    if (outerFollowSet != null) {
                        followSet259 = follow_set$IndexingParser_ccc$881$9.clone();
                        followSet259.addAll(outerFollowSet);
                    }
                    consumeToken(INDEX, false, followSet259);
                } else if (nextTokenType() == INPUT) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:882:9
                    EnumSet followSet268 = null;
                    if (outerFollowSet != null) {
                        followSet268 = follow_set$IndexingParser_ccc$882$9.clone();
                        followSet268.addAll(outerFollowSet);
                    }
                    consumeToken(INPUT, false, followSet268);
                } else if (nextTokenType() == JOIN) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:883:9
                    EnumSet followSet277 = null;
                    if (outerFollowSet != null) {
                        followSet277 = follow_set$IndexingParser_ccc$883$9.clone();
                        followSet277.addAll(outerFollowSet);
                    }
                    consumeToken(JOIN, false, followSet277);
                } else if (nextTokenType() == LOWER_CASE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:884:9
                    EnumSet followSet286 = null;
                    if (outerFollowSet != null) {
                        followSet286 = follow_set$IndexingParser_ccc$884$9.clone();
                        followSet286.addAll(outerFollowSet);
                    }
                    consumeToken(LOWER_CASE, false, followSet286);
                } else if (nextTokenType() == MAX_LENGTH) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:885:9
                    EnumSet followSet295 = null;
                    if (outerFollowSet != null) {
                        followSet295 = follow_set$IndexingParser_ccc$885$9.clone();
                        followSet295.addAll(outerFollowSet);
                    }
                    consumeToken(MAX_LENGTH, false, followSet295);
                } else if (nextTokenType() == NGRAM) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:886:9
                    EnumSet followSet304 = null;
                    if (outerFollowSet != null) {
                        followSet304 = follow_set$IndexingParser_ccc$886$9.clone();
                        followSet304.addAll(outerFollowSet);
                    }
                    consumeToken(NGRAM, false, followSet304);
                } else if (nextTokenType() == NORMALIZE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:887:9
                    EnumSet followSet313 = null;
                    if (outerFollowSet != null) {
                        followSet313 = follow_set$IndexingParser_ccc$887$9.clone();
                        followSet313.addAll(outerFollowSet);
                    }
                    consumeToken(NORMALIZE, false, followSet313);
                } else if (nextTokenType() == NOW) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:888:9
                    EnumSet followSet322 = null;
                    if (outerFollowSet != null) {
                        followSet322 = follow_set$IndexingParser_ccc$888$9.clone();
                        followSet322.addAll(outerFollowSet);
                    }
                    consumeToken(NOW, false, followSet322);
                } else if (nextTokenType() == OPTIMIZE_PREDICATE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:889:9
                    EnumSet followSet331 = null;
                    if (outerFollowSet != null) {
                        followSet331 = follow_set$IndexingParser_ccc$889$9.clone();
                        followSet331.addAll(outerFollowSet);
                    }
                    consumeToken(OPTIMIZE_PREDICATE, false, followSet331);
                } else if (nextTokenType() == PASSTHROUGH) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:890:9
                    EnumSet followSet340 = null;
                    if (outerFollowSet != null) {
                        followSet340 = follow_set$IndexingParser_ccc$890$9.clone();
                        followSet340.addAll(outerFollowSet);
                    }
                    consumeToken(PASSTHROUGH, false, followSet340);
                } else if (nextTokenType() == RANDOM) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:891:9
                    EnumSet followSet349 = null;
                    if (outerFollowSet != null) {
                        followSet349 = follow_set$IndexingParser_ccc$891$9.clone();
                        followSet349.addAll(outerFollowSet);
                    }
                    consumeToken(RANDOM, false, followSet349);
                } else if (nextTokenType() == REMOVE_IF_ZERO) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:892:9
                    EnumSet followSet358 = null;
                    if (outerFollowSet != null) {
                        followSet358 = follow_set$IndexingParser_ccc$892$9.clone();
                        followSet358.addAll(outerFollowSet);
                    }
                    consumeToken(REMOVE_IF_ZERO, false, followSet358);
                } else if (nextTokenType() == SELECT_INPUT) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:893:9
                    EnumSet followSet367 = null;
                    if (outerFollowSet != null) {
                        followSet367 = follow_set$IndexingParser_ccc$893$9.clone();
                        followSet367.addAll(outerFollowSet);
                    }
                    consumeToken(SELECT_INPUT, false, followSet367);
                } else if (nextTokenType() == SET_LANGUAGE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:894:9
                    EnumSet followSet376 = null;
                    if (outerFollowSet != null) {
                        followSet376 = follow_set$IndexingParser_ccc$894$9.clone();
                        followSet376.addAll(outerFollowSet);
                    }
                    consumeToken(SET_LANGUAGE, false, followSet376);
                } else if (nextTokenType() == SET_VAR) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:895:9
                    EnumSet followSet385 = null;
                    if (outerFollowSet != null) {
                        followSet385 = follow_set$IndexingParser_ccc$895$9.clone();
                        followSet385.addAll(outerFollowSet);
                    }
                    consumeToken(SET_VAR, false, followSet385);
                } else if (nextTokenType() == SLEEP) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:896:9
                    EnumSet followSet394 = null;
                    if (outerFollowSet != null) {
                        followSet394 = follow_set$IndexingParser_ccc$896$9.clone();
                        followSet394.addAll(outerFollowSet);
                    }
                    consumeToken(SLEEP, false, followSet394);
                } else if (nextTokenType() == SPLIT) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:897:9
                    EnumSet followSet403 = null;
                    if (outerFollowSet != null) {
                        followSet403 = follow_set$IndexingParser_ccc$897$9.clone();
                        followSet403.addAll(outerFollowSet);
                    }
                    consumeToken(SPLIT, false, followSet403);
                } else if (nextTokenType() == STEM) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:898:9
                    EnumSet followSet412 = null;
                    if (outerFollowSet != null) {
                        followSet412 = follow_set$IndexingParser_ccc$898$9.clone();
                        followSet412.addAll(outerFollowSet);
                    }
                    consumeToken(STEM, false, followSet412);
                } else if (nextTokenType() == SUBSTRING) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:899:9
                    EnumSet followSet421 = null;
                    if (outerFollowSet != null) {
                        followSet421 = follow_set$IndexingParser_ccc$899$9.clone();
                        followSet421.addAll(outerFollowSet);
                    }
                    consumeToken(SUBSTRING, false, followSet421);
                } else if (nextTokenType() == SUMMARY) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:900:9
                    EnumSet followSet430 = null;
                    if (outerFollowSet != null) {
                        followSet430 = follow_set$IndexingParser_ccc$900$9.clone();
                        followSet430.addAll(outerFollowSet);
                    }
                    consumeToken(SUMMARY, false, followSet430);
                } else if (nextTokenType() == SWITCH) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:901:9
                    EnumSet followSet439 = null;
                    if (outerFollowSet != null) {
                        followSet439 = follow_set$IndexingParser_ccc$901$9.clone();
                        followSet439.addAll(outerFollowSet);
                    }
                    consumeToken(SWITCH, false, followSet439);
                } else if (nextTokenType() == THIS) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:902:9
                    EnumSet followSet448 = null;
                    if (outerFollowSet != null) {
                        followSet448 = follow_set$IndexingParser_ccc$902$9.clone();
                        followSet448.addAll(outerFollowSet);
                    }
                    consumeToken(THIS, false, followSet448);
                } else if (nextTokenType() == TO_ARRAY) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:903:9
                    EnumSet followSet457 = null;
                    if (outerFollowSet != null) {
                        followSet457 = follow_set$IndexingParser_ccc$903$9.clone();
                        followSet457.addAll(outerFollowSet);
                    }
                    consumeToken(TO_ARRAY, false, followSet457);
                } else if (nextTokenType() == TO_DOUBLE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:904:9
                    EnumSet followSet466 = null;
                    if (outerFollowSet != null) {
                        followSet466 = follow_set$IndexingParser_ccc$904$9.clone();
                        followSet466.addAll(outerFollowSet);
                    }
                    consumeToken(TO_DOUBLE, false, followSet466);
                } else if (nextTokenType() == TO_FLOAT) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:905:9
                    EnumSet followSet475 = null;
                    if (outerFollowSet != null) {
                        followSet475 = follow_set$IndexingParser_ccc$905$9.clone();
                        followSet475.addAll(outerFollowSet);
                    }
                    consumeToken(TO_FLOAT, false, followSet475);
                } else if (nextTokenType() == TO_INT) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:906:9
                    EnumSet followSet484 = null;
                    if (outerFollowSet != null) {
                        followSet484 = follow_set$IndexingParser_ccc$906$9.clone();
                        followSet484.addAll(outerFollowSet);
                    }
                    consumeToken(TO_INT, false, followSet484);
                } else if (nextTokenType() == TO_LONG) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:907:9
                    EnumSet followSet493 = null;
                    if (outerFollowSet != null) {
                        followSet493 = follow_set$IndexingParser_ccc$907$9.clone();
                        followSet493.addAll(outerFollowSet);
                    }
                    consumeToken(TO_LONG, false, followSet493);
                } else if (nextTokenType() == TO_POS) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:908:9
                    EnumSet followSet502 = null;
                    if (outerFollowSet != null) {
                        followSet502 = follow_set$IndexingParser_ccc$908$9.clone();
                        followSet502.addAll(outerFollowSet);
                    }
                    consumeToken(TO_POS, false, followSet502);
                } else if (nextTokenType() == TO_STRING) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:909:9
                    EnumSet followSet511 = null;
                    if (outerFollowSet != null) {
                        followSet511 = follow_set$IndexingParser_ccc$909$9.clone();
                        followSet511.addAll(outerFollowSet);
                    }
                    consumeToken(TO_STRING, false, followSet511);
                } else if (nextTokenType() == TO_WSET) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:910:9
                    EnumSet followSet520 = null;
                    if (outerFollowSet != null) {
                        followSet520 = follow_set$IndexingParser_ccc$910$9.clone();
                        followSet520.addAll(outerFollowSet);
                    }
                    consumeToken(TO_WSET, false, followSet520);
                } else if (nextTokenType() == TO_BOOL) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:911:9
                    EnumSet followSet529 = null;
                    if (outerFollowSet != null) {
                        followSet529 = follow_set$IndexingParser_ccc$911$9.clone();
                        followSet529.addAll(outerFollowSet);
                    }
                    consumeToken(TO_BOOL, false, followSet529);
                } else if (nextTokenType() == TOKENIZE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:912:9
                    EnumSet followSet538 = null;
                    if (outerFollowSet != null) {
                        followSet538 = follow_set$IndexingParser_ccc$912$9.clone();
                        followSet538.addAll(outerFollowSet);
                    }
                    consumeToken(TOKENIZE, false, followSet538);
                } else if (nextTokenType() == TRIM) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:913:9
                    EnumSet followSet547 = null;
                    if (outerFollowSet != null) {
                        followSet547 = follow_set$IndexingParser_ccc$913$9.clone();
                        followSet547.addAll(outerFollowSet);
                    }
                    consumeToken(TRIM, false, followSet547);
                } else if (nextTokenType() == TRUE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:914:9
                    EnumSet followSet556 = null;
                    if (outerFollowSet != null) {
                        followSet556 = follow_set$IndexingParser_ccc$914$9.clone();
                        followSet556.addAll(outerFollowSet);
                    }
                    consumeToken(TRUE, false, followSet556);
                } else if (nextTokenType() == FALSE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:915:9
                    EnumSet followSet565 = null;
                    if (outerFollowSet != null) {
                        followSet565 = follow_set$IndexingParser_ccc$915$9.clone();
                        followSet565.addAll(outerFollowSet);
                    }
                    consumeToken(FALSE, false, followSet565);
                } else if (nextTokenType() == ZCURVE) {
                    // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:916:9
                    EnumSet followSet574 = null;
                    if (outerFollowSet != null) {
                        followSet574 = follow_set$IndexingParser_ccc$916$9.clone();
                        followSet574.addAll(outerFollowSet);
                    }
                    consumeToken(ZCURVE, false, followSet574);
                } else {
                    pushOntoCallStack("identifierStr", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 857, 9);
                    throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$857$9$, parsingStack);
                }
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:916:36
                val = lastConsumedToken.toString();
            } else {
                pushOntoCallStack("identifierStr", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 856, 7);
                throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$856$7, parsingStack);
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:917:5
            return val;
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:921:1
    final public String fieldName() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "fieldName";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:921:1
        fieldName thisProduction = null;
        if (buildTree) {
            thisProduction = new fieldName();
            openNodeScope(thisProduction);
        }
        StringBuilder builder = new StringBuilder();
        String str;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$fieldName();
            }
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:927:7
            pushOntoCallStack("fieldName", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 927, 7);
            if (outerFollowSet != null) {
                EnumSet newFollowSet = follow_set$IndexingParser_ccc$927$7.clone();
                newFollowSet.addAll(outerFollowSet);
                outerFollowSet = newFollowSet;
            }
            try {
                str = identifierStr();
            } finally {
                popCallStack();
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:927:29
            builder.append(str);
            // Code for ZeroOrMore specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:927:54
            while (true) {
                if (!(scan$IndexingParser_ccc$928$7())) break;
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:928:36
                consumeToken(DOT, false, follow_set$IndexingParser_ccc$928$36);
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:928:42
                builder.append(lastConsumedToken.toString());
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:929:7
                pushOntoCallStack("fieldName", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 929, 7);
                if (outerFollowSet != null) {
                    EnumSet newFollowSet = follow_set$IndexingParser_ccc$929$7.clone();
                    newFollowSet.addAll(outerFollowSet);
                    outerFollowSet = newFollowSet;
                }
                try {
                    str = identifierStr();
                } finally {
                    popCallStack();
                }
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:929:29
                builder.append(str);
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:930:5
            return builder.toString();
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:933:1
    final public FieldValue fieldValue() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "fieldValue";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:933:1
        fieldValue thisProduction = null;
        if (buildTree) {
            thisProduction = new fieldValue();
            openNodeScope(thisProduction);
        }
        FieldValue val;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$fieldValue();
            }
            if (first_set$IndexingParser_ccc$938$7.contains(nextTokenType())) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:938:7
                pushOntoCallStack("fieldValue", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 938, 7);
                try {
                    val = numericValue();
                } finally {
                    popCallStack();
                }
            } else if (nextTokenType() == STRING) {
                // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:938:30
                pushOntoCallStack("fieldValue", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 938, 30);
                try {
                    val = stringValue();
                } finally {
                    popCallStack();
                }
            } else {
                pushOntoCallStack("fieldValue", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 938, 7);
                throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$938$7$, parsingStack);
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:939:5
            return val;
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:942:1
    final public NumericFieldValue numericValue() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "numericValue";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:942:1
        numericValue thisProduction = null;
        if (buildTree) {
            thisProduction = new numericValue();
            openNodeScope(thisProduction);
        }
        NumericFieldValue val;
        String pre = "";
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$numericValue();
            }
            // Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:948:7
            // Code for ExpansionChoice specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:948:9
            if (nextTokenType() == ADD) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:948:9
                consumeToken(ADD, false, follow_set$IndexingParser_ccc$948$9);
            } else if (nextTokenType() == SUB) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:948:17
                consumeToken(SUB, false, follow_set$IndexingParser_ccc$948$17);
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:948:23
                pre = "-";
            }
            if (nextTokenType() == DOUBLE) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:949:9
                EnumSet followSet57 = null;
                if (outerFollowSet != null) {
                    followSet57 = follow_set$IndexingParser_ccc$949$9.clone();
                    followSet57.addAll(outerFollowSet);
                }
                consumeToken(DOUBLE, false, followSet57);
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:949:23
                val = parseDouble(pre + lastConsumedToken.toString());
            } else if (nextTokenType() == FLOAT) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:950:9
                EnumSet followSet68 = null;
                if (outerFollowSet != null) {
                    followSet68 = follow_set$IndexingParser_ccc$950$9.clone();
                    followSet68.addAll(outerFollowSet);
                }
                consumeToken(FLOAT, false, followSet68);
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:950:23
                val = parseFloat(pre + lastConsumedToken.toString());
            } else if (nextTokenType() == INTEGER) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:951:9
                EnumSet followSet79 = null;
                if (outerFollowSet != null) {
                    followSet79 = follow_set$IndexingParser_ccc$951$9.clone();
                    followSet79.addAll(outerFollowSet);
                }
                consumeToken(INTEGER, false, followSet79);
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:951:23
                val = parseInteger(pre + lastConsumedToken.toString());
            } else if (nextTokenType() == LONG) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:952:9
                EnumSet followSet90 = null;
                if (outerFollowSet != null) {
                    followSet90 = follow_set$IndexingParser_ccc$952$9.clone();
                    followSet90.addAll(outerFollowSet);
                }
                consumeToken(LONG, false, followSet90);
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:952:23
                val = parseLong(pre + lastConsumedToken.toString());
            } else {
                pushOntoCallStack("numericValue", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 949, 9);
                throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$949$9$, parsingStack);
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:953:5
            return val;
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:956:1
    final public FieldValue stringValue() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "stringValue";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:956:1
        stringValue thisProduction = null;
        if (buildTree) {
            thisProduction = new stringValue();
            openNodeScope(thisProduction);
        }
        String val;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$stringValue();
            }
            // Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:961:7
            pushOntoCallStack("stringValue", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 961, 7);
            try {
                val = stringLiteral();
            } finally {
                popCallStack();
            }
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:962:5
            return new StringFieldValue(val);
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:965:1
    final public String stringLiteral() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "stringLiteral";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:965:1
        stringLiteral thisProduction = null;
        if (buildTree) {
            thisProduction = new stringLiteral();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$stringLiteral();
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:967:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$967$7.clone();
                followSet20.addAll(outerFollowSet);
            }
            consumeToken(STRING, false, followSet20);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:968:5
            return StringUtilities.unescape(lastConsumedToken.toString().substring(1, lastConsumedToken.toString().length() - 1));
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:971:1
    final public int integerValue() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "integerValue";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:971:1
        integerValue thisProduction = null;
        if (buildTree) {
            thisProduction = new integerValue();
            openNodeScope(thisProduction);
        }
        String pre = "";
        int val;
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            if (pendingRecovery) {
                recover$integerValue();
            }
            // Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:977:7
            // Code for ExpansionChoice specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:977:9
            if (nextTokenType() == ADD) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:977:9
                consumeToken(ADD, false, follow_set$IndexingParser_ccc$977$9);
            } else if (nextTokenType() == SUB) {
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:977:17
                consumeToken(SUB, false, follow_set$IndexingParser_ccc$977$17);
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:977:23
                pre = "-";
            }
            // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:978:7
            EnumSet followSet46 = null;
            if (outerFollowSet != null) {
                followSet46 = follow_set$IndexingParser_ccc$978$7.clone();
                followSet46.addAll(outerFollowSet);
            }
            consumeToken(INTEGER, false, followSet46);
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:978:23
            val = Integer.parseInt(pre + lastConsumedToken.toString());
            // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:979:5
            return val;
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:982:1
    final public void consumeNL() {
        if (cancelled) throw new CancellationException();
        this.currentlyParsedProduction = "consumeNL";
        // Code for BNFProduction specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:982:1
        consumeNL thisProduction = null;
        if (buildTree) {
            thisProduction = new consumeNL();
            openNodeScope(thisProduction);
        }
        ParseException parseException3 = null;
        int callStackSize4 = parsingStack.size();
        try {
            // Code for ZeroOrMore specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:984:5
            while (true) {
                if (!(nextTokenType() == NL)) break;
                // Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:984:7
                EnumSet followSet21 = null;
                if (outerFollowSet != null) {
                    followSet21 = follow_set$IndexingParser_ccc$984$7.clone();
                    followSet21.addAll(outerFollowSet);
                }
                consumeToken(NL, false, followSet21);
            }
        } catch (ParseException e) {
            parseException3 = e;
            if (isParserTolerant()) this.pendingRecovery = true;
            throw e;
        } finally {
            restoreCallStack(callStackSize4);
            if (thisProduction != null) {
                if (parseException3 == null) {
                    closeNodeScope(thisProduction, true);
                } else {
                    closeNodeScope(thisProduction, true);
                    thisProduction.setDirty(true);
                }
            }
        }
    }

    private void recover$root() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$script() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$statement() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$expression() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$nonChoiceExpression() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$math() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$value() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$attributeExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$base64DecodeExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$base64EncodeExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$binarizeExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$busy_waitExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$clearStateExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$echoExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$embedExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$exactExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$flattenExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$forEachExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$getFieldExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$getVarExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$guardExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$hashExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$hexDecodeExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$hexEncodeExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$hostNameExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$ifThenExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$ifThenCmp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$indexExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$inputExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$joinExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$lowerCaseExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$ngramExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$normalizeExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$nowExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$optimizePredicateExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$packBitsExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$passthroughExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$randomExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$selectInputExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$setLanguageExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$setValueExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$setVarExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$sleepExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$splitExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$substringExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$summaryExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$switchExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$thisExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$tokenizeExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$tokenizeCfg() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$toArrayExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$toByteExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$toDoubleExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$toFloatExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$toIntExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$toLongExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$toPosExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$toEpochSecondExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$toStringExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$toWsetExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$toBoolExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$trimExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$literalBoolExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$zcurveExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$executionValueExp() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$identifierStr() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$fieldName() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$fieldValue() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$numericValue() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$stringValue() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$stringLiteral() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private void recover$integerValue() {
        Token initialToken = lastConsumedToken;
        java.util.List skippedTokens = new java.util.ArrayList<>();
        boolean success = false;
        while (lastConsumedToken.getType() != EOF) {
            if (true) {
                success = true;
                break;
            }
            lastConsumedToken = nextToken(lastConsumedToken);
            skippedTokens.add(lastConsumedToken);
        }
        if (!success && !skippedTokens.isEmpty()) {
            lastConsumedToken = initialToken;
        }
        if (success && !skippedTokens.isEmpty()) {
            InvalidNode iv = new InvalidNode();
            iv.copyLocationInfo(skippedTokens.get(0));
            for (Token tok : skippedTokens) {
                iv.add(tok);
                iv.setEndOffset(tok.getEndOffset());
            }
            pushNode(iv);
        }
        pendingRecovery = !success;
    }

    private static final EnumSet first_set$IndexingParser_ccc$270$32 = first_set$IndexingParser_ccc$270$32_init();

    private static EnumSet first_set$IndexingParser_ccc$270$32_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet first_set$IndexingParser_ccc$316$9 = tokenTypeSet(ADD, SUB, MUL, DIV, MOD);
    private static final EnumSet first_set$IndexingParser_ccc$316$11$ = tokenTypeSet(ADD, SUB, MUL, DIV, MOD);
    private static final EnumSet first_set$IndexingParser_ccc$332$7 = first_set$IndexingParser_ccc$332$7_init();

    private static EnumSet first_set$IndexingParser_ccc$332$7_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet first_set$IndexingParser_ccc$365$7 = tokenTypeSet(ADD, SUB, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    private static final EnumSet first_set$IndexingParser_ccc$398$21 = first_set$IndexingParser_ccc$398$21_init();

    private static EnumSet first_set$IndexingParser_ccc$398$21_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet first_set$IndexingParser_ccc$418$20 = tokenTypeSet(ADD, SUB, INTEGER, LONG, DOUBLE, FLOAT);
    private static final EnumSet first_set$IndexingParser_ccc$448$23 = first_set$IndexingParser_ccc$448$23_init();

    private static EnumSet first_set$IndexingParser_ccc$448$23_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet first_set$IndexingParser_ccc$449$15 = first_set$IndexingParser_ccc$449$15_init();

    private static EnumSet first_set$IndexingParser_ccc$449$15_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet first_set$IndexingParser_ccc$548$7$ = tokenTypeSet(EQ, NE, LT, LE, GT, GE);
    private static final EnumSet first_set$IndexingParser_ccc$562$17 = first_set$IndexingParser_ccc$562$17_init();

    private static EnumSet first_set$IndexingParser_ccc$562$17_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet first_set$IndexingParser_ccc$571$17 = first_set$IndexingParser_ccc$571$17_init();

    private static EnumSet first_set$IndexingParser_ccc$571$17_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet first_set$IndexingParser_ccc$628$23 = first_set$IndexingParser_ccc$628$23_init();

    private static EnumSet first_set$IndexingParser_ccc$628$23_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet first_set$IndexingParser_ccc$648$45$ = first_set$IndexingParser_ccc$648$45$_init();

    private static EnumSet first_set$IndexingParser_ccc$648$45$_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet first_set$IndexingParser_ccc$706$19 = first_set$IndexingParser_ccc$706$19_init();

    private static EnumSet first_set$IndexingParser_ccc$706$19_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet first_set$IndexingParser_ccc$735$20 = tokenTypeSet(MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet first_set$IndexingParser_ccc$748$7$ = tokenTypeSet(MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet first_set$IndexingParser_ccc$835$7$ = tokenTypeSet(TRUE, FALSE);
    private static final EnumSet first_set$IndexingParser_ccc$856$7 = first_set$IndexingParser_ccc$856$7_init();

    private static EnumSet first_set$IndexingParser_ccc$856$7_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet first_set$IndexingParser_ccc$857$7 = first_set$IndexingParser_ccc$857$7_init();

    private static EnumSet first_set$IndexingParser_ccc$857$7_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, IDENTIFIER);
    }

    private static final EnumSet first_set$IndexingParser_ccc$857$9$ = first_set$IndexingParser_ccc$857$9$_init();

    private static EnumSet first_set$IndexingParser_ccc$857$9$_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, IDENTIFIER);
    }

    private static final EnumSet first_set$IndexingParser_ccc$928$18 = first_set$IndexingParser_ccc$928$18_init();

    private static EnumSet first_set$IndexingParser_ccc$928$18_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet first_set$IndexingParser_ccc$938$7$ = tokenTypeSet(ADD, SUB, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    private static final EnumSet first_set$IndexingParser_ccc$938$7 = tokenTypeSet(ADD, SUB, INTEGER, LONG, DOUBLE, FLOAT);
    private static final EnumSet first_set$IndexingParser_ccc$949$9$ = tokenTypeSet(INTEGER, LONG, DOUBLE, FLOAT);
    private static final EnumSet follow_set$IndexingParser_ccc$253$7 = tokenTypeSet(SCOLON);
    private static final EnumSet follow_set$IndexingParser_ccc$253$27 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$269$9 = follow_set$IndexingParser_ccc$269$9_init();

    private static EnumSet follow_set$IndexingParser_ccc$269$9_init() {
        return tokenTypeSet(NL, ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$269$18 = follow_set$IndexingParser_ccc$269$18_init();

    private static EnumSet follow_set$IndexingParser_ccc$269$18_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$269$32 = tokenTypeSet(NL, RCURLY, SCOLON);
    private static final EnumSet follow_set$IndexingParser_ccc$269$68 = tokenTypeSet(RCURLY, SCOLON);
    private static final EnumSet follow_set$IndexingParser_ccc$270$9 = follow_set$IndexingParser_ccc$270$9_init();

    private static EnumSet follow_set$IndexingParser_ccc$270$9_init() {
        return tokenTypeSet(NL, ADD, SUB, LCURLY, RCURLY, LPAREN, SCOLON, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$270$18 = follow_set$IndexingParser_ccc$270$18_init();

    private static EnumSet follow_set$IndexingParser_ccc$270$18_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, RCURLY, LPAREN, SCOLON, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$270$32$ = tokenTypeSet(NL, RCURLY, SCOLON);
    private static final EnumSet follow_set$IndexingParser_ccc$270$68 = tokenTypeSet(RCURLY, SCOLON);
    private static final EnumSet follow_set$IndexingParser_ccc$270$85 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$280$7 = tokenTypeSet(PIPE);
    private static final EnumSet follow_set$IndexingParser_ccc$280$46 = follow_set$IndexingParser_ccc$280$46_init();

    private static EnumSet follow_set$IndexingParser_ccc$280$46_init() {
        return tokenTypeSet(NL, ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$280$53 = follow_set$IndexingParser_ccc$280$53_init();

    private static EnumSet follow_set$IndexingParser_ccc$280$53_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$280$65 = tokenTypeSet(PIPE);
    private static final EnumSet follow_set$IndexingParser_ccc$293$5 = tokenTypeSet(CHOICE);
    private static final EnumSet follow_set$IndexingParser_ccc$294$7 = follow_set$IndexingParser_ccc$294$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$294$7_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$294$16 = tokenTypeSet(CHOICE);
    private static final EnumSet follow_set$IndexingParser_ccc$304$7 = tokenTypeSet(DOT);
    private static final EnumSet follow_set$IndexingParser_ccc$304$40 = follow_set$IndexingParser_ccc$304$40_init();

    private static EnumSet follow_set$IndexingParser_ccc$304$40_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$304$46 = tokenTypeSet(DOT);
    private static final EnumSet follow_set$IndexingParser_ccc$315$11 = tokenTypeSet(ADD, SUB, MUL, DIV, MOD);
    private static final EnumSet follow_set$IndexingParser_ccc$316$11 = follow_set$IndexingParser_ccc$316$11_init();

    private static EnumSet follow_set$IndexingParser_ccc$316$11_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$317$11 = follow_set$IndexingParser_ccc$317$11_init();

    private static EnumSet follow_set$IndexingParser_ccc$317$11_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$318$11 = follow_set$IndexingParser_ccc$318$11_init();

    private static EnumSet follow_set$IndexingParser_ccc$318$11_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$319$11 = follow_set$IndexingParser_ccc$319$11_init();

    private static EnumSet follow_set$IndexingParser_ccc$319$11_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$320$11 = follow_set$IndexingParser_ccc$320$11_init();

    private static EnumSet follow_set$IndexingParser_ccc$320$11_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$321$11 = tokenTypeSet(ADD, SUB, MUL, DIV, MOD);
    private static final EnumSet follow_set$IndexingParser_ccc$389$9 = follow_set$IndexingParser_ccc$389$9_init();

    private static EnumSet follow_set$IndexingParser_ccc$389$9_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$389$18 = tokenTypeSet(RPAREN);
    private static final EnumSet follow_set$IndexingParser_ccc$389$36 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$398$7 = follow_set$IndexingParser_ccc$398$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$398$7_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$404$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$410$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$418$7 = tokenTypeSet(ADD, SUB, INTEGER, LONG, DOUBLE, FLOAT);
    private static final EnumSet follow_set$IndexingParser_ccc$424$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$430$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$436$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$448$7 = follow_set$IndexingParser_ccc$448$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$448$7_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$448$44 = follow_set$IndexingParser_ccc$448$44_init();

    private static EnumSet follow_set$IndexingParser_ccc$448$44_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$449$36 = follow_set$IndexingParser_ccc$449$36_init();

    private static EnumSet follow_set$IndexingParser_ccc$449$36_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$462$7 = tokenTypeSet(MAX_TOKEN_LENGTH);
    private static final EnumSet follow_set$IndexingParser_ccc$462$18 = tokenTypeSet(COLON);
    private static final EnumSet follow_set$IndexingParser_ccc$462$37 = tokenTypeSet(ADD, SUB, INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$468$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$477$7 = tokenTypeSet(LCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$477$18 = follow_set$IndexingParser_ccc$477$18_init();

    private static EnumSet follow_set$IndexingParser_ccc$477$18_init() {
        return tokenTypeSet(NL, ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$477$27 = follow_set$IndexingParser_ccc$477$27_init();

    private static EnumSet follow_set$IndexingParser_ccc$477$27_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$477$39 = tokenTypeSet(NL, RCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$477$57 = tokenTypeSet(RCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$477$69 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$486$7 = follow_set$IndexingParser_ccc$486$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$486$7_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$495$7 = follow_set$IndexingParser_ccc$495$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$495$7_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$504$7 = tokenTypeSet(LCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$510$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$516$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$522$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$528$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$538$7 = tokenTypeSet(LPAREN);
    private static final EnumSet follow_set$IndexingParser_ccc$538$12 = follow_set$IndexingParser_ccc$538$12_init();

    private static EnumSet follow_set$IndexingParser_ccc$538$12_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$538$21 = tokenTypeSet(EQ, NE, LT, LE, GT, GE);
    private static final EnumSet follow_set$IndexingParser_ccc$538$40 = follow_set$IndexingParser_ccc$538$40_init();

    private static EnumSet follow_set$IndexingParser_ccc$538$40_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$538$58 = tokenTypeSet(RPAREN);
    private static final EnumSet follow_set$IndexingParser_ccc$538$77 = tokenTypeSet(LCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$539$7 = tokenTypeSet(ELSE);
    private static final EnumSet follow_set$IndexingParser_ccc$539$27 = tokenTypeSet(LCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$548$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$549$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$550$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$551$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$552$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$553$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$562$7 = follow_set$IndexingParser_ccc$562$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$562$7_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$571$7 = follow_set$IndexingParser_ccc$571$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$571$7_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$580$7 = tokenTypeSet(STRING);
    private static final EnumSet follow_set$IndexingParser_ccc$586$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$595$7 = tokenTypeSet(ADD, SUB, INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$601$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$607$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$613$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$619$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$628$7 = follow_set$IndexingParser_ccc$628$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$628$7_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$637$7 = tokenTypeSet(ADD, SUB, INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$648$7 = tokenTypeSet(LCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$648$22 = follow_set$IndexingParser_ccc$648$22_init();

    private static EnumSet follow_set$IndexingParser_ccc$648$22_init() {
        return tokenTypeSet(NL, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$648$31 = follow_set$IndexingParser_ccc$648$31_init();

    private static EnumSet follow_set$IndexingParser_ccc$648$31_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$648$45 = tokenTypeSet(COLON);
    private static final EnumSet follow_set$IndexingParser_ccc$648$67 = follow_set$IndexingParser_ccc$648$67_init();

    private static EnumSet follow_set$IndexingParser_ccc$648$67_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$648$75 = tokenTypeSet(SCOLON);
    private static final EnumSet follow_set$IndexingParser_ccc$648$93 = follow_set$IndexingParser_ccc$648$93_init();

    private static EnumSet follow_set$IndexingParser_ccc$648$93_init() {
        return tokenTypeSet(NL, RCURLY, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$648$102 = follow_set$IndexingParser_ccc$648$102_init();

    private static EnumSet follow_set$IndexingParser_ccc$648$102_init() {
        return tokenTypeSet(RCURLY, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$649$65 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$655$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$673$7 = follow_set$IndexingParser_ccc$673$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$673$7_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$679$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$688$7 = tokenTypeSet(STRING);
    private static final EnumSet follow_set$IndexingParser_ccc$697$7 = tokenTypeSet(ADD, SUB, INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$697$19 = tokenTypeSet(ADD, SUB, INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$706$7 = follow_set$IndexingParser_ccc$706$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$706$7_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$717$7 = tokenTypeSet(LCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$717$16 = tokenTypeSet(NL, CASE);
    private static final EnumSet follow_set$IndexingParser_ccc$717$25 = tokenTypeSet(CASE);
    private static final EnumSet follow_set$IndexingParser_ccc$718$9 = tokenTypeSet(STRING);
    private static final EnumSet follow_set$IndexingParser_ccc$718$16 = tokenTypeSet(COLON);
    private static final EnumSet follow_set$IndexingParser_ccc$718$38 = follow_set$IndexingParser_ccc$718$38_init();

    private static EnumSet follow_set$IndexingParser_ccc$718$38_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$718$46 = tokenTypeSet(SCOLON);
    private static final EnumSet follow_set$IndexingParser_ccc$718$89 = tokenTypeSet(NL, RCURLY, CASE, CASE_DEFAULT);
    private static final EnumSet follow_set$IndexingParser_ccc$718$98 = tokenTypeSet(RCURLY, CASE, CASE_DEFAULT);
    private static final EnumSet follow_set$IndexingParser_ccc$719$9 = tokenTypeSet(COLON);
    private static final EnumSet follow_set$IndexingParser_ccc$719$24 = follow_set$IndexingParser_ccc$719$24_init();

    private static EnumSet follow_set$IndexingParser_ccc$719$24_init() {
        return tokenTypeSet(ADD, SUB, LCURLY, LPAREN, ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CLEAR_STATE, ECHO, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PACK_BITS, PASSTHROUGH, RANDOM, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_BYTE, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_EPOCH_SECOND, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, UNDERSCORE, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$719$32 = tokenTypeSet(SCOLON);
    private static final EnumSet follow_set$IndexingParser_ccc$719$57 = tokenTypeSet(NL, RCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$719$66 = tokenTypeSet(RCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$720$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$726$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$735$7 = tokenTypeSet(MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet follow_set$IndexingParser_ccc$748$7 = tokenTypeSet(COLON, MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet follow_set$IndexingParser_ccc$748$16 = tokenTypeSet(STRING);
    private static final EnumSet follow_set$IndexingParser_ccc$748$24 = tokenTypeSet(MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet follow_set$IndexingParser_ccc$749$7 = tokenTypeSet(COLON);
    private static final EnumSet follow_set$IndexingParser_ccc$749$20 = tokenTypeSet(ADD, SUB, INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$749$29 = tokenTypeSet(MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet follow_set$IndexingParser_ccc$750$7 = tokenTypeSet(COLON);
    private static final EnumSet follow_set$IndexingParser_ccc$750$25 = tokenTypeSet(ADD, SUB, INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$750$34 = tokenTypeSet(MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet follow_set$IndexingParser_ccc$751$7 = tokenTypeSet(COLON);
    private static final EnumSet follow_set$IndexingParser_ccc$751$26 = tokenTypeSet(ADD, SUB, INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$751$34 = tokenTypeSet(MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet follow_set$IndexingParser_ccc$752$7 = tokenTypeSet(MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet follow_set$IndexingParser_ccc$758$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$764$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$770$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$776$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$782$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$788$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$794$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$800$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$806$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$816$7 = tokenTypeSet(CREATE_IF_NON_EXISTENT, REMOVE_IF_ZERO);
    private static final EnumSet follow_set$IndexingParser_ccc$816$19 = tokenTypeSet(CREATE_IF_NON_EXISTENT, REMOVE_IF_ZERO);
    private static final EnumSet follow_set$IndexingParser_ccc$817$19 = tokenTypeSet(CREATE_IF_NON_EXISTENT, REMOVE_IF_ZERO);
    private static final EnumSet follow_set$IndexingParser_ccc$823$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$829$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$835$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$835$16 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$841$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$847$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$857$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$858$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$859$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$860$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$861$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$862$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$863$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$864$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$865$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$866$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$867$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$868$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$869$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$870$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$871$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$872$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$873$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$874$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$875$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$876$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$877$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$878$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$879$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$880$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$881$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$882$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$883$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$884$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$885$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$886$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$887$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$888$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$889$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$890$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$891$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$892$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$893$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$894$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$895$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$896$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$897$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$898$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$899$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$900$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$901$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$902$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$903$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$904$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$905$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$906$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$907$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$908$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$909$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$910$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$911$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$912$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$913$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$914$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$915$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$916$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$927$7 = tokenTypeSet(DOT);
    private static final EnumSet follow_set$IndexingParser_ccc$928$36 = follow_set$IndexingParser_ccc$928$36_init();

    private static EnumSet follow_set$IndexingParser_ccc$928$36_init() {
        return tokenTypeSet(ATTRIBUTE, BASE64_DECODE, BASE64_ENCODE, BINARIZE, BUSY_WAIT, CASE, CASE_DEFAULT, CLEAR_STATE, CREATE_IF_NON_EXISTENT, ECHO, ELSE, EMBED, EXACT, FLATTEN, FOR_EACH, GET_FIELD, GET_VAR, GUARD, HASH, HEX_DECODE, HEX_ENCODE, HOST_NAME, IF, INDEX, INPUT, JOIN, LOWER_CASE, MAX_LENGTH, NGRAM, NORMALIZE, NOW, OPTIMIZE_PREDICATE, PASSTHROUGH, RANDOM, REMOVE_IF_ZERO, SELECT_INPUT, SET_LANGUAGE, SET_VAR, SLEEP, SPLIT, STEM, SUBSTRING, SUMMARY, SWITCH, THIS, TOKENIZE, TO_ARRAY, TO_DOUBLE, TO_FLOAT, TO_INT, TO_LONG, TO_POS, TO_STRING, TO_WSET, TO_BOOL, TRIM, ZCURVE, TRUE, FALSE, STRING, IDENTIFIER);
    }

    private static final EnumSet follow_set$IndexingParser_ccc$929$7 = tokenTypeSet(DOT);
    private static final EnumSet follow_set$IndexingParser_ccc$948$9 = tokenTypeSet(INTEGER, LONG, DOUBLE, FLOAT);
    private static final EnumSet follow_set$IndexingParser_ccc$948$17 = tokenTypeSet(INTEGER, LONG, DOUBLE, FLOAT);
    private static final EnumSet follow_set$IndexingParser_ccc$949$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$950$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$951$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$952$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$967$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$977$9 = tokenTypeSet(INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$977$17 = tokenTypeSet(INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$978$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$984$7 = tokenTypeSet(NL);

    private boolean scanToken(TokenType expectedType, TokenType...additionalTypes) {
        Token peekedToken = nextToken(currentLookaheadToken);
        TokenType type = peekedToken.getType();
        if (type != expectedType) {
            boolean matched = false;
            for (TokenType tt : additionalTypes) {
                if (type == tt) {
                    matched = true;
                    break;
                }
            }
            if (!matched) return false;
        }
        --remainingLookahead;
        currentLookaheadToken = peekedToken;
        return true;
    }

    private boolean scanToken(EnumSet types) {
        Token peekedToken = nextToken(currentLookaheadToken);
        TokenType type = peekedToken.getType();
        if (!types.contains(type)) return false;
        --remainingLookahead;
        currentLookaheadToken = peekedToken;
        return true;
    }

    // BuildPredicateRoutine: expansion at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:448:17
    private boolean scan$IndexingParser_ccc$448$17() {
        remainingLookahead = UNLIMITED;
        currentLookaheadToken = lastConsumedToken;
        final boolean scanToEnd = false;
        try {
            // BuildPredicateCode macro
            if (remainingLookahead <= 0) {
                passedPredicate = true;
                return !hitFailure;
            }
            if (!check$IndexingParser_ccc$448$21(true)) return false;
            // End BuildPredicateCode macro
            return true;
        } finally {
            lookaheadRoutineNesting = 0;
            currentLookaheadToken = null;
            hitFailure = false;
        }
    }

    // BuildPredicateRoutine: expansion at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:449:9
    private boolean scan$IndexingParser_ccc$449$9() {
        remainingLookahead = UNLIMITED;
        currentLookaheadToken = lastConsumedToken;
        final boolean scanToEnd = false;
        try {
            // BuildPredicateCode macro
            if (remainingLookahead <= 0) {
                passedPredicate = true;
                return !hitFailure;
            }
            if (!check$IndexingParser_ccc$449$13(true)) return false;
            // End BuildPredicateCode macro
            return true;
        } finally {
            lookaheadRoutineNesting = 0;
            currentLookaheadToken = null;
            hitFailure = false;
        }
    }

    // BuildPredicateRoutine: expansion at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:637:18
    private boolean scan$IndexingParser_ccc$637$18() {
        remainingLookahead = UNLIMITED;
        currentLookaheadToken = lastConsumedToken;
        final boolean scanToEnd = false;
        try {
            // BuildPredicateCode macro
            if (remainingLookahead <= 0) {
                passedPredicate = true;
                return !hitFailure;
            }
            if (!check$IndexingParser_ccc$637$22(true)) return false;
            // End BuildPredicateCode macro
            return true;
        } finally {
            lookaheadRoutineNesting = 0;
            currentLookaheadToken = null;
            hitFailure = false;
        }
    }

    // BuildPredicateRoutine: expansion at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:928:7
    private boolean scan$IndexingParser_ccc$928$7() {
        remainingLookahead = UNLIMITED;
        currentLookaheadToken = lastConsumedToken;
        final boolean scanToEnd = false;
        try {
            // BuildPredicateCode macro
            if (remainingLookahead <= 0) {
                passedPredicate = true;
                return !hitFailure;
            }
            if (!check$IndexingParser_ccc$928$11(true)) return false;
            // End BuildPredicateCode macro
            return true;
        } finally {
            lookaheadRoutineNesting = 0;
            currentLookaheadToken = null;
            hitFailure = false;
        }
    }

    // lookahead routine for lookahead at:
    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:448:17
    private boolean check$IndexingParser_ccc$448$21(boolean scanToEnd) {
        int prevRemainingLookahead = remainingLookahead;
        boolean prevHitFailure = hitFailure;
        Token prevScanAheadToken = currentLookaheadToken;
        try {
            lookaheadRoutineNesting++;
            if (hitFailure) return false;
            if (remainingLookahead <= 0) {
                return true;
            }
            // Lookahead Code for OneOrMore specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:448:22
            if (!scanToken(first_set$IndexingParser_ccc$448$23)) return false;
            boolean passedPredicate6 = passedPredicate;
            try {
                while (remainingLookahead > 0 && !hitFailure) {
                    Token token7 = currentLookaheadToken;
                    passedPredicate = false;
                    if (!scanToken(first_set$IndexingParser_ccc$448$23)) {
                        if (passedPredicate && !legacyGlitchyLookahead) return false;
                        currentLookaheadToken = token7;
                        break;
                    }
                }
            } finally {
                passedPredicate = passedPredicate6;
            }
            hitFailure = false;
            return !hitFailure;
        } finally {
            lookaheadRoutineNesting--;
            currentLookaheadToken = prevScanAheadToken;
            remainingLookahead = prevRemainingLookahead;
            hitFailure = prevHitFailure;
        }
    }

    // lookahead routine for lookahead at:
    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:449:9
    private boolean check$IndexingParser_ccc$449$13(boolean scanToEnd) {
        int prevRemainingLookahead = remainingLookahead;
        boolean prevHitFailure = hitFailure;
        Token prevScanAheadToken = currentLookaheadToken;
        try {
            lookaheadRoutineNesting++;
            if (hitFailure) return false;
            if (remainingLookahead <= 0) {
                return true;
            }
            // Lookahead Code for OneOrMore specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:449:14
            if (!scanToken(first_set$IndexingParser_ccc$449$15)) return false;
            boolean passedPredicate6 = passedPredicate;
            try {
                while (remainingLookahead > 0 && !hitFailure) {
                    Token token7 = currentLookaheadToken;
                    passedPredicate = false;
                    if (!scanToken(first_set$IndexingParser_ccc$449$15)) {
                        if (passedPredicate && !legacyGlitchyLookahead) return false;
                        currentLookaheadToken = token7;
                        break;
                    }
                }
            } finally {
                passedPredicate = passedPredicate6;
            }
            hitFailure = false;
            return !hitFailure;
        } finally {
            lookaheadRoutineNesting--;
            currentLookaheadToken = prevScanAheadToken;
            remainingLookahead = prevRemainingLookahead;
            hitFailure = prevHitFailure;
        }
    }

    // lookahead routine for lookahead at:
    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:637:18
    private boolean check$IndexingParser_ccc$637$22(boolean scanToEnd) {
        int prevRemainingLookahead = remainingLookahead;
        boolean prevHitFailure = hitFailure;
        Token prevScanAheadToken = currentLookaheadToken;
        try {
            lookaheadRoutineNesting++;
            if (hitFailure) return false;
            if (remainingLookahead <= 0) {
                return true;
            }
            // Lookahead Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:637:23
            // NonTerminal integerValue at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:637:23
            pushOntoLookaheadStack("randomExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 637, 23);
            currentLookaheadProduction = "integerValue";
            try {
                if (!check$integerValue(true)) return false;
            } finally {
                popLookaheadStack();
            }
            return !hitFailure;
        } finally {
            lookaheadRoutineNesting--;
            currentLookaheadToken = prevScanAheadToken;
            remainingLookahead = prevRemainingLookahead;
            hitFailure = prevHitFailure;
        }
    }

    // lookahead routine for lookahead at:
    // /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:928:7
    private boolean check$IndexingParser_ccc$928$11(boolean scanToEnd) {
        int prevRemainingLookahead = remainingLookahead;
        boolean prevHitFailure = hitFailure;
        Token prevScanAheadToken = currentLookaheadToken;
        try {
            lookaheadRoutineNesting++;
            if (hitFailure) return false;
            if (remainingLookahead <= 0) {
                return true;
            }
            // Lookahead Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:928:12
            if (!scanToken(DOT)) return false;
            if (hitFailure) return false;
            if (remainingLookahead <= 0) {
                return true;
            }
            // Lookahead Code for NonTerminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:928:18
            if (!scanToken(first_set$IndexingParser_ccc$928$18)) return false;
            return !hitFailure;
        } finally {
            lookaheadRoutineNesting--;
            currentLookaheadToken = prevScanAheadToken;
            remainingLookahead = prevRemainingLookahead;
            hitFailure = prevHitFailure;
        }
    }

    // BuildProductionLookaheadMethod macro
    private boolean check$integerValue(boolean scanToEnd) {
        if (hitFailure) return false;
        if (remainingLookahead <= 0) {
            return true;
        }
        // Lookahead Code for ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:977:7
        Token token5 = currentLookaheadToken;
        boolean passedPredicate5 = passedPredicate;
        passedPredicate = false;
        try {
            if (!scanToken(ADD, SUB)) {
                if (passedPredicate && !legacyGlitchyLookahead) return false;
                currentLookaheadToken = token5;
                hitFailure = false;
            }
        } finally {
            passedPredicate = passedPredicate5;
        }
        if (hitFailure) return false;
        if (remainingLookahead <= 0) {
            return true;
        }
        // Lookahead Code for Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:978:7
        if (!scanToken(INTEGER)) return false;
        if (hitFailure) return false;
        if (remainingLookahead <= 0) {
            return true;
        }
        // Lookahead Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:978:23
        if (hitFailure) return false;
        if (remainingLookahead <= 0) {
            return true;
        }
        // Lookahead Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:979:5
        return true;
    }

    private ArrayList parsingStack = new ArrayList<>();
    private final ArrayList lookaheadStack = new ArrayList<>();
    private EnumSet currentFollowSet;

    private void pushOntoCallStack(String methodName, String fileName, int line, int column) {
        parsingStack.add(new NonTerminalCall("IndexingParser", token_source, fileName, methodName, line, column, currentFollowSet));
    }

    private void popCallStack() {
        NonTerminalCall ntc = parsingStack.remove(parsingStack.size() - 1);
        this.currentlyParsedProduction = ntc.productionName;
        this.outerFollowSet = (EnumSet) ntc.followSet;
    }

    private void restoreCallStack(int prevSize) {
        while (parsingStack.size() > prevSize) {
            popCallStack();
        }
    }

    private void pushOntoLookaheadStack(String methodName, String fileName, int line, int column) {
        lookaheadStack.add(new NonTerminalCall("IndexingParser", token_source, fileName, methodName, line, column, null));
    }

    private void popLookaheadStack() {
        NonTerminalCall ntc = lookaheadStack.remove(lookaheadStack.size() - 1);
        this.currentLookaheadProduction = ntc.productionName;
    }

    void dumpLookaheadStack(PrintStream ps) {
        ListIterator it = lookaheadStack.listIterator(lookaheadStack.size());
        while (it.hasPrevious()) {
            it.previous().dump(ps);
        }
    }

    void dumpCallStack(PrintStream ps) {
        ListIterator it = parsingStack.listIterator(parsingStack.size());
        while (it.hasPrevious()) {
            it.previous().dump(ps);
        }
    }

    void dumpLookaheadCallStack(PrintStream ps) {
        ps.println("Current Parser Production is: " + currentlyParsedProduction);
        ps.println("Current Lookahead Production is: " + currentLookaheadProduction);
        ps.println("---Lookahead Stack---");
        dumpLookaheadStack(ps);
        ps.println("---Call Stack---");
        dumpCallStack(ps);
    }

    private boolean tolerantParsing = true;
    // Are we pending a recovery routine to
    // get back on the rails?
    private boolean pendingRecovery;
    private java.util.List parsingProblems = new java.util.ArrayList<>();

    public java.util.List getParsingProblems() {
        return parsingProblems;
    }

    public boolean hasProblems() {
        return !parsingProblems.isEmpty();
    }

    void addParsingProblem(ParsingProblem problem) {
        parsingProblems.add(problem);
    }

    public boolean isParserTolerant() {
        return tolerantParsing;
    }

    public void setParserTolerant(boolean tolerantParsing) {
        this.tolerantParsing = tolerantParsing;
    }

    private Token consumeToken(TokenType expectedType, boolean tolerant, EnumSet followSet) {
        Token nextToken = nextToken(lastConsumedToken);
        if (nextToken.getType() != expectedType) {
            nextToken = handleUnexpectedTokenType(expectedType, nextToken, tolerant, followSet);
        }
        this.lastConsumedToken = nextToken;
        this.nextTokenType = null;
        if (buildTree && tokensAreNodes) {
            lastConsumedToken.open();
            pushNode(lastConsumedToken);
            lastConsumedToken.close();
        }
        // Check whether the very next token is in the follow set of the last consumed token
        // and if it is not, we check one token ahead to see if skipping the next token remedies
        // the problem.
        if (followSet != null && isParserTolerant()) {
            nextToken = nextToken(lastConsumedToken);
            if (!followSet.contains(nextToken.getType())) {
                Token nextNext = nextToken(nextToken);
                if (followSet.contains(nextNext.getType())) {
                    nextToken.setSkipped(true);
                }
            }
        }
        return lastConsumedToken;
    }

    private Token handleUnexpectedTokenType(TokenType expectedType, Token nextToken, boolean tolerant, EnumSet followSet) {
        if (!this.tolerantParsing) {
            throw new ParseException(nextToken, EnumSet.of(expectedType), parsingStack);
        }
        Token nextNext = nextToken(nextToken);
        if (nextNext.getType() == expectedType) {
            nextToken.setSkipped(true);
            pushNode(nextToken);
            return nextNext;
        }
        if (tolerant || followSet == null || followSet.contains(nextToken.getType())) {
            Token virtualToken = Token.newToken(expectedType, token_source, 0, 0);
            virtualToken.setVirtual(true);
            virtualToken.copyLocationInfo(nextToken);
            return virtualToken;
        }
        throw new ParseException(nextToken, EnumSet.of(expectedType), parsingStack);
    }

    private boolean buildTree = true;
    private boolean tokensAreNodes = true;
    private boolean unparsedTokensAreNodes = false;

    public boolean isTreeBuildingEnabled() {
        return buildTree;
    }

    public void setUnparsedTokensAreNodes(boolean unparsedTokensAreNodes) {
        this.unparsedTokensAreNodes = unparsedTokensAreNodes;
    }

    public void setTokensAreNodes(boolean tokensAreNodes) {
        this.tokensAreNodes = tokensAreNodes;
    }

    NodeScope currentNodeScope = new NodeScope();

    /**
    * @return the root node of the AST. It only makes sense to call
    * this after a successful parse.
    */
    public Node rootNode() {
        return currentNodeScope.rootNode();
    }

    /**
    * push a node onto the top of the node stack
    * @param n the node to push
    */
    public void pushNode(Node n) {
        currentNodeScope.add(n);
    }

    /**
    * @return the node on the top of the stack, and remove it from the
    * stack.
    */
    public Node popNode() {
        return currentNodeScope.pop();
    }

    /**
    * @return the node currently on the top of the tree-building stack.
    */
    public Node peekNode() {
        return currentNodeScope.peek();
    }

    /**
    * Puts the node on the top of the stack. However, unlike pushNode()
    * it replaces the node that is currently on the top of the stack.
    * This is effectively equivalent to popNode() followed by pushNode(n)
    * @param n the node to poke
    */
    public void pokeNode(Node n) {
        currentNodeScope.poke(n);
    }

    /**
    * @return the number of Nodes on the tree-building stack in the current node
    * scope.
    */
    public int nodeArity() {
        return currentNodeScope.size();
    }

    private void openNodeScope(Node n) {
        new NodeScope();
        if (n != null) {
            n.setTokenSource(lastConsumedToken.getTokenSource());
            // We set the begin/end offsets based on the ending location
            // of the last consumed token. So, we start with a Node
            // of length zero. Typically this is overridden in the
            // closeNodeScope() method, unless this node has no children
            n.setBeginOffset(lastConsumedToken.getEndOffset());
            n.setEndOffset(n.getBeginOffset());
            n.setTokenSource(this.token_source);
            n.open();
        }
    }

    /* A definite node is constructed from a specified number of
    * children.  That number of nodes are popped from the stack and
    * made the children of the definite node.  Then the definite node
    * is pushed on to the stack.
    * @param n is the node whose scope is being closed
    * @param num is the number of child nodes to pop as children
    * @return @{code true}
    */
    private boolean closeNodeScope(Node n, int num) {
        n.setBeginOffset(lastConsumedToken.getEndOffset());
        n.setEndOffset(lastConsumedToken.getEndOffset());
        currentNodeScope.close();
        ArrayList nodes = new ArrayList<>();
        for (int i = 0; i < num; i++) {
            nodes.add(popNode());
        }
        Collections.reverse(nodes);
        for (Node child : nodes) {
            if (child.getInputSource() == n.getInputSource()) {
                n.setBeginOffset(child.getBeginOffset());
                break;
            }
        }
        for (Node child : nodes) {
            if (unparsedTokensAreNodes && child instanceof Token) {
                Token tok = (Token) child;
                while (tok.previousCachedToken() != null && tok.previousCachedToken().isUnparsed()) {
                    tok = tok.previousCachedToken();
                }
                boolean locationSet = false;
                while (tok.isUnparsed()) {
                    n.add(tok);
                    if (!locationSet && tok.getInputSource() == n.getInputSource() && tok.getBeginOffset() < n.getBeginOffset()) {
                        n.setBeginOffset(tok.getBeginOffset());
                        locationSet = true;
                    }
                    tok = tok.nextCachedToken();
                }
            }
            if (child.getInputSource() == n.getInputSource()) {
                n.setEndOffset(child.getEndOffset());
            }
            n.add(child);
        }
        n.close();
        pushNode(n);
        return true;
    }

    /**
    * A conditional node is constructed if the condition is true.  All
    * the nodes that have been pushed since the node was opened are
    * made children of the conditional node, which is then pushed
    * on to the stack.  If the condition is false the node is not
    * constructed and they are left on the stack.
    */
    private boolean closeNodeScope(Node n, boolean condition) {
        if (n == null || !condition) {
            currentNodeScope.close();
            return false;
        }
        return closeNodeScope(n, nodeArity());
    }

    public boolean getBuildTree() {
        return buildTree;
    }

    public void setBuildTree(boolean buildTree) {
        this.buildTree = buildTree;
    }


    @SuppressWarnings("serial")
    class NodeScope extends ArrayList {
        NodeScope parentScope;

        NodeScope() {
            this.parentScope = IndexingParser.this.currentNodeScope;
            IndexingParser.this.currentNodeScope = this;
        }

        boolean isRootScope() {
            return parentScope == null;
        }

        Node rootNode() {
            NodeScope ns = this;
            while (ns.parentScope != null) {
                ns = ns.parentScope;
            }
            return ns.isEmpty() ? null : ns.get(0);
        }

        Node peek() {
            if (isEmpty()) {
                return parentScope == null ? null : parentScope.peek();
            }
            return get(size() - 1);
        }

        Node pop() {
            return isEmpty() ? parentScope.pop() : remove(size() - 1);
        }

        void poke(Node n) {
            if (isEmpty()) {
                parentScope.poke(n);
            } else {
                set(size() - 1, n);
            }
        }

        void close() {
            parentScope.addAll(this);
            IndexingParser.this.currentNodeScope = parentScope;
        }

        int nestingLevel() {
            int result = 0;
            NodeScope parent = this;
            while (parent.parentScope != null) {
                result++;
                parent = parent.parentScope;
            }
            return result;
        }

        public NodeScope clone() {
            NodeScope clone = (NodeScope) super.clone();
            if (parentScope != null) {
                clone.parentScope = parentScope.clone();
            }
            return clone;
        }

    }

}






© 2015 - 2024 Weber Informatics LLC | Privacy Policy