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

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

/* 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.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:247: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:247: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:252:7
            pushOntoCallStack("root", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 252, 7);
            if (outerFollowSet != null) {
                EnumSet newFollowSet = follow_set$IndexingParser_ccc$252$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:252: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:252:27
                EnumSet followSet32 = null;
                if (outerFollowSet != null) {
                    followSet32 = follow_set$IndexingParser_ccc$252$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:253: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:262: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:262: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:268:9
            consumeToken(LCURLY, false, follow_set$IndexingParser_ccc$268$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:268:18
            pushOntoCallStack("script", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 268, 18);
            outerFollowSet = follow_set$IndexingParser_ccc$268$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:268:32
            pushOntoCallStack("script", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 268, 32);
            outerFollowSet = follow_set$IndexingParser_ccc$268$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:268: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:268:68
            pushOntoCallStack("script", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 268, 68);
            outerFollowSet = follow_set$IndexingParser_ccc$268$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:269: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:269:9
                consumeToken(SCOLON, 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 ZeroOrOne specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:269:30
                if (first_set$IndexingParser_ccc$269$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: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 Terminal specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:269:85
            EnumSet followSet72 = null;
            if (outerFollowSet != null) {
                followSet72 = follow_set$IndexingParser_ccc$269$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:270: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:273: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:273: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:279:7
            pushOntoCallStack("statement", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 279, 7);
            if (outerFollowSet != null) {
                EnumSet newFollowSet = follow_set$IndexingParser_ccc$279$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:279: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:279: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:279:46
                consumeToken(PIPE, false, follow_set$IndexingParser_ccc$279$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:279:53
                pushOntoCallStack("statement", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 279, 53);
                outerFollowSet = follow_set$IndexingParser_ccc$279$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:279:65
                pushOntoCallStack("statement", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 279, 65);
                if (outerFollowSet != null) {
                    EnumSet newFollowSet = follow_set$IndexingParser_ccc$279$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:279: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:280: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:286: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:286: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:292:5
            pushOntoCallStack("expression", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 292, 5);
            if (outerFollowSet != null) {
                EnumSet newFollowSet = follow_set$IndexingParser_ccc$292$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:292: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:293: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:293:7
                consumeToken(CHOICE, false, follow_set$IndexingParser_ccc$293$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:293:16
                pushOntoCallStack("expression", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 293, 16);
                if (outerFollowSet != null) {
                    EnumSet newFollowSet = follow_set$IndexingParser_ccc$293$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:293: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:294: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:297: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:297: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:303:7
            pushOntoCallStack("nonChoiceExpression", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 303, 7);
            if (outerFollowSet != null) {
                EnumSet newFollowSet = follow_set$IndexingParser_ccc$303$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:303: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:303: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:303:40
                consumeToken(DOT, false, follow_set$IndexingParser_ccc$303$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:303:46
                pushOntoCallStack("nonChoiceExpression", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 303, 46);
                if (outerFollowSet != null) {
                    EnumSet newFollowSet = follow_set$IndexingParser_ccc$303$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:303: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:304: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:307: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:307: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:314:11
            pushOntoCallStack("math", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 314, 11);
            if (outerFollowSet != null) {
                EnumSet newFollowSet = follow_set$IndexingParser_ccc$314$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:314: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:315:7
            while (true) {
                if (!(first_set$IndexingParser_ccc$315$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:315:11
                    consumeToken(ADD, false, follow_set$IndexingParser_ccc$315$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:315: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:316:11
                    consumeToken(DIV, 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.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:317:11
                    consumeToken(MOD, 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.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:318:11
                    consumeToken(MUL, 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.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:319:11
                    consumeToken(SUB, 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.SUB;
                } else {
                    pushOntoCallStack("math", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 315, 11);
                    throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$315$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:320:11
                pushOntoCallStack("math", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 320, 11);
                if (outerFollowSet != null) {
                    EnumSet newFollowSet = follow_set$IndexingParser_ccc$320$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:320: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:321: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:326: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:326: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:331:7
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 331, 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = optimizePredicateExp();
                } 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = setLanguageExp();
                } finally {
                    popCallStack();
                }
            } else if (first_set$IndexingParser_ccc$363$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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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: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 = 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:387:9
                consumeToken(LPAREN, false, follow_set$IndexingParser_ccc$387$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:387:18
                pushOntoCallStack("value", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 387, 18);
                outerFollowSet = follow_set$IndexingParser_ccc$387$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:387:36
                EnumSet followSet487 = null;
                if (outerFollowSet != null) {
                    followSet487 = follow_set$IndexingParser_ccc$387$36.clone();
                    followSet487.addAll(outerFollowSet);
                }
                consumeToken(RPAREN, false, followSet487);
                // Code for CodeBlock specified at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:387: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", 331, 7);
                throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$331$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:388: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:391: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:391: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:396:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$396$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:396:19
            if (first_set$IndexingParser_ccc$396$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:396:21
                pushOntoCallStack("attributeExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 396, 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:397: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:400: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:400: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:402:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$402$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:403: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:406: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:406: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:408:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$408$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:409: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:412: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:412: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:416:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$416$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:416:18
            if (first_set$IndexingParser_ccc$416$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:416:20
                pushOntoCallStack("binarizeExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 416, 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:417: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:420: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:420: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:422:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$422$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:423: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:426: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:426: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:428:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$428$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:429: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:432: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:432: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:434:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$434$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:435: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:438: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:438: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:446:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$446$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:446:15
            if (scan$IndexingParser_ccc$446$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:446:44
                pushOntoCallStack("embedExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 446, 44);
                if (outerFollowSet != null) {
                    EnumSet newFollowSet = follow_set$IndexingParser_ccc$446$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:447:7
            while (true) {
                if (!(scan$IndexingParser_ccc$447$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:447:36
                pushOntoCallStack("embedExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 447, 36);
                if (outerFollowSet != null) {
                    EnumSet newFollowSet = follow_set$IndexingParser_ccc$447$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:447: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:449: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:455: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:455: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:460:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$460$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:460: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:460:18
                consumeToken(MAX_TOKEN_LENGTH, false, follow_set$IndexingParser_ccc$460$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:460:37
                consumeToken(COLON, false, follow_set$IndexingParser_ccc$460$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:460:45
                pushOntoCallStack("exactExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 460, 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:461: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:464: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:464: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:466:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$466$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:467: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:470: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:470: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:475:7
            consumeToken(FOR_EACH, false, follow_set$IndexingParser_ccc$475$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:475:18
            consumeToken(LCURLY, false, follow_set$IndexingParser_ccc$475$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:475:27
            pushOntoCallStack("forEachExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 475, 27);
            outerFollowSet = follow_set$IndexingParser_ccc$475$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:475:39
            pushOntoCallStack("forEachExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 475, 39);
            outerFollowSet = follow_set$IndexingParser_ccc$475$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:475:57
            pushOntoCallStack("forEachExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 475, 57);
            outerFollowSet = follow_set$IndexingParser_ccc$475$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:475:69
            EnumSet followSet40 = null;
            if (outerFollowSet != null) {
                followSet40 = follow_set$IndexingParser_ccc$475$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:476: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:479: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:479: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:484:7
            consumeToken(GET_FIELD, false, follow_set$IndexingParser_ccc$484$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:484:19
            pushOntoCallStack("getFieldExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 484, 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:485: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:488: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:488: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:493:7
            consumeToken(GET_VAR, false, follow_set$IndexingParser_ccc$493$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:493:17
            pushOntoCallStack("getVarExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 493, 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:494: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:497: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:497: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:502:7
            consumeToken(GUARD, false, follow_set$IndexingParser_ccc$502$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:502:15
            pushOntoCallStack("guardExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 502, 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:503: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:506: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:506: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:508:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$508$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:509: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:512: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:512: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:514:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$514$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:515: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:518: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:518: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:520:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$520$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:521: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:524: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:524: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:526:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$526$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:527: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:530: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:530: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:536:7
            consumeToken(IF, false, follow_set$IndexingParser_ccc$536$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:536:12
            consumeToken(LPAREN, false, follow_set$IndexingParser_ccc$536$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:536:21
            pushOntoCallStack("ifThenExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 536, 21);
            outerFollowSet = follow_set$IndexingParser_ccc$536$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:536:40
            pushOntoCallStack("ifThenExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 536, 40);
            outerFollowSet = follow_set$IndexingParser_ccc$536$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:536:58
            pushOntoCallStack("ifThenExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 536, 58);
            outerFollowSet = follow_set$IndexingParser_ccc$536$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:536:77
            consumeToken(RPAREN, false, follow_set$IndexingParser_ccc$536$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:537:7
            pushOntoCallStack("ifThenExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 537, 7);
            if (outerFollowSet != null) {
                EnumSet newFollowSet = follow_set$IndexingParser_ccc$537$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:537: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:537:27
                consumeToken(ELSE, false, follow_set$IndexingParser_ccc$537$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:537:34
                pushOntoCallStack("ifThenExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 537, 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:538: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:541: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:541: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:546:7
                EnumSet followSet24 = null;
                if (outerFollowSet != null) {
                    followSet24 = follow_set$IndexingParser_ccc$546$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:546: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:547:7
                EnumSet followSet35 = null;
                if (outerFollowSet != null) {
                    followSet35 = follow_set$IndexingParser_ccc$547$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:547: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:548:7
                EnumSet followSet46 = null;
                if (outerFollowSet != null) {
                    followSet46 = follow_set$IndexingParser_ccc$548$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:548: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:549:7
                EnumSet followSet57 = null;
                if (outerFollowSet != null) {
                    followSet57 = follow_set$IndexingParser_ccc$549$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:549: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:550:7
                EnumSet followSet68 = null;
                if (outerFollowSet != null) {
                    followSet68 = follow_set$IndexingParser_ccc$550$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:550: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:551:7
                EnumSet followSet79 = null;
                if (outerFollowSet != null) {
                    followSet79 = follow_set$IndexingParser_ccc$551$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:551: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", 546, 7);
                throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$546$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:552: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:555: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:555: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:560:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$560$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:560:15
            if (first_set$IndexingParser_ccc$560$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:560:17
                pushOntoCallStack("indexExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 560, 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:561: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:564: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:564: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:569:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$569$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:569:15
            if (first_set$IndexingParser_ccc$569$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:569:17
                pushOntoCallStack("inputExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 569, 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:570: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:573: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:573: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:578:7
            consumeToken(JOIN, false, follow_set$IndexingParser_ccc$578$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:578:14
            pushOntoCallStack("joinExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 578, 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:579: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:582: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:582: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:584:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$584$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:585: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:588: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:588: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:593:7
            consumeToken(NGRAM, false, follow_set$IndexingParser_ccc$593$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:593:15
            pushOntoCallStack("ngramExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 593, 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:594: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:597: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:597: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:599:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$599$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:600: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:603: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:603: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:605:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$605$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:606: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:609: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:609: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:611:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$611$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:612: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:615: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:615: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:620:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$620$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:620:21
            if (first_set$IndexingParser_ccc$620$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:620:23
                pushOntoCallStack("passthroughExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 620, 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:621: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:624: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:624: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:629:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$629$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:629:16
            if (scan$IndexingParser_ccc$629$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:629:41
                pushOntoCallStack("randomExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 629, 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:630: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:633: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:633: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:640:7
            consumeToken(SELECT_INPUT, false, follow_set$IndexingParser_ccc$640$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:640:22
            consumeToken(LCURLY, false, follow_set$IndexingParser_ccc$640$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:640:31
            pushOntoCallStack("selectInputExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 640, 31);
            outerFollowSet = follow_set$IndexingParser_ccc$640$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:640: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:640:45
                pushOntoCallStack("selectInputExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 640, 45);
                outerFollowSet = follow_set$IndexingParser_ccc$640$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:640:67
                consumeToken(COLON, false, follow_set$IndexingParser_ccc$640$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:640:75
                pushOntoCallStack("selectInputExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 640, 75);
                outerFollowSet = follow_set$IndexingParser_ccc$640$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:640:93
                consumeToken(SCOLON, false, follow_set$IndexingParser_ccc$640$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:640:102
                pushOntoCallStack("selectInputExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 640, 102);
                outerFollowSet = follow_set$IndexingParser_ccc$640$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:641:7
                cases.add(new Pair(str, exp));
                if (!(first_set$IndexingParser_ccc$640$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:641:65
            EnumSet followSet62 = null;
            if (outerFollowSet != null) {
                followSet62 = follow_set$IndexingParser_ccc$641$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:642: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:645: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:645: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:647:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$647$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:648: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:651: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:651: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:656:7
            pushOntoCallStack("setValueExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 656, 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:657: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:660: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:660: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:665:7
            consumeToken(SET_VAR, false, follow_set$IndexingParser_ccc$665$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:665:17
            pushOntoCallStack("setVarExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 665, 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:666: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:669: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:669: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:671:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$671$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:672: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:675: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:675: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:680:7
            consumeToken(SPLIT, false, follow_set$IndexingParser_ccc$680$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:680:15
            pushOntoCallStack("splitExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 680, 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:681: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:684: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:684: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:689:7
            consumeToken(SUBSTRING, false, follow_set$IndexingParser_ccc$689$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:689:19
            pushOntoCallStack("substringExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 689, 19);
            outerFollowSet = follow_set$IndexingParser_ccc$689$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:689:41
            pushOntoCallStack("substringExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 689, 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:690: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:693: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:693: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:698:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$698$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:698:17
            if (first_set$IndexingParser_ccc$698$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:698:19
                pushOntoCallStack("summaryExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 698, 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:699: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:702: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:702: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:709:7
            consumeToken(SWITCH, false, follow_set$IndexingParser_ccc$709$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:709:16
            consumeToken(LCURLY, false, follow_set$IndexingParser_ccc$709$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:709:25
            pushOntoCallStack("switchExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 709, 25);
            outerFollowSet = follow_set$IndexingParser_ccc$709$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:710: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:710:9
                consumeToken(CASE, false, follow_set$IndexingParser_ccc$710$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:710:16
                pushOntoCallStack("switchExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 710, 16);
                outerFollowSet = follow_set$IndexingParser_ccc$710$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:710:38
                consumeToken(COLON, false, follow_set$IndexingParser_ccc$710$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:710:46
                pushOntoCallStack("switchExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 710, 46);
                outerFollowSet = follow_set$IndexingParser_ccc$710$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:710: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:710:89
                consumeToken(SCOLON, false, follow_set$IndexingParser_ccc$710$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:710:98
                pushOntoCallStack("switchExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 710, 98);
                outerFollowSet = follow_set$IndexingParser_ccc$710$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:711: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:711:9
                consumeToken(CASE_DEFAULT, false, follow_set$IndexingParser_ccc$711$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:711:24
                consumeToken(COLON, false, follow_set$IndexingParser_ccc$711$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:711:32
                pushOntoCallStack("switchExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 711, 32);
                outerFollowSet = follow_set$IndexingParser_ccc$711$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:711:57
                consumeToken(SCOLON, false, follow_set$IndexingParser_ccc$711$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:711:66
                pushOntoCallStack("switchExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 711, 66);
                outerFollowSet = follow_set$IndexingParser_ccc$711$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:712:7
            EnumSet followSet94 = null;
            if (outerFollowSet != null) {
                followSet94 = follow_set$IndexingParser_ccc$712$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:713: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:716: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:716: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:718:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$718$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:719: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:722: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:722: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:727:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$727$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:727:18
            if (first_set$IndexingParser_ccc$727$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:727:20
                pushOntoCallStack("tokenizeExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 727, 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:728: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:731: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:731: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:740: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:740: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:740:7
                    EnumSet followSet25 = null;
                    if (outerFollowSet != null) {
                        followSet25 = follow_set$IndexingParser_ccc$740$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:740: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:740:16
                        consumeToken(COLON, false, follow_set$IndexingParser_ccc$740$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:740:24
                        pushOntoCallStack("tokenizeCfg", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 740, 24);
                        if (outerFollowSet != null) {
                            EnumSet newFollowSet = follow_set$IndexingParser_ccc$740$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:740: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:741:7
                    consumeToken(MAX_LENGTH, false, follow_set$IndexingParser_ccc$741$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:741:20
                    consumeToken(COLON, false, follow_set$IndexingParser_ccc$741$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:741:29
                    pushOntoCallStack("tokenizeCfg", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 741, 29);
                    if (outerFollowSet != null) {
                        EnumSet newFollowSet = follow_set$IndexingParser_ccc$741$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:741: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:742:7
                    consumeToken(MAX_OCCURRENCES, false, follow_set$IndexingParser_ccc$742$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:742:25
                    consumeToken(COLON, false, follow_set$IndexingParser_ccc$742$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:742:34
                    pushOntoCallStack("tokenizeCfg", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 742, 34);
                    if (outerFollowSet != null) {
                        EnumSet newFollowSet = follow_set$IndexingParser_ccc$742$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:742: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:743:7
                    consumeToken(MAX_TOKEN_LENGTH, false, follow_set$IndexingParser_ccc$743$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:743:26
                    consumeToken(COLON, false, follow_set$IndexingParser_ccc$743$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:743:34
                    pushOntoCallStack("tokenizeCfg", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 743, 34);
                    if (outerFollowSet != null) {
                        EnumSet newFollowSet = follow_set$IndexingParser_ccc$743$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:743: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:744:7
                    EnumSet followSet106 = null;
                    if (outerFollowSet != null) {
                        followSet106 = follow_set$IndexingParser_ccc$744$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:744: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", 740, 7);
                    throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$740$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:745: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:748: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:748: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:750:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$750$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:751: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:754: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:754: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:756:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$756$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:757: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:760: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:760: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:762:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$762$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:763: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:766: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:766: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:768:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$768$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:769: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:772: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:772: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:774:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$774$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:775: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:778: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:778: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:780:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$780$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:781: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:784: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:784: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:786:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$786$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:787: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:790: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:790: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:792:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$792$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:793: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:796: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:796: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:798:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$798$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:799: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:802: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:802: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:808:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$808$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:808: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:808: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:808:19
                    EnumSet followSet37 = null;
                    if (outerFollowSet != null) {
                        followSet37 = follow_set$IndexingParser_ccc$808$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:808: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:809:19
                    EnumSet followSet48 = null;
                    if (outerFollowSet != null) {
                        followSet48 = follow_set$IndexingParser_ccc$809$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:809: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:810: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:813: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:813: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:815:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$815$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:816: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:819: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:819: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:821:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$821$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:822: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:825: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:825: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:827:7
                EnumSet followSet24 = null;
                if (outerFollowSet != null) {
                    followSet24 = follow_set$IndexingParser_ccc$827$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:827:16
                EnumSet followSet33 = null;
                if (outerFollowSet != null) {
                    followSet33 = follow_set$IndexingParser_ccc$827$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", 827, 7);
                throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$827$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:828: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:831: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:831: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:833:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$833$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:834: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:837: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:837: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:839:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$839$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:840: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:843: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:843: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:848:7
                pushOntoCallStack("identifierStr", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 848, 7);
                try {
                    val = stringLiteral();
                } finally {
                    popCallStack();
                }
            } else if (first_set$IndexingParser_ccc$849$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:849:9
                    EnumSet followSet43 = null;
                    if (outerFollowSet != null) {
                        followSet43 = follow_set$IndexingParser_ccc$849$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:850:9
                    EnumSet followSet52 = null;
                    if (outerFollowSet != null) {
                        followSet52 = follow_set$IndexingParser_ccc$850$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:851:9
                    EnumSet followSet61 = null;
                    if (outerFollowSet != null) {
                        followSet61 = follow_set$IndexingParser_ccc$851$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:852:9
                    EnumSet followSet70 = null;
                    if (outerFollowSet != null) {
                        followSet70 = follow_set$IndexingParser_ccc$852$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:853:9
                    EnumSet followSet79 = null;
                    if (outerFollowSet != null) {
                        followSet79 = follow_set$IndexingParser_ccc$853$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:854:9
                    EnumSet followSet88 = null;
                    if (outerFollowSet != null) {
                        followSet88 = follow_set$IndexingParser_ccc$854$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:855:9
                    EnumSet followSet97 = null;
                    if (outerFollowSet != null) {
                        followSet97 = follow_set$IndexingParser_ccc$855$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:856:9
                    EnumSet followSet106 = null;
                    if (outerFollowSet != null) {
                        followSet106 = follow_set$IndexingParser_ccc$856$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:857:9
                    EnumSet followSet115 = null;
                    if (outerFollowSet != null) {
                        followSet115 = follow_set$IndexingParser_ccc$857$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:858:9
                    EnumSet followSet124 = null;
                    if (outerFollowSet != null) {
                        followSet124 = follow_set$IndexingParser_ccc$858$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:859:9
                    EnumSet followSet133 = null;
                    if (outerFollowSet != null) {
                        followSet133 = follow_set$IndexingParser_ccc$859$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:860:9
                    EnumSet followSet142 = null;
                    if (outerFollowSet != null) {
                        followSet142 = follow_set$IndexingParser_ccc$860$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:861:9
                    EnumSet followSet151 = null;
                    if (outerFollowSet != null) {
                        followSet151 = follow_set$IndexingParser_ccc$861$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:862:9
                    EnumSet followSet160 = null;
                    if (outerFollowSet != null) {
                        followSet160 = follow_set$IndexingParser_ccc$862$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:863:9
                    EnumSet followSet169 = null;
                    if (outerFollowSet != null) {
                        followSet169 = follow_set$IndexingParser_ccc$863$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:864:9
                    EnumSet followSet178 = null;
                    if (outerFollowSet != null) {
                        followSet178 = follow_set$IndexingParser_ccc$864$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:865:9
                    EnumSet followSet187 = null;
                    if (outerFollowSet != null) {
                        followSet187 = follow_set$IndexingParser_ccc$865$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:866:9
                    EnumSet followSet196 = null;
                    if (outerFollowSet != null) {
                        followSet196 = follow_set$IndexingParser_ccc$866$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:867:9
                    EnumSet followSet205 = null;
                    if (outerFollowSet != null) {
                        followSet205 = follow_set$IndexingParser_ccc$867$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:868:9
                    EnumSet followSet214 = null;
                    if (outerFollowSet != null) {
                        followSet214 = follow_set$IndexingParser_ccc$868$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:869:9
                    EnumSet followSet223 = null;
                    if (outerFollowSet != null) {
                        followSet223 = follow_set$IndexingParser_ccc$869$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:870:9
                    EnumSet followSet232 = null;
                    if (outerFollowSet != null) {
                        followSet232 = follow_set$IndexingParser_ccc$870$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:871:9
                    EnumSet followSet241 = null;
                    if (outerFollowSet != null) {
                        followSet241 = follow_set$IndexingParser_ccc$871$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:872:9
                    EnumSet followSet250 = null;
                    if (outerFollowSet != null) {
                        followSet250 = follow_set$IndexingParser_ccc$872$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:873:9
                    EnumSet followSet259 = null;
                    if (outerFollowSet != null) {
                        followSet259 = follow_set$IndexingParser_ccc$873$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:874:9
                    EnumSet followSet268 = null;
                    if (outerFollowSet != null) {
                        followSet268 = follow_set$IndexingParser_ccc$874$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:875:9
                    EnumSet followSet277 = null;
                    if (outerFollowSet != null) {
                        followSet277 = follow_set$IndexingParser_ccc$875$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:876:9
                    EnumSet followSet286 = null;
                    if (outerFollowSet != null) {
                        followSet286 = follow_set$IndexingParser_ccc$876$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:877:9
                    EnumSet followSet295 = null;
                    if (outerFollowSet != null) {
                        followSet295 = follow_set$IndexingParser_ccc$877$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:878:9
                    EnumSet followSet304 = null;
                    if (outerFollowSet != null) {
                        followSet304 = follow_set$IndexingParser_ccc$878$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:879:9
                    EnumSet followSet313 = null;
                    if (outerFollowSet != null) {
                        followSet313 = follow_set$IndexingParser_ccc$879$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:880:9
                    EnumSet followSet322 = null;
                    if (outerFollowSet != null) {
                        followSet322 = follow_set$IndexingParser_ccc$880$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:881:9
                    EnumSet followSet331 = null;
                    if (outerFollowSet != null) {
                        followSet331 = follow_set$IndexingParser_ccc$881$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:882:9
                    EnumSet followSet340 = null;
                    if (outerFollowSet != null) {
                        followSet340 = follow_set$IndexingParser_ccc$882$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:883:9
                    EnumSet followSet349 = null;
                    if (outerFollowSet != null) {
                        followSet349 = follow_set$IndexingParser_ccc$883$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:884:9
                    EnumSet followSet358 = null;
                    if (outerFollowSet != null) {
                        followSet358 = follow_set$IndexingParser_ccc$884$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:885:9
                    EnumSet followSet367 = null;
                    if (outerFollowSet != null) {
                        followSet367 = follow_set$IndexingParser_ccc$885$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:886:9
                    EnumSet followSet376 = null;
                    if (outerFollowSet != null) {
                        followSet376 = follow_set$IndexingParser_ccc$886$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:887:9
                    EnumSet followSet385 = null;
                    if (outerFollowSet != null) {
                        followSet385 = follow_set$IndexingParser_ccc$887$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:888:9
                    EnumSet followSet394 = null;
                    if (outerFollowSet != null) {
                        followSet394 = follow_set$IndexingParser_ccc$888$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:889:9
                    EnumSet followSet403 = null;
                    if (outerFollowSet != null) {
                        followSet403 = follow_set$IndexingParser_ccc$889$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:890:9
                    EnumSet followSet412 = null;
                    if (outerFollowSet != null) {
                        followSet412 = follow_set$IndexingParser_ccc$890$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:891:9
                    EnumSet followSet421 = null;
                    if (outerFollowSet != null) {
                        followSet421 = follow_set$IndexingParser_ccc$891$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:892:9
                    EnumSet followSet430 = null;
                    if (outerFollowSet != null) {
                        followSet430 = follow_set$IndexingParser_ccc$892$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:893:9
                    EnumSet followSet439 = null;
                    if (outerFollowSet != null) {
                        followSet439 = follow_set$IndexingParser_ccc$893$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:894:9
                    EnumSet followSet448 = null;
                    if (outerFollowSet != null) {
                        followSet448 = follow_set$IndexingParser_ccc$894$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:895:9
                    EnumSet followSet457 = null;
                    if (outerFollowSet != null) {
                        followSet457 = follow_set$IndexingParser_ccc$895$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:896:9
                    EnumSet followSet466 = null;
                    if (outerFollowSet != null) {
                        followSet466 = follow_set$IndexingParser_ccc$896$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:897:9
                    EnumSet followSet475 = null;
                    if (outerFollowSet != null) {
                        followSet475 = follow_set$IndexingParser_ccc$897$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:898:9
                    EnumSet followSet484 = null;
                    if (outerFollowSet != null) {
                        followSet484 = follow_set$IndexingParser_ccc$898$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:899:9
                    EnumSet followSet493 = null;
                    if (outerFollowSet != null) {
                        followSet493 = follow_set$IndexingParser_ccc$899$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:900:9
                    EnumSet followSet502 = null;
                    if (outerFollowSet != null) {
                        followSet502 = follow_set$IndexingParser_ccc$900$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:901:9
                    EnumSet followSet511 = null;
                    if (outerFollowSet != null) {
                        followSet511 = follow_set$IndexingParser_ccc$901$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:902:9
                    EnumSet followSet520 = null;
                    if (outerFollowSet != null) {
                        followSet520 = follow_set$IndexingParser_ccc$902$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:903:9
                    EnumSet followSet529 = null;
                    if (outerFollowSet != null) {
                        followSet529 = follow_set$IndexingParser_ccc$903$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:904:9
                    EnumSet followSet538 = null;
                    if (outerFollowSet != null) {
                        followSet538 = follow_set$IndexingParser_ccc$904$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:905:9
                    EnumSet followSet547 = null;
                    if (outerFollowSet != null) {
                        followSet547 = follow_set$IndexingParser_ccc$905$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:906:9
                    EnumSet followSet556 = null;
                    if (outerFollowSet != null) {
                        followSet556 = follow_set$IndexingParser_ccc$906$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:907:9
                    EnumSet followSet565 = null;
                    if (outerFollowSet != null) {
                        followSet565 = follow_set$IndexingParser_ccc$907$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:908:9
                    EnumSet followSet574 = null;
                    if (outerFollowSet != null) {
                        followSet574 = follow_set$IndexingParser_ccc$908$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", 849, 9);
                    throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$849$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:908: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", 848, 7);
                throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$848$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:909: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:913: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:913: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:919:7
            pushOntoCallStack("fieldName", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 919, 7);
            if (outerFollowSet != null) {
                EnumSet newFollowSet = follow_set$IndexingParser_ccc$919$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:919: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:919:54
            while (true) {
                if (!(scan$IndexingParser_ccc$920$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:920:36
                consumeToken(DOT, false, follow_set$IndexingParser_ccc$920$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:920: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:921:7
                pushOntoCallStack("fieldName", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 921, 7);
                if (outerFollowSet != null) {
                    EnumSet newFollowSet = follow_set$IndexingParser_ccc$921$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:921: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:922: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:925: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:925: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$930$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:930:7
                pushOntoCallStack("fieldValue", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 930, 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:930:30
                pushOntoCallStack("fieldValue", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 930, 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", 930, 7);
                throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$930$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:931: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:934: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:934: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:940: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:940: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:940:9
                consumeToken(ADD, false, follow_set$IndexingParser_ccc$940$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:940:17
                consumeToken(SUB, false, follow_set$IndexingParser_ccc$940$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:940: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:941:9
                EnumSet followSet57 = null;
                if (outerFollowSet != null) {
                    followSet57 = follow_set$IndexingParser_ccc$941$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:941: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:942:9
                EnumSet followSet68 = null;
                if (outerFollowSet != null) {
                    followSet68 = follow_set$IndexingParser_ccc$942$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:942: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:943:9
                EnumSet followSet79 = null;
                if (outerFollowSet != null) {
                    followSet79 = follow_set$IndexingParser_ccc$943$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:943: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:944:9
                EnumSet followSet90 = null;
                if (outerFollowSet != null) {
                    followSet90 = follow_set$IndexingParser_ccc$944$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:944: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", 941, 9);
                throw new ParseException(lastConsumedToken, first_set$IndexingParser_ccc$941$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:945: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:948: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:948: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:953:7
            pushOntoCallStack("stringValue", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 953, 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:954: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:957: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:957: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:959:7
            EnumSet followSet20 = null;
            if (outerFollowSet != null) {
                followSet20 = follow_set$IndexingParser_ccc$959$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:960: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:963: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:963: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:969: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:969: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:969:9
                consumeToken(ADD, false, follow_set$IndexingParser_ccc$969$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:969:17
                consumeToken(SUB, false, follow_set$IndexingParser_ccc$969$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:969: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:970:7
            EnumSet followSet46 = null;
            if (outerFollowSet != null) {
                followSet46 = follow_set$IndexingParser_ccc$970$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:970: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:971: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:974: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:974: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:976: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:976:7
                EnumSet followSet21 = null;
                if (outerFollowSet != null) {
                    followSet21 = follow_set$IndexingParser_ccc$976$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$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$269$32 = first_set$IndexingParser_ccc$269$32_init();

    private static EnumSet first_set$IndexingParser_ccc$269$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, 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$315$9 = tokenTypeSet(ADD, SUB, MUL, DIV, MOD);
    private static final EnumSet first_set$IndexingParser_ccc$315$11$ = tokenTypeSet(ADD, SUB, MUL, DIV, MOD);
    private static final EnumSet first_set$IndexingParser_ccc$331$7 = first_set$IndexingParser_ccc$331$7_init();

    private static EnumSet first_set$IndexingParser_ccc$331$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, 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$363$7 = tokenTypeSet(ADD, SUB, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    private static final EnumSet first_set$IndexingParser_ccc$396$21 = first_set$IndexingParser_ccc$396$21_init();

    private static EnumSet first_set$IndexingParser_ccc$396$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$416$20 = tokenTypeSet(ADD, SUB, INTEGER, LONG, DOUBLE, FLOAT);
    private static final EnumSet first_set$IndexingParser_ccc$446$23 = first_set$IndexingParser_ccc$446$23_init();

    private static EnumSet first_set$IndexingParser_ccc$446$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$447$15 = first_set$IndexingParser_ccc$447$15_init();

    private static EnumSet first_set$IndexingParser_ccc$447$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$546$7$ = tokenTypeSet(EQ, NE, LT, LE, GT, GE);
    private static final EnumSet first_set$IndexingParser_ccc$560$17 = first_set$IndexingParser_ccc$560$17_init();

    private static EnumSet first_set$IndexingParser_ccc$560$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$569$17 = first_set$IndexingParser_ccc$569$17_init();

    private static EnumSet first_set$IndexingParser_ccc$569$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$620$23 = first_set$IndexingParser_ccc$620$23_init();

    private static EnumSet first_set$IndexingParser_ccc$620$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$640$45$ = first_set$IndexingParser_ccc$640$45$_init();

    private static EnumSet first_set$IndexingParser_ccc$640$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$698$19 = first_set$IndexingParser_ccc$698$19_init();

    private static EnumSet first_set$IndexingParser_ccc$698$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$727$20 = tokenTypeSet(MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet first_set$IndexingParser_ccc$740$7$ = tokenTypeSet(MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet first_set$IndexingParser_ccc$827$7$ = tokenTypeSet(TRUE, FALSE);
    private static final EnumSet first_set$IndexingParser_ccc$848$7 = first_set$IndexingParser_ccc$848$7_init();

    private static EnumSet first_set$IndexingParser_ccc$848$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$849$7 = first_set$IndexingParser_ccc$849$7_init();

    private static EnumSet first_set$IndexingParser_ccc$849$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$849$9$ = first_set$IndexingParser_ccc$849$9$_init();

    private static EnumSet first_set$IndexingParser_ccc$849$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$920$18 = first_set$IndexingParser_ccc$920$18_init();

    private static EnumSet first_set$IndexingParser_ccc$920$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$930$7$ = tokenTypeSet(ADD, SUB, INTEGER, LONG, DOUBLE, FLOAT, STRING);
    private static final EnumSet first_set$IndexingParser_ccc$930$7 = tokenTypeSet(ADD, SUB, INTEGER, LONG, DOUBLE, FLOAT);
    private static final EnumSet first_set$IndexingParser_ccc$941$9$ = tokenTypeSet(INTEGER, LONG, DOUBLE, FLOAT);
    private static final EnumSet follow_set$IndexingParser_ccc$252$7 = tokenTypeSet(SCOLON);
    private static final EnumSet follow_set$IndexingParser_ccc$252$27 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$268$9 = follow_set$IndexingParser_ccc$268$9_init();

    private static EnumSet follow_set$IndexingParser_ccc$268$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, 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$268$18 = follow_set$IndexingParser_ccc$268$18_init();

    private static EnumSet follow_set$IndexingParser_ccc$268$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, 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$268$32 = tokenTypeSet(NL, RCURLY, SCOLON);
    private static final EnumSet follow_set$IndexingParser_ccc$268$68 = tokenTypeSet(RCURLY, SCOLON);
    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, 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, 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, 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, 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$269$85 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$279$7 = tokenTypeSet(PIPE);
    private static final EnumSet follow_set$IndexingParser_ccc$279$46 = follow_set$IndexingParser_ccc$279$46_init();

    private static EnumSet follow_set$IndexingParser_ccc$279$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, 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$279$53 = follow_set$IndexingParser_ccc$279$53_init();

    private static EnumSet follow_set$IndexingParser_ccc$279$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, 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$279$65 = tokenTypeSet(PIPE);
    private static final EnumSet follow_set$IndexingParser_ccc$292$5 = tokenTypeSet(CHOICE);
    private static final EnumSet follow_set$IndexingParser_ccc$293$7 = follow_set$IndexingParser_ccc$293$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$293$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, 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$293$16 = tokenTypeSet(CHOICE);
    private static final EnumSet follow_set$IndexingParser_ccc$303$7 = tokenTypeSet(DOT);
    private static final EnumSet follow_set$IndexingParser_ccc$303$40 = follow_set$IndexingParser_ccc$303$40_init();

    private static EnumSet follow_set$IndexingParser_ccc$303$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, 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$303$46 = tokenTypeSet(DOT);
    private static final EnumSet follow_set$IndexingParser_ccc$314$11 = tokenTypeSet(ADD, SUB, MUL, DIV, MOD);
    private static final EnumSet follow_set$IndexingParser_ccc$315$11 = follow_set$IndexingParser_ccc$315$11_init();

    private static EnumSet follow_set$IndexingParser_ccc$315$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, 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$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, 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, 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, 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, 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 = tokenTypeSet(ADD, SUB, MUL, DIV, MOD);
    private static final EnumSet follow_set$IndexingParser_ccc$387$9 = follow_set$IndexingParser_ccc$387$9_init();

    private static EnumSet follow_set$IndexingParser_ccc$387$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, 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$387$18 = tokenTypeSet(RPAREN);
    private static final EnumSet follow_set$IndexingParser_ccc$387$36 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$396$7 = follow_set$IndexingParser_ccc$396$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$396$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$402$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$408$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$416$7 = tokenTypeSet(ADD, SUB, INTEGER, LONG, DOUBLE, FLOAT);
    private static final EnumSet follow_set$IndexingParser_ccc$422$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$428$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$434$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$446$7 = follow_set$IndexingParser_ccc$446$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$446$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$446$44 = follow_set$IndexingParser_ccc$446$44_init();

    private static EnumSet follow_set$IndexingParser_ccc$446$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$447$36 = follow_set$IndexingParser_ccc$447$36_init();

    private static EnumSet follow_set$IndexingParser_ccc$447$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$460$7 = tokenTypeSet(MAX_TOKEN_LENGTH);
    private static final EnumSet follow_set$IndexingParser_ccc$460$18 = tokenTypeSet(COLON);
    private static final EnumSet follow_set$IndexingParser_ccc$460$37 = tokenTypeSet(ADD, SUB, INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$466$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$475$7 = tokenTypeSet(LCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$475$18 = follow_set$IndexingParser_ccc$475$18_init();

    private static EnumSet follow_set$IndexingParser_ccc$475$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, 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$475$27 = follow_set$IndexingParser_ccc$475$27_init();

    private static EnumSet follow_set$IndexingParser_ccc$475$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, 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$475$39 = tokenTypeSet(NL, RCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$475$57 = tokenTypeSet(RCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$475$69 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$484$7 = follow_set$IndexingParser_ccc$484$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$484$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$493$7 = follow_set$IndexingParser_ccc$493$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$493$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$502$7 = tokenTypeSet(LCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$508$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$514$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$520$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$526$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$536$7 = tokenTypeSet(LPAREN);
    private static final EnumSet follow_set$IndexingParser_ccc$536$12 = follow_set$IndexingParser_ccc$536$12_init();

    private static EnumSet follow_set$IndexingParser_ccc$536$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, 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$536$21 = tokenTypeSet(EQ, NE, LT, LE, GT, GE);
    private static final EnumSet follow_set$IndexingParser_ccc$536$40 = follow_set$IndexingParser_ccc$536$40_init();

    private static EnumSet follow_set$IndexingParser_ccc$536$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, 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$536$58 = tokenTypeSet(RPAREN);
    private static final EnumSet follow_set$IndexingParser_ccc$536$77 = tokenTypeSet(LCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$537$7 = tokenTypeSet(ELSE);
    private static final EnumSet follow_set$IndexingParser_ccc$537$27 = tokenTypeSet(LCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$546$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$547$7 = EnumSet.noneOf(TokenType.class);
    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$560$7 = follow_set$IndexingParser_ccc$560$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$560$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$569$7 = follow_set$IndexingParser_ccc$569$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$569$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$578$7 = tokenTypeSet(STRING);
    private static final EnumSet follow_set$IndexingParser_ccc$584$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$593$7 = tokenTypeSet(ADD, SUB, INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$599$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$605$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$611$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$620$7 = follow_set$IndexingParser_ccc$620$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$620$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$629$7 = tokenTypeSet(ADD, SUB, INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$640$7 = tokenTypeSet(LCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$640$22 = follow_set$IndexingParser_ccc$640$22_init();

    private static EnumSet follow_set$IndexingParser_ccc$640$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$640$31 = follow_set$IndexingParser_ccc$640$31_init();

    private static EnumSet follow_set$IndexingParser_ccc$640$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$640$45 = tokenTypeSet(COLON);
    private static final EnumSet follow_set$IndexingParser_ccc$640$67 = follow_set$IndexingParser_ccc$640$67_init();

    private static EnumSet follow_set$IndexingParser_ccc$640$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, 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$640$75 = tokenTypeSet(SCOLON);
    private static final EnumSet follow_set$IndexingParser_ccc$640$93 = follow_set$IndexingParser_ccc$640$93_init();

    private static EnumSet follow_set$IndexingParser_ccc$640$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$640$102 = follow_set$IndexingParser_ccc$640$102_init();

    private static EnumSet follow_set$IndexingParser_ccc$640$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$641$65 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$647$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$665$7 = follow_set$IndexingParser_ccc$665$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$665$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$671$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$680$7 = tokenTypeSet(STRING);
    private static final EnumSet follow_set$IndexingParser_ccc$689$7 = tokenTypeSet(ADD, SUB, INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$689$19 = tokenTypeSet(ADD, SUB, INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$698$7 = follow_set$IndexingParser_ccc$698$7_init();

    private static EnumSet follow_set$IndexingParser_ccc$698$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$709$7 = tokenTypeSet(LCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$709$16 = tokenTypeSet(NL, CASE);
    private static final EnumSet follow_set$IndexingParser_ccc$709$25 = tokenTypeSet(CASE);
    private static final EnumSet follow_set$IndexingParser_ccc$710$9 = tokenTypeSet(STRING);
    private static final EnumSet follow_set$IndexingParser_ccc$710$16 = tokenTypeSet(COLON);
    private static final EnumSet follow_set$IndexingParser_ccc$710$38 = follow_set$IndexingParser_ccc$710$38_init();

    private static EnumSet follow_set$IndexingParser_ccc$710$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, 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$710$46 = tokenTypeSet(SCOLON);
    private static final EnumSet follow_set$IndexingParser_ccc$710$89 = tokenTypeSet(NL, RCURLY, CASE, CASE_DEFAULT);
    private static final EnumSet follow_set$IndexingParser_ccc$710$98 = tokenTypeSet(RCURLY, CASE, CASE_DEFAULT);
    private static final EnumSet follow_set$IndexingParser_ccc$711$9 = tokenTypeSet(COLON);
    private static final EnumSet follow_set$IndexingParser_ccc$711$24 = follow_set$IndexingParser_ccc$711$24_init();

    private static EnumSet follow_set$IndexingParser_ccc$711$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, 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$711$32 = tokenTypeSet(SCOLON);
    private static final EnumSet follow_set$IndexingParser_ccc$711$57 = tokenTypeSet(NL, RCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$711$66 = tokenTypeSet(RCURLY);
    private static final EnumSet follow_set$IndexingParser_ccc$712$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$718$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$727$7 = tokenTypeSet(MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet follow_set$IndexingParser_ccc$740$7 = tokenTypeSet(COLON, MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet follow_set$IndexingParser_ccc$740$16 = tokenTypeSet(STRING);
    private static final EnumSet follow_set$IndexingParser_ccc$740$24 = tokenTypeSet(MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet follow_set$IndexingParser_ccc$741$7 = tokenTypeSet(COLON);
    private static final EnumSet follow_set$IndexingParser_ccc$741$20 = tokenTypeSet(ADD, SUB, INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$741$29 = tokenTypeSet(MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet follow_set$IndexingParser_ccc$742$7 = tokenTypeSet(COLON);
    private static final EnumSet follow_set$IndexingParser_ccc$742$25 = tokenTypeSet(ADD, SUB, INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$742$34 = tokenTypeSet(MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet follow_set$IndexingParser_ccc$743$7 = tokenTypeSet(COLON);
    private static final EnumSet follow_set$IndexingParser_ccc$743$26 = tokenTypeSet(ADD, SUB, INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$743$34 = tokenTypeSet(MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet follow_set$IndexingParser_ccc$744$7 = tokenTypeSet(MAX_LENGTH, MAX_OCCURRENCES, MAX_TOKEN_LENGTH, NORMALIZE, STEM);
    private static final EnumSet follow_set$IndexingParser_ccc$750$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$756$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$762$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$768$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$774$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$780$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$786$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$792$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$798$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$808$7 = tokenTypeSet(CREATE_IF_NON_EXISTENT, REMOVE_IF_ZERO);
    private static final EnumSet follow_set$IndexingParser_ccc$808$19 = tokenTypeSet(CREATE_IF_NON_EXISTENT, REMOVE_IF_ZERO);
    private static final EnumSet follow_set$IndexingParser_ccc$809$19 = tokenTypeSet(CREATE_IF_NON_EXISTENT, REMOVE_IF_ZERO);
    private static final EnumSet follow_set$IndexingParser_ccc$815$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$821$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$827$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$827$16 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$833$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$839$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$849$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$850$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$851$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$852$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$853$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$854$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$855$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$856$9 = 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$919$7 = tokenTypeSet(DOT);
    private static final EnumSet follow_set$IndexingParser_ccc$920$36 = follow_set$IndexingParser_ccc$920$36_init();

    private static EnumSet follow_set$IndexingParser_ccc$920$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$921$7 = tokenTypeSet(DOT);
    private static final EnumSet follow_set$IndexingParser_ccc$940$9 = tokenTypeSet(INTEGER, LONG, DOUBLE, FLOAT);
    private static final EnumSet follow_set$IndexingParser_ccc$940$17 = tokenTypeSet(INTEGER, LONG, DOUBLE, FLOAT);
    private static final EnumSet follow_set$IndexingParser_ccc$941$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$942$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$943$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$944$9 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$959$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$969$9 = tokenTypeSet(INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$969$17 = tokenTypeSet(INTEGER);
    private static final EnumSet follow_set$IndexingParser_ccc$970$7 = EnumSet.noneOf(TokenType.class);
    private static final EnumSet follow_set$IndexingParser_ccc$976$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:446:17
    private boolean scan$IndexingParser_ccc$446$17() {
        remainingLookahead = UNLIMITED;
        currentLookaheadToken = lastConsumedToken;
        final boolean scanToEnd = false;
        try {
            // BuildPredicateCode macro
            if (remainingLookahead <= 0) {
                passedPredicate = true;
                return !hitFailure;
            }
            if (!check$IndexingParser_ccc$446$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:447:9
    private boolean scan$IndexingParser_ccc$447$9() {
        remainingLookahead = UNLIMITED;
        currentLookaheadToken = lastConsumedToken;
        final boolean scanToEnd = false;
        try {
            // BuildPredicateCode macro
            if (remainingLookahead <= 0) {
                passedPredicate = true;
                return !hitFailure;
            }
            if (!check$IndexingParser_ccc$447$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:629:18
    private boolean scan$IndexingParser_ccc$629$18() {
        remainingLookahead = UNLIMITED;
        currentLookaheadToken = lastConsumedToken;
        final boolean scanToEnd = false;
        try {
            // BuildPredicateCode macro
            if (remainingLookahead <= 0) {
                passedPredicate = true;
                return !hitFailure;
            }
            if (!check$IndexingParser_ccc$629$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:920:7
    private boolean scan$IndexingParser_ccc$920$7() {
        remainingLookahead = UNLIMITED;
        currentLookaheadToken = lastConsumedToken;
        final boolean scanToEnd = false;
        try {
            // BuildPredicateCode macro
            if (remainingLookahead <= 0) {
                passedPredicate = true;
                return !hitFailure;
            }
            if (!check$IndexingParser_ccc$920$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:446:17
    private boolean check$IndexingParser_ccc$446$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:446:22
            if (!scanToken(first_set$IndexingParser_ccc$446$23)) return false;
            boolean passedPredicate6 = passedPredicate;
            try {
                while (remainingLookahead > 0 && !hitFailure) {
                    Token token7 = currentLookaheadToken;
                    passedPredicate = false;
                    if (!scanToken(first_set$IndexingParser_ccc$446$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:447:9
    private boolean check$IndexingParser_ccc$447$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:447:14
            if (!scanToken(first_set$IndexingParser_ccc$447$15)) return false;
            boolean passedPredicate6 = passedPredicate;
            try {
                while (remainingLookahead > 0 && !hitFailure) {
                    Token token7 = currentLookaheadToken;
                    passedPredicate = false;
                    if (!scanToken(first_set$IndexingParser_ccc$447$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:629:18
    private boolean check$IndexingParser_ccc$629$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:629:23
            // NonTerminal integerValue at /workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc:629:23
            pushOntoLookaheadStack("randomExp", "/workspace/build/buildkite/vespaai/vespa-engine-vespa/integration/schema-language-server/language-server/src/main/ccc/indexinglanguage/IndexingParser.ccc", 629, 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:920:7
    private boolean check$IndexingParser_ccc$920$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:920: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:920:18
            if (!scanToken(first_set$IndexingParser_ccc$920$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:969: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:970: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:970: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:971: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 - 2025 Weber Informatics LLC | Privacy Policy