001/* GoloParser.java */
002/* Generated By:JJTree&JavaCC: Do not edit this line. GoloParser.java */
003package org.eclipse.golo.compiler.parser;
004
005import java.util.List;
006import java.util.LinkedList;
007import java.util.LinkedHashSet;
008import java.util.Collections;
009import java.math.BigDecimal;
010import java.math.BigInteger;
011
012import org.eclipse.golo.compiler.utils.StringUnescaping;
013import org.eclipse.golo.compiler.utils.StringBlockIndenter;
014import org.eclipse.golo.compiler.GoloCompilationException;
015
016public class GoloParser/*@bgen(jjtree)*/implements GoloParserTreeConstants, GoloParserConstants {/*@bgen(jjtree)*/
017  protected JJTGoloParserState jjtree = new JJTGoloParserState();
018  public GoloCompilationException.Builder exceptionBuilder;
019
020  private boolean errorAlreadyReported = false;
021
022  void skipto(int kind, ParseException e, GoloASTNode node) throws ParseException {
023    if (exceptionBuilder == null) {
024      throw e;
025    }
026    if (!errorAlreadyReported) {
027      exceptionBuilder.report(e, node);
028      errorAlreadyReported = true;
029    }
030    if ("<EOF>".equals(e.tokenImage[0])) {
031      return;
032    }
033    Token t;
034    do {
035      t = getNextToken();
036    } while (t.kind != kind);
037  }
038
039  public static class ParserClassRef {
040
041    public String name;
042
043    public ParserClassRef(String name) {
044      this.name = name;
045    }
046
047    @Override
048    public String toString() {
049      return "Class<" + name + ">";
050    }
051  }
052
053  public static class FunctionRef {
054
055    public String module;
056    public String name;
057    public int arity;
058    public boolean varargs;
059
060    public FunctionRef(String module, String name, int arity, boolean varargs) {
061      this.module = module;
062      this.name = name;
063      this.arity = arity;
064      this.varargs = varargs;
065    }
066
067    @Override
068    public String toString() {
069      return "FunctionRef{module=" + module
070                          + ",name=" + name
071                          + ",arity=" + arity
072                          + (varargs ? ",varargs" : "")
073                          + "}";
074    }
075  }
076
077  void error() throws ParseException {/*@bgen(jjtree) error */
078ASTerror jjtn000 = new ASTerror(JJTERROR);
079boolean jjtc000 = true;
080jjtree.openNodeScope(jjtn000);
081jjtn000.jjtSetFirstToken(getToken(1));
082try {throw generateParseException();/*@bgen(jjtree)*/
083} finally {
084  if (jjtc000) {
085    jjtree.closeNodeScope(jjtn000, true);
086    jjtn000.jjtSetLastToken(getToken(0));
087  }
088}
089  }
090
091  final public void BlankLine() throws ParseException {
092    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
093    case NEWLINE:{
094      jj_consume_token(NEWLINE);
095      break;
096      }
097    case COMMENT:{
098      jj_consume_token(COMMENT);
099      break;
100      }
101    default:
102      jj_la1[0] = jj_gen;
103      jj_consume_token(-1);
104      throw new ParseException();
105    }
106  }
107
108  final public void BlankLines() throws ParseException {
109    label_1:
110    while (true) {
111      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
112      case NEWLINE:
113      case COMMENT:{
114        ;
115        break;
116        }
117      default:
118        jj_la1[1] = jj_gen;
119        break label_1;
120      }
121      BlankLine();
122    }
123  }
124
125  final public String QualifiedName() throws ParseException {Token rootToken;
126  Token nextToken;
127  StringBuilder nameBuilder;
128    rootToken = jj_consume_token(IDENTIFIER);
129nameBuilder = new StringBuilder(rootToken.image);
130    label_2:
131    while (true) {
132      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
133      case 72:{
134        ;
135        break;
136        }
137      default:
138        jj_la1[2] = jj_gen;
139        break label_2;
140      }
141      jj_consume_token(72);
142      nextToken = jj_consume_token(IDENTIFIER);
143nameBuilder.append(".").append(nextToken.image);
144    }
145{if ("" != null) return nameBuilder.toString();}
146    throw new Error("Missing return statement in function");
147  }
148
149  final public List<String> Parameters() throws ParseException {Token rootToken;
150  Token nextToken;
151  List<String> parameters = new LinkedList<String>();
152    rootToken = jj_consume_token(IDENTIFIER);
153parameters.add(rootToken.image);
154    label_3:
155    while (true) {
156      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
157      case 73:{
158        ;
159        break;
160        }
161      default:
162        jj_la1[3] = jj_gen;
163        break label_3;
164      }
165      jj_consume_token(73);
166      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
167      case NEWLINE:
168      case COMMENT:{
169        BlankLine();
170        break;
171        }
172      default:
173        jj_la1[4] = jj_gen;
174        ;
175      }
176      nextToken = jj_consume_token(IDENTIFIER);
177parameters.add(nextToken.image);
178    }
179{if ("" != null) return parameters;}
180    throw new Error("Missing return statement in function");
181  }
182
183  final public List<String> AugmentationNames() throws ParseException {String rootToken;
184  String nextToken;
185  List<String> names = new LinkedList<String>();
186    rootToken = QualifiedName();
187names.add(rootToken);
188    label_4:
189    while (true) {
190      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
191      case 73:{
192        ;
193        break;
194        }
195      default:
196        jj_la1[5] = jj_gen;
197        break label_4;
198      }
199      jj_consume_token(73);
200      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
201      case NEWLINE:
202      case COMMENT:{
203        BlankLine();
204        break;
205        }
206      default:
207        jj_la1[6] = jj_gen;
208        ;
209      }
210      nextToken = QualifiedName();
211names.add(nextToken);
212    }
213{if ("" != null) return names;}
214    throw new Error("Missing return statement in function");
215  }
216
217  final public String StringLiteral() throws ParseException {Token literal;
218    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
219    case STRING:{
220      literal = jj_consume_token(STRING);
221{if ("" != null) return StringUnescaping.unescape(literal.image.substring(1, literal.image.length() - 1));}
222      break;
223      }
224    case MULTI_STRING:{
225      literal = jj_consume_token(MULTI_STRING);
226{if ("" != null) return literal.image.substring(3, literal.image.length() - 3);}
227      break;
228      }
229    default:
230      jj_la1[7] = jj_gen;
231      jj_consume_token(-1);
232      throw new ParseException();
233    }
234    throw new Error("Missing return statement in function");
235  }
236
237  final public Character CharLiteral() throws ParseException {Token literal;
238    literal = jj_consume_token(CHAR);
239{if ("" != null) return Character.valueOf(StringUnescaping.unescape(literal.image.substring(1, literal.image.length() - 1)).charAt(0));}
240    throw new Error("Missing return statement in function");
241  }
242
243  final public Long LongLiteral() throws ParseException {Token literal;
244    literal = jj_consume_token(LONG_NUMBER);
245String image = literal.image.substring(0, literal.image.length() - 2);
246    {if ("" != null) return Long.valueOf(image.replace("_",""));}
247    throw new Error("Missing return statement in function");
248  }
249
250  final public BigInteger BigIntegerLiteral() throws ParseException {Token literal;
251    literal = jj_consume_token(BIGINTEGER);
252String image = literal.image.substring(0, literal.image.length() - 2);
253    {if ("" != null) return new BigInteger(image.replace("_",""));}
254    throw new Error("Missing return statement in function");
255  }
256
257  final public Integer IntegerLiteral() throws ParseException {Token literal;
258    literal = jj_consume_token(NUMBER);
259String image = literal.image.replace("_","");
260    {if ("" != null) return Integer.valueOf(image);}
261    throw new Error("Missing return statement in function");
262  }
263
264  final public GoloParser.ParserClassRef ClassLiteral() throws ParseException {Token literal;
265    literal = jj_consume_token(CLASSREF);
266String image = literal.image;
267    int suffixLength = image.endsWith("class") ? 6 : 7;
268    {if ("" != null) return new GoloParser.ParserClassRef(image.substring(0, image.length() - suffixLength));}
269    throw new Error("Missing return statement in function");
270  }
271
272  final public Double DoubleLiteral() throws ParseException {Token literal;
273    literal = jj_consume_token(FLOATING_NUMBER);
274{if ("" != null) return Double.valueOf(literal.image.replace("_", ""));}
275    throw new Error("Missing return statement in function");
276  }
277
278  final public Float FloatLiteral() throws ParseException {Token literal;
279    literal = jj_consume_token(FLOAT);
280{if ("" != null) return Float.valueOf(literal.image
281        .substring(0, literal.image.length() - 2)
282        .replace("_", ""));}
283    throw new Error("Missing return statement in function");
284  }
285
286  final public BigDecimal BigDecimalLiteral() throws ParseException {Token literal;
287    literal = jj_consume_token(BIGDECIMAL);
288{if ("" != null) return new BigDecimal(literal.image
289        .substring(0, literal.image.length() - 2)
290        .replace("_", ""));}
291    throw new Error("Missing return statement in function");
292  }
293
294  final public GoloParser.FunctionRef FunctionRef() throws ParseException {Token literal;
295    literal = jj_consume_token(FUNREF);
296String module = null;
297    String name;
298    int arity = -1;
299    boolean varargs = false;
300    String[] parts = literal.image.substring(1).split("::");
301    if (parts.length > 1) {
302      module = parts[0];
303      name = parts[1];
304    } else {
305      name = parts[0];
306    }
307    parts = name.split("\\\\");
308    if (parts.length > 1) {
309      name = parts[0];
310      if (parts[1].endsWith("...")) {
311        arity = Integer.valueOf(parts[1].substring(0, parts[1].length() - 3));
312        varargs = true;
313      } else {
314        arity = Integer.valueOf(parts[1]);
315      }
316    }
317    {if ("" != null) return new GoloParser.FunctionRef(module, name, arity, varargs);}
318    throw new Error("Missing return statement in function");
319  }
320
321  final public String Documentation() throws ParseException {Token token;
322    token = jj_consume_token(DOCUMENTATION);
323String result = token.image.trim();
324    result = result.substring(4, result.length() - 4);
325    if (token.beginColumn > 1) {
326      result = StringBlockIndenter.unindent(result, token.beginColumn - 1);
327    }
328    {if ("" != null) return result;}
329    throw new Error("Missing return statement in function");
330  }
331
332// ............................................................................................. //
333  final public 
334ASTCompilationUnit CompilationUnit() throws ParseException {/*@bgen(jjtree) CompilationUnit */
335  ASTCompilationUnit jjtn000 = new ASTCompilationUnit(JJTCOMPILATIONUNIT);
336  boolean jjtc000 = true;
337  jjtree.openNodeScope(jjtn000);
338  jjtn000.jjtSetFirstToken(getToken(1));
339    try {
340      try {
341        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
342        case NEWLINE:
343        case MODULE:
344        case COMMENT:
345        case DOCUMENTATION:{
346          BlankLines();
347          ModuleDeclaration();
348          BlankLines();
349          label_5:
350          while (true) {
351            switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
352            case IMPORT:{
353              ;
354              break;
355              }
356            default:
357              jj_la1[8] = jj_gen;
358              break label_5;
359            }
360            ImportDeclaration();
361            BlankLines();
362          }
363          label_6:
364          while (true) {
365            switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
366            case FUNCTION:
367            case LOCAL:
368            case AUGMENT:
369            case NAMEDAUGMENTATION:
370            case STRUCT:
371            case UNION:
372            case DECORATOR:
373            case VAR:
374            case LET:
375            case DOCUMENTATION:{
376              ;
377              break;
378              }
379            default:
380              jj_la1[9] = jj_gen;
381              break label_6;
382            }
383            try {
384              ToplevelDeclaration();
385              BlankLines();
386            } catch (ParseException e) {
387skipto(NEWLINE, e, jjtn000);
388            }
389          }
390          break;
391          }
392        default:
393          jj_la1[10] = jj_gen;
394          error();
395        }
396        jj_consume_token(0);
397      } catch (ParseException e) {
398skipto(NEWLINE, e, jjtn000);
399      }
400jjtree.closeNodeScope(jjtn000, true);
401    jjtc000 = false;
402    jjtn000.jjtSetLastToken(getToken(0));
403{if ("" != null) return jjtn000;}
404    } catch (Throwable jjte000) {
405if (jjtc000) {
406      jjtree.clearNodeScope(jjtn000);
407      jjtc000 = false;
408    } else {
409      jjtree.popNode();
410    }
411    if (jjte000 instanceof RuntimeException) {
412      {if (true) throw (RuntimeException)jjte000;}
413    }
414    if (jjte000 instanceof ParseException) {
415      {if (true) throw (ParseException)jjte000;}
416    }
417    {if (true) throw (Error)jjte000;}
418    } finally {
419if (jjtc000) {
420      jjtree.closeNodeScope(jjtn000, true);
421      jjtn000.jjtSetLastToken(getToken(0));
422    }
423    }
424    throw new Error("Missing return statement in function");
425  }
426
427  final public void ModuleDeclaration() throws ParseException {/*@bgen(jjtree) ModuleDeclaration */
428  ASTModuleDeclaration jjtn000 = new ASTModuleDeclaration(JJTMODULEDECLARATION);
429  boolean jjtc000 = true;
430  jjtree.openNodeScope(jjtn000);
431  jjtn000.jjtSetFirstToken(getToken(1));String name;
432  String documentation = null;
433    try {
434      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
435      case DOCUMENTATION:{
436        documentation = Documentation();
437        break;
438        }
439      default:
440        jj_la1[11] = jj_gen;
441        ;
442      }
443      jj_consume_token(MODULE);
444      name = QualifiedName();
445jjtree.closeNodeScope(jjtn000, true);
446    jjtc000 = false;
447    jjtn000.jjtSetLastToken(getToken(0));
448jjtn000.setName(name);
449    jjtn000.setDocumentation(documentation);
450    } catch (Throwable jjte000) {
451if (jjtc000) {
452      jjtree.clearNodeScope(jjtn000);
453      jjtc000 = false;
454    } else {
455      jjtree.popNode();
456    }
457    if (jjte000 instanceof RuntimeException) {
458      {if (true) throw (RuntimeException)jjte000;}
459    }
460    if (jjte000 instanceof ParseException) {
461      {if (true) throw (ParseException)jjte000;}
462    }
463    {if (true) throw (Error)jjte000;}
464    } finally {
465if (jjtc000) {
466      jjtree.closeNodeScope(jjtn000, true);
467      jjtn000.jjtSetLastToken(getToken(0));
468    }
469    }
470  }
471
472  final public List<String> MultiImport() throws ParseException {List<String> modules = new LinkedList<String>();
473  String rootName;
474  String nextName;
475    jj_consume_token(74);
476    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
477    case NEWLINE:
478    case COMMENT:{
479      BlankLine();
480      break;
481      }
482    default:
483      jj_la1[12] = jj_gen;
484      ;
485    }
486    rootName = QualifiedName();
487modules.add(rootName);
488    label_7:
489    while (true) {
490      jj_consume_token(73);
491      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
492      case NEWLINE:
493      case COMMENT:{
494        BlankLine();
495        break;
496        }
497      default:
498        jj_la1[13] = jj_gen;
499        ;
500      }
501      nextName = QualifiedName();
502modules.add(nextName);
503      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
504      case 73:{
505        ;
506        break;
507        }
508      default:
509        jj_la1[14] = jj_gen;
510        break label_7;
511      }
512    }
513    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
514    case NEWLINE:
515    case COMMENT:{
516      BlankLine();
517      break;
518      }
519    default:
520      jj_la1[15] = jj_gen;
521      ;
522    }
523    jj_consume_token(75);
524{if ("" != null) return modules;}
525    throw new Error("Missing return statement in function");
526  }
527
528  final public void ImportDeclaration() throws ParseException {/*@bgen(jjtree) ImportDeclaration */
529  ASTImportDeclaration jjtn000 = new ASTImportDeclaration(JJTIMPORTDECLARATION);
530  boolean jjtc000 = true;
531  jjtree.openNodeScope(jjtn000);
532  jjtn000.jjtSetFirstToken(getToken(1));String name;
533  Token relative = null;
534  List<String> multiples = null;
535    try {
536      try {
537        jj_consume_token(IMPORT);
538        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
539        case 72:{
540          relative = jj_consume_token(72);
541          break;
542          }
543        default:
544          jj_la1[16] = jj_gen;
545          ;
546        }
547        name = QualifiedName();
548        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
549        case 74:{
550          multiples = MultiImport();
551          break;
552          }
553        default:
554          jj_la1[17] = jj_gen;
555          ;
556        }
557jjtn000.setName(name);
558      if (relative != null) {
559        jjtn000.setRelative(true);
560      }
561      if (multiples != null) {
562        jjtn000.setMultiple(multiples);
563      }
564      } catch (ParseException e) {
565skipto(NEWLINE, e, jjtn000);
566      }
567    } catch (Throwable jjte000) {
568if (jjtc000) {
569      jjtree.clearNodeScope(jjtn000);
570      jjtc000 = false;
571    } else {
572      jjtree.popNode();
573    }
574    if (jjte000 instanceof RuntimeException) {
575      {if (true) throw (RuntimeException)jjte000;}
576    }
577    if (jjte000 instanceof ParseException) {
578      {if (true) throw (ParseException)jjte000;}
579    }
580    {if (true) throw (Error)jjte000;}
581    } finally {
582if (jjtc000) {
583      jjtree.closeNodeScope(jjtn000, true);
584      jjtn000.jjtSetLastToken(getToken(0));
585    }
586    }
587  }
588
589  final public void ToplevelDeclaration() throws ParseException {/*@bgen(jjtree) ToplevelDeclaration */
590  ASTToplevelDeclaration jjtn000 = new ASTToplevelDeclaration(JJTTOPLEVELDECLARATION);
591  boolean jjtc000 = true;
592  jjtree.openNodeScope(jjtn000);
593  jjtn000.jjtSetFirstToken(getToken(1));ASTFunctionDeclaration functionDecl;
594  ASTAugmentDeclaration augmentDecl;
595  ASTStructDeclaration structDecl;
596  ASTUnionDeclaration unionDecl;
597  ASTNamedAugmentationDeclaration namedAugmentationDecl;
598  ASTLetOrVar state;
599  Token local = null;
600  String documentation = null;
601    try {
602      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
603      case FUNCTION:
604      case LOCAL:
605      case AUGMENT:
606      case NAMEDAUGMENTATION:
607      case STRUCT:
608      case UNION:
609      case DECORATOR:
610      case DOCUMENTATION:{
611        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
612        case DOCUMENTATION:{
613          documentation = Documentation();
614          break;
615          }
616        default:
617          jj_la1[18] = jj_gen;
618          ;
619        }
620        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
621        case AUGMENT:{
622          augmentDecl = AugmentDeclaration();
623jjtree.closeNodeScope(jjtn000, true);
624        jjtc000 = false;
625        jjtn000.jjtSetLastToken(getToken(0));
626augmentDecl.setDocumentation(documentation);
627          break;
628          }
629        case FUNCTION:
630        case LOCAL:
631        case DECORATOR:{
632          label_8:
633          while (true) {
634            switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
635            case DECORATOR:{
636              ;
637              break;
638              }
639            default:
640              jj_la1[19] = jj_gen;
641              break label_8;
642            }
643            DecoratorDeclaration();
644          }
645          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
646          case LOCAL:{
647            local = jj_consume_token(LOCAL);
648            break;
649            }
650          default:
651            jj_la1[20] = jj_gen;
652            ;
653          }
654          functionDecl = FunctionDeclaration();
655jjtree.closeNodeScope(jjtn000, true);
656        jjtc000 = false;
657        jjtn000.jjtSetLastToken(getToken(0));
658if (local != null) {
659          functionDecl.setLocal(true);
660        }
661        functionDecl.setDocumentation(documentation);
662          break;
663          }
664        case STRUCT:{
665          structDecl = StructDeclaration();
666jjtree.closeNodeScope(jjtn000, true);
667        jjtc000 = false;
668        jjtn000.jjtSetLastToken(getToken(0));
669structDecl.setDocumentation(documentation);
670          break;
671          }
672        case UNION:{
673          unionDecl = UnionDeclaration();
674jjtree.closeNodeScope(jjtn000, true);
675        jjtc000 = false;
676        jjtn000.jjtSetLastToken(getToken(0));
677unionDecl.setDocumentation(documentation);
678          break;
679          }
680        case NAMEDAUGMENTATION:{
681          namedAugmentationDecl = NamedAugmentationDeclaration();
682jjtree.closeNodeScope(jjtn000, true);
683        jjtc000 = false;
684        jjtn000.jjtSetLastToken(getToken(0));
685namedAugmentationDecl.setDocumentation(documentation);
686          break;
687          }
688        default:
689          jj_la1[21] = jj_gen;
690          jj_consume_token(-1);
691          throw new ParseException();
692        }
693        break;
694        }
695      case VAR:
696      case LET:{
697        state = LetOrVar();
698jjtree.closeNodeScope(jjtn000, true);
699    jjtc000 = false;
700    jjtn000.jjtSetLastToken(getToken(0));
701state.setModuleState(true);
702        break;
703        }
704      default:
705        jj_la1[22] = jj_gen;
706        jj_consume_token(-1);
707        throw new ParseException();
708      }
709    } catch (Throwable jjte000) {
710if (jjtc000) {
711      jjtree.clearNodeScope(jjtn000);
712      jjtc000 = false;
713    } else {
714      jjtree.popNode();
715    }
716    if (jjte000 instanceof RuntimeException) {
717      {if (true) throw (RuntimeException)jjte000;}
718    }
719    if (jjte000 instanceof ParseException) {
720      {if (true) throw (ParseException)jjte000;}
721    }
722    {if (true) throw (Error)jjte000;}
723    } finally {
724if (jjtc000) {
725      jjtree.closeNodeScope(jjtn000, true);
726      jjtn000.jjtSetLastToken(getToken(0));
727    }
728    }
729  }
730
731  final public ASTMemberDeclaration MemberDeclaration() throws ParseException {/*@bgen(jjtree) MemberDeclaration */
732  ASTMemberDeclaration jjtn000 = new ASTMemberDeclaration(JJTMEMBERDECLARATION);
733  boolean jjtc000 = true;
734  jjtree.openNodeScope(jjtn000);
735  jjtn000.jjtSetFirstToken(getToken(1));Token name;
736  String documentation = null;
737    try {
738      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
739      case DOCUMENTATION:{
740        documentation = Documentation();
741        break;
742        }
743      default:
744        jj_la1[23] = jj_gen;
745        ;
746      }
747      name = jj_consume_token(IDENTIFIER);
748jjtree.closeNodeScope(jjtn000, true);
749    jjtc000 = false;
750    jjtn000.jjtSetLastToken(getToken(0));
751jjtn000.setName(name.image);
752    jjtn000.jjtSetFirstToken(name);
753    jjtn000.setDocumentation(documentation);
754    {if ("" != null) return jjtn000;}
755    } catch (Throwable jjte000) {
756if (jjtc000) {
757      jjtree.clearNodeScope(jjtn000);
758      jjtc000 = false;
759    } else {
760      jjtree.popNode();
761    }
762    if (jjte000 instanceof RuntimeException) {
763      {if (true) throw (RuntimeException)jjte000;}
764    }
765    if (jjte000 instanceof ParseException) {
766      {if (true) throw (ParseException)jjte000;}
767    }
768    {if (true) throw (Error)jjte000;}
769    } finally {
770if (jjtc000) {
771      jjtree.closeNodeScope(jjtn000, true);
772      jjtn000.jjtSetLastToken(getToken(0));
773    }
774    }
775    throw new Error("Missing return statement in function");
776  }
777
778  final public ASTStructDeclaration StructDeclaration() throws ParseException {/*@bgen(jjtree) StructDeclaration */
779  ASTStructDeclaration jjtn000 = new ASTStructDeclaration(JJTSTRUCTDECLARATION);
780  boolean jjtc000 = true;
781  jjtree.openNodeScope(jjtn000);
782  jjtn000.jjtSetFirstToken(getToken(1));Token name;
783    try {
784      jj_consume_token(STRUCT);
785      name = jj_consume_token(IDENTIFIER);
786      jj_consume_token(76);
787      jj_consume_token(77);
788      BlankLines();
789      MemberDeclaration();
790      BlankLines();
791      label_9:
792      while (true) {
793        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
794        case 73:{
795          ;
796          break;
797          }
798        default:
799          jj_la1[24] = jj_gen;
800          break label_9;
801        }
802        jj_consume_token(73);
803        BlankLines();
804        MemberDeclaration();
805        BlankLines();
806      }
807      jj_consume_token(75);
808jjtree.closeNodeScope(jjtn000, true);
809    jjtc000 = false;
810    jjtn000.jjtSetLastToken(getToken(0));
811jjtn000.setName(name.image);
812    {if ("" != null) return jjtn000;}
813    } catch (Throwable jjte000) {
814if (jjtc000) {
815      jjtree.clearNodeScope(jjtn000);
816      jjtc000 = false;
817    } else {
818      jjtree.popNode();
819    }
820    if (jjte000 instanceof RuntimeException) {
821      {if (true) throw (RuntimeException)jjte000;}
822    }
823    if (jjte000 instanceof ParseException) {
824      {if (true) throw (ParseException)jjte000;}
825    }
826    {if (true) throw (Error)jjte000;}
827    } finally {
828if (jjtc000) {
829      jjtree.closeNodeScope(jjtn000, true);
830      jjtn000.jjtSetLastToken(getToken(0));
831    }
832    }
833    throw new Error("Missing return statement in function");
834  }
835
836  final public void UnionValue() throws ParseException {/*@bgen(jjtree) UnionValue */
837  ASTUnionValue jjtn000 = new ASTUnionValue(JJTUNIONVALUE);
838  boolean jjtc000 = true;
839  jjtree.openNodeScope(jjtn000);
840  jjtn000.jjtSetFirstToken(getToken(1));Token name;
841  String documentation = null;
842    try {
843      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
844      case DOCUMENTATION:{
845        documentation = Documentation();
846        break;
847        }
848      default:
849        jj_la1[25] = jj_gen;
850        ;
851      }
852      name = jj_consume_token(IDENTIFIER);
853      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
854      case 76:{
855        jj_consume_token(76);
856        jj_consume_token(77);
857        BlankLines();
858        MemberDeclaration();
859        BlankLines();
860        label_10:
861        while (true) {
862          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
863          case 73:{
864            ;
865            break;
866            }
867          default:
868            jj_la1[26] = jj_gen;
869            break label_10;
870          }
871          jj_consume_token(73);
872          BlankLines();
873          MemberDeclaration();
874          BlankLines();
875        }
876        jj_consume_token(75);
877        break;
878        }
879      default:
880        jj_la1[27] = jj_gen;
881        ;
882      }
883jjtree.closeNodeScope(jjtn000, true);
884    jjtc000 = false;
885    jjtn000.jjtSetLastToken(getToken(0));
886jjtn000.setName(name.image);
887    jjtn000.jjtSetFirstToken(name);
888    jjtn000.setDocumentation(documentation);
889    } catch (Throwable jjte000) {
890if (jjtc000) {
891      jjtree.clearNodeScope(jjtn000);
892      jjtc000 = false;
893    } else {
894      jjtree.popNode();
895    }
896    if (jjte000 instanceof RuntimeException) {
897      {if (true) throw (RuntimeException)jjte000;}
898    }
899    if (jjte000 instanceof ParseException) {
900      {if (true) throw (ParseException)jjte000;}
901    }
902    {if (true) throw (Error)jjte000;}
903    } finally {
904if (jjtc000) {
905      jjtree.closeNodeScope(jjtn000, true);
906      jjtn000.jjtSetLastToken(getToken(0));
907    }
908    }
909  }
910
911  final public ASTUnionDeclaration UnionDeclaration() throws ParseException {/*@bgen(jjtree) UnionDeclaration */
912  ASTUnionDeclaration jjtn000 = new ASTUnionDeclaration(JJTUNIONDECLARATION);
913  boolean jjtc000 = true;
914  jjtree.openNodeScope(jjtn000);
915  jjtn000.jjtSetFirstToken(getToken(1));Token name;
916  Token valueName;
917    try {
918      jj_consume_token(UNION);
919      name = jj_consume_token(IDENTIFIER);
920      jj_consume_token(76);
921      jj_consume_token(77);
922      BlankLines();
923      label_11:
924      while (true) {
925        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
926        case IDENTIFIER:
927        case DOCUMENTATION:{
928          ;
929          break;
930          }
931        default:
932          jj_la1[28] = jj_gen;
933          break label_11;
934        }
935        UnionValue();
936        BlankLines();
937      }
938      jj_consume_token(75);
939jjtree.closeNodeScope(jjtn000, true);
940    jjtc000 = false;
941    jjtn000.jjtSetLastToken(getToken(0));
942jjtn000.setName(name.image);
943    {if ("" != null) return jjtn000;}
944    } catch (Throwable jjte000) {
945if (jjtc000) {
946      jjtree.clearNodeScope(jjtn000);
947      jjtc000 = false;
948    } else {
949      jjtree.popNode();
950    }
951    if (jjte000 instanceof RuntimeException) {
952      {if (true) throw (RuntimeException)jjte000;}
953    }
954    if (jjte000 instanceof ParseException) {
955      {if (true) throw (ParseException)jjte000;}
956    }
957    {if (true) throw (Error)jjte000;}
958    } finally {
959if (jjtc000) {
960      jjtree.closeNodeScope(jjtn000, true);
961      jjtn000.jjtSetLastToken(getToken(0));
962    }
963    }
964    throw new Error("Missing return statement in function");
965  }
966
967  final public void AugmentationDeclaration(String context) throws ParseException {String documentation = null;
968  ASTFunctionDeclaration func;
969    jj_consume_token(77);
970    BlankLines();
971    label_12:
972    while (true) {
973      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
974      case FUNCTION:
975      case DECORATOR:
976      case DOCUMENTATION:{
977        ;
978        break;
979        }
980      default:
981        jj_la1[29] = jj_gen;
982        break label_12;
983      }
984      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
985      case DOCUMENTATION:{
986        documentation = Documentation();
987        break;
988        }
989      default:
990        jj_la1[30] = jj_gen;
991        ;
992      }
993      label_13:
994      while (true) {
995        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
996        case DECORATOR:{
997          ;
998          break;
999          }
1000        default:
1001          jj_la1[31] = jj_gen;
1002          break label_13;
1003        }
1004        DecoratorDeclaration();
1005      }
1006      func = FunctionDeclaration();
1007func.setAugmentation(true);
1008        func.setDocumentation(documentation);
1009        ASTFunction body = (ASTFunction) func.jjtGetChild(0);
1010        if (body.getParameters().isEmpty()) {
1011          String description = "Error: augmentation function " +
1012            func.getName() + " " + context +
1013            " must take at least 1 argument ('this' would be a good idea...)";
1014          if (exceptionBuilder == null) {
1015            {if (true) throw new TokenMgrError(description, 0);}
1016          }
1017          exceptionBuilder.report(GoloCompilationException.Problem.Type.AUGMENT_FUNCTION_NO_ARGS, body, description);
1018        }
1019        documentation = null;
1020      BlankLines();
1021    }
1022    jj_consume_token(75);
1023  }
1024
1025  final public ASTNamedAugmentationDeclaration NamedAugmentationDeclaration() throws ParseException {/*@bgen(jjtree) NamedAugmentationDeclaration */
1026  ASTNamedAugmentationDeclaration jjtn000 = new ASTNamedAugmentationDeclaration(JJTNAMEDAUGMENTATIONDECLARATION);
1027  boolean jjtc000 = true;
1028  jjtree.openNodeScope(jjtn000);
1029  jjtn000.jjtSetFirstToken(getToken(1));Token name;
1030    try {
1031      jj_consume_token(NAMEDAUGMENTATION);
1032      name = jj_consume_token(IDENTIFIER);
1033      jj_consume_token(76);
1034      AugmentationDeclaration("in " + name);
1035jjtree.closeNodeScope(jjtn000, true);
1036    jjtc000 = false;
1037    jjtn000.jjtSetLastToken(getToken(0));
1038jjtn000.setName(name.image);
1039    {if ("" != null) return jjtn000;}
1040    } catch (Throwable jjte000) {
1041if (jjtc000) {
1042      jjtree.clearNodeScope(jjtn000);
1043      jjtc000 = false;
1044    } else {
1045      jjtree.popNode();
1046    }
1047    if (jjte000 instanceof RuntimeException) {
1048      {if (true) throw (RuntimeException)jjte000;}
1049    }
1050    if (jjte000 instanceof ParseException) {
1051      {if (true) throw (ParseException)jjte000;}
1052    }
1053    {if (true) throw (Error)jjte000;}
1054    } finally {
1055if (jjtc000) {
1056      jjtree.closeNodeScope(jjtn000, true);
1057      jjtn000.jjtSetLastToken(getToken(0));
1058    }
1059    }
1060    throw new Error("Missing return statement in function");
1061  }
1062
1063  final public ASTAugmentDeclaration AugmentDeclaration() throws ParseException {/*@bgen(jjtree) AugmentDeclaration */
1064  ASTAugmentDeclaration jjtn000 = new ASTAugmentDeclaration(JJTAUGMENTDECLARATION);
1065  boolean jjtc000 = true;
1066  jjtree.openNodeScope(jjtn000);
1067  jjtn000.jjtSetFirstToken(getToken(1));String target;
1068  List<String> names = null;
1069    try {
1070      jj_consume_token(AUGMENT);
1071      target = QualifiedName();
1072      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1073      case 77:{
1074        AugmentationDeclaration("on " + target);
1075        break;
1076        }
1077      case WITH:{
1078        jj_consume_token(WITH);
1079        names = AugmentationNames();
1080        break;
1081        }
1082      default:
1083        jj_la1[32] = jj_gen;
1084        jj_consume_token(-1);
1085        throw new ParseException();
1086      }
1087jjtree.closeNodeScope(jjtn000, true);
1088    jjtc000 = false;
1089    jjtn000.jjtSetLastToken(getToken(0));
1090jjtn000.setTarget(target);
1091    jjtn000.setAugmentationNames(names);
1092    {if ("" != null) return jjtn000;}
1093    } catch (Throwable jjte000) {
1094if (jjtc000) {
1095      jjtree.clearNodeScope(jjtn000);
1096      jjtc000 = false;
1097    } else {
1098      jjtree.popNode();
1099    }
1100    if (jjte000 instanceof RuntimeException) {
1101      {if (true) throw (RuntimeException)jjte000;}
1102    }
1103    if (jjte000 instanceof ParseException) {
1104      {if (true) throw (ParseException)jjte000;}
1105    }
1106    {if (true) throw (Error)jjte000;}
1107    } finally {
1108if (jjtc000) {
1109      jjtree.closeNodeScope(jjtn000, true);
1110      jjtn000.jjtSetLastToken(getToken(0));
1111    }
1112    }
1113    throw new Error("Missing return statement in function");
1114  }
1115
1116  final public ASTFunctionDeclaration FunctionDeclaration() throws ParseException {/*@bgen(jjtree) FunctionDeclaration */
1117  ASTFunctionDeclaration jjtn000 = new ASTFunctionDeclaration(JJTFUNCTIONDECLARATION);
1118  boolean jjtc000 = true;
1119  jjtree.openNodeScope(jjtn000);
1120  jjtn000.jjtSetFirstToken(getToken(1));Token name;
1121    try {
1122      jj_consume_token(FUNCTION);
1123      name = jj_consume_token(IDENTIFIER);
1124      jj_consume_token(76);
1125      Function();
1126jjtree.closeNodeScope(jjtn000, true);
1127    jjtc000 = false;
1128    jjtn000.jjtSetLastToken(getToken(0));
1129jjtn000.setName(name.image);
1130    {if ("" != null) return jjtn000;}
1131    } catch (Throwable jjte000) {
1132if (jjtc000) {
1133      jjtree.clearNodeScope(jjtn000);
1134      jjtc000 = false;
1135    } else {
1136      jjtree.popNode();
1137    }
1138    if (jjte000 instanceof RuntimeException) {
1139      {if (true) throw (RuntimeException)jjte000;}
1140    }
1141    if (jjte000 instanceof ParseException) {
1142      {if (true) throw (ParseException)jjte000;}
1143    }
1144    {if (true) throw (Error)jjte000;}
1145    } finally {
1146if (jjtc000) {
1147      jjtree.closeNodeScope(jjtn000, true);
1148      jjtn000.jjtSetLastToken(getToken(0));
1149    }
1150    }
1151    throw new Error("Missing return statement in function");
1152  }
1153
1154  final public ASTDecoratorDeclaration DecoratorDeclaration() throws ParseException {/*@bgen(jjtree) DecoratorDeclaration */
1155  ASTDecoratorDeclaration jjtn000 = new ASTDecoratorDeclaration(JJTDECORATORDECLARATION);
1156  boolean jjtc000 = true;
1157  jjtree.openNodeScope(jjtn000);
1158  jjtn000.jjtSetFirstToken(getToken(1));Token constant = null;
1159    try {
1160      jj_consume_token(DECORATOR);
1161      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1162      case CONSTANT_INVOCATION:{
1163        constant = jj_consume_token(CONSTANT_INVOCATION);
1164        break;
1165        }
1166      default:
1167        jj_la1[33] = jj_gen;
1168        ;
1169      }
1170      if (jj_2_1(2)) {
1171        InvocationExpression();
1172      } else if (jj_2_2(2)) {
1173        Reference();
1174      } else {
1175        jj_consume_token(-1);
1176        throw new ParseException();
1177      }
1178      BlankLines();
1179jjtree.closeNodeScope(jjtn000, true);
1180    jjtc000 = false;
1181    jjtn000.jjtSetLastToken(getToken(0));
1182if (constant != null) {
1183        jjtn000.setConstant(true);
1184    }
1185    {if ("" != null) return jjtn000;}
1186    } catch (Throwable jjte000) {
1187if (jjtc000) {
1188      jjtree.clearNodeScope(jjtn000);
1189      jjtc000 = false;
1190    } else {
1191      jjtree.popNode();
1192    }
1193    if (jjte000 instanceof RuntimeException) {
1194      {if (true) throw (RuntimeException)jjte000;}
1195    }
1196    if (jjte000 instanceof ParseException) {
1197      {if (true) throw (ParseException)jjte000;}
1198    }
1199    {if (true) throw (Error)jjte000;}
1200    } finally {
1201if (jjtc000) {
1202      jjtree.closeNodeScope(jjtn000, true);
1203      jjtn000.jjtSetLastToken(getToken(0));
1204    }
1205    }
1206    throw new Error("Missing return statement in function");
1207  }
1208
1209// ............................................................................................. //
1210  final public 
1211void Statement() throws ParseException {
1212    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1213    case NEWLINE:
1214    case COMMENT:{
1215      BlankLine();
1216      break;
1217      }
1218    default:
1219      jj_la1[34] = jj_gen;
1220      if (jj_2_3(2)) {
1221        Assignment();
1222      } else if (jj_2_4(3)) {
1223        DestructuringAssignment();
1224      } else if (jj_2_5(2)) {
1225        LetOrVar();
1226      } else {
1227        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1228        case MATCH:
1229        case UNARY_OPERATOR:
1230        case NUMBER:
1231        case LONG_NUMBER:
1232        case BIGINTEGER:
1233        case FLOATING_NUMBER:
1234        case FLOAT:
1235        case BIGDECIMAL:
1236        case STRING:
1237        case CHAR:
1238        case NULL:
1239        case TRUE:
1240        case FALSE:
1241        case CLASSREF:
1242        case FUNREF:
1243        case COLL_START:
1244        case MULTI_STRING:
1245        case IDENTIFIER:
1246        case 77:
1247        case 78:
1248        case 81:
1249        case 82:{
1250          ExpressionStatement();
1251          break;
1252          }
1253        case RETURN:{
1254          Return();
1255          break;
1256          }
1257        case IF:{
1258          ConditionalBranching();
1259          break;
1260          }
1261        case WHILE:{
1262          WhileLoop();
1263          break;
1264          }
1265        case FOR:{
1266          ForLoop();
1267          break;
1268          }
1269        case FOREACH:{
1270          ForEachLoop();
1271          break;
1272          }
1273        case THROW:{
1274          Throw();
1275          break;
1276          }
1277        case TRY:{
1278          TryCatchFinally();
1279          break;
1280          }
1281        case CASE:{
1282          Case();
1283          break;
1284          }
1285        case CONTINUE:{
1286          Continue();
1287          break;
1288          }
1289        case BREAK:{
1290          Break();
1291          break;
1292          }
1293        default:
1294          jj_la1[35] = jj_gen;
1295          jj_consume_token(-1);
1296          throw new ParseException();
1297        }
1298      }
1299    }
1300  }
1301
1302  final public void Continue() throws ParseException {/*@bgen(jjtree) Continue */
1303  ASTContinue jjtn000 = new ASTContinue(JJTCONTINUE);
1304  boolean jjtc000 = true;
1305  jjtree.openNodeScope(jjtn000);
1306  jjtn000.jjtSetFirstToken(getToken(1));
1307    try {
1308      jj_consume_token(CONTINUE);
1309    } finally {
1310if (jjtc000) {
1311      jjtree.closeNodeScope(jjtn000, true);
1312      jjtn000.jjtSetLastToken(getToken(0));
1313    }
1314    }
1315  }
1316
1317  final public void Break() throws ParseException {/*@bgen(jjtree) Break */
1318  ASTBreak jjtn000 = new ASTBreak(JJTBREAK);
1319  boolean jjtc000 = true;
1320  jjtree.openNodeScope(jjtn000);
1321  jjtn000.jjtSetFirstToken(getToken(1));
1322    try {
1323      jj_consume_token(BREAK);
1324    } finally {
1325if (jjtc000) {
1326      jjtree.closeNodeScope(jjtn000, true);
1327      jjtn000.jjtSetLastToken(getToken(0));
1328    }
1329    }
1330  }
1331
1332  final public void Throw() throws ParseException {/*@bgen(jjtree) Throw */
1333  ASTThrow jjtn000 = new ASTThrow(JJTTHROW);
1334  boolean jjtc000 = true;
1335  jjtree.openNodeScope(jjtn000);
1336  jjtn000.jjtSetFirstToken(getToken(1));
1337    try {
1338      jj_consume_token(THROW);
1339      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1340      case NEWLINE:
1341      case COMMENT:{
1342        BlankLine();
1343        break;
1344        }
1345      default:
1346        jj_la1[36] = jj_gen;
1347        ;
1348      }
1349      ExpressionStatement();
1350    } catch (Throwable jjte000) {
1351if (jjtc000) {
1352      jjtree.clearNodeScope(jjtn000);
1353      jjtc000 = false;
1354    } else {
1355      jjtree.popNode();
1356    }
1357    if (jjte000 instanceof RuntimeException) {
1358      {if (true) throw (RuntimeException)jjte000;}
1359    }
1360    if (jjte000 instanceof ParseException) {
1361      {if (true) throw (ParseException)jjte000;}
1362    }
1363    {if (true) throw (Error)jjte000;}
1364    } finally {
1365if (jjtc000) {
1366      jjtree.closeNodeScope(jjtn000, true);
1367      jjtn000.jjtSetLastToken(getToken(0));
1368    }
1369    }
1370  }
1371
1372  final public void WhileLoop() throws ParseException {/*@bgen(jjtree) WhileLoop */
1373  ASTWhileLoop jjtn000 = new ASTWhileLoop(JJTWHILELOOP);
1374  boolean jjtc000 = true;
1375  jjtree.openNodeScope(jjtn000);
1376  jjtn000.jjtSetFirstToken(getToken(1));
1377    try {
1378      jj_consume_token(WHILE);
1379      ExpressionStatement();
1380      Block();
1381    } catch (Throwable jjte000) {
1382if (jjtc000) {
1383      jjtree.clearNodeScope(jjtn000);
1384      jjtc000 = false;
1385    } else {
1386      jjtree.popNode();
1387    }
1388    if (jjte000 instanceof RuntimeException) {
1389      {if (true) throw (RuntimeException)jjte000;}
1390    }
1391    if (jjte000 instanceof ParseException) {
1392      {if (true) throw (ParseException)jjte000;}
1393    }
1394    {if (true) throw (Error)jjte000;}
1395    } finally {
1396if (jjtc000) {
1397      jjtree.closeNodeScope(jjtn000, true);
1398      jjtn000.jjtSetLastToken(getToken(0));
1399    }
1400    }
1401  }
1402
1403  final public void ForLoop() throws ParseException {/*@bgen(jjtree) ForLoop */
1404  ASTForLoop jjtn000 = new ASTForLoop(JJTFORLOOP);
1405  boolean jjtc000 = true;
1406  jjtree.openNodeScope(jjtn000);
1407  jjtn000.jjtSetFirstToken(getToken(1));
1408    try {
1409      jj_consume_token(FOR);
1410      jj_consume_token(78);
1411      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1412      case NEWLINE:
1413      case COMMENT:{
1414        BlankLine();
1415        break;
1416        }
1417      default:
1418        jj_la1[37] = jj_gen;
1419        ;
1420      }
1421      LetOrVar();
1422      jj_consume_token(73);
1423      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1424      case NEWLINE:
1425      case COMMENT:{
1426        BlankLine();
1427        break;
1428        }
1429      default:
1430        jj_la1[38] = jj_gen;
1431        ;
1432      }
1433      ExpressionStatement();
1434      jj_consume_token(73);
1435      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1436      case NEWLINE:
1437      case COMMENT:{
1438        BlankLine();
1439        break;
1440        }
1441      default:
1442        jj_la1[39] = jj_gen;
1443        ;
1444      }
1445      Statement();
1446      jj_consume_token(79);
1447      if (jj_2_6(2)) {
1448        Block();
1449      } else {
1450        ;
1451      }
1452    } catch (Throwable jjte000) {
1453if (jjtc000) {
1454      jjtree.clearNodeScope(jjtn000);
1455      jjtc000 = false;
1456    } else {
1457      jjtree.popNode();
1458    }
1459    if (jjte000 instanceof RuntimeException) {
1460      {if (true) throw (RuntimeException)jjte000;}
1461    }
1462    if (jjte000 instanceof ParseException) {
1463      {if (true) throw (ParseException)jjte000;}
1464    }
1465    {if (true) throw (Error)jjte000;}
1466    } finally {
1467if (jjtc000) {
1468      jjtree.closeNodeScope(jjtn000, true);
1469      jjtn000.jjtSetLastToken(getToken(0));
1470    }
1471    }
1472  }
1473
1474  final public void ForEachLoop() throws ParseException {/*@bgen(jjtree) ForEachLoop */
1475  ASTForEachLoop jjtn000 = new ASTForEachLoop(JJTFOREACHLOOP);
1476  boolean jjtc000 = true;
1477  jjtree.openNodeScope(jjtn000);
1478  jjtn000.jjtSetFirstToken(getToken(1));Token elementId;
1479  List<String> names;
1480  Token varargsToken = null;
1481    try {
1482      jj_consume_token(FOREACH);
1483      if (jj_2_7(2)) {
1484        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1485        case IDENTIFIER:{
1486          elementId = jj_consume_token(IDENTIFIER);
1487          jj_consume_token(IN);
1488          ExpressionStatement();
1489          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1490          case WHEN:{
1491            jj_consume_token(WHEN);
1492            ExpressionStatement();
1493            break;
1494            }
1495          default:
1496            jj_la1[40] = jj_gen;
1497            ;
1498          }
1499          break;
1500          }
1501        case 78:{
1502          jj_consume_token(78);
1503          elementId = jj_consume_token(IDENTIFIER);
1504          jj_consume_token(IN);
1505          ExpressionStatement();
1506          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1507          case WHEN:{
1508            jj_consume_token(WHEN);
1509            ExpressionStatement();
1510            break;
1511            }
1512          default:
1513            jj_la1[41] = jj_gen;
1514            ;
1515          }
1516          jj_consume_token(79);
1517          break;
1518          }
1519        default:
1520          jj_la1[42] = jj_gen;
1521          jj_consume_token(-1);
1522          throw new ParseException();
1523        }
1524jjtn000.setElementIdentifier(elementId.image);
1525      } else if (jj_2_8(2)) {
1526        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1527        case IDENTIFIER:{
1528          names = DestructuredNames();
1529          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1530          case 80:{
1531            varargsToken = jj_consume_token(80);
1532            break;
1533            }
1534          default:
1535            jj_la1[43] = jj_gen;
1536            ;
1537          }
1538          jj_consume_token(IN);
1539          ExpressionStatement();
1540          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1541          case WHEN:{
1542            jj_consume_token(WHEN);
1543            ExpressionStatement();
1544            break;
1545            }
1546          default:
1547            jj_la1[44] = jj_gen;
1548            ;
1549          }
1550          break;
1551          }
1552        case 78:{
1553          jj_consume_token(78);
1554          names = DestructuredNames();
1555          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1556          case 80:{
1557            varargsToken = jj_consume_token(80);
1558            break;
1559            }
1560          default:
1561            jj_la1[45] = jj_gen;
1562            ;
1563          }
1564          jj_consume_token(IN);
1565          ExpressionStatement();
1566          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1567          case WHEN:{
1568            jj_consume_token(WHEN);
1569            ExpressionStatement();
1570            break;
1571            }
1572          default:
1573            jj_la1[46] = jj_gen;
1574            ;
1575          }
1576          jj_consume_token(79);
1577          break;
1578          }
1579        default:
1580          jj_la1[47] = jj_gen;
1581          jj_consume_token(-1);
1582          throw new ParseException();
1583        }
1584jjtn000.setNames(names);
1585      jjtn000.setVarargs(varargsToken != null);
1586      } else {
1587        jj_consume_token(-1);
1588        throw new ParseException();
1589      }
1590      if (jj_2_9(2)) {
1591        Block();
1592      } else {
1593        ;
1594      }
1595    } catch (Throwable jjte000) {
1596if (jjtc000) {
1597      jjtree.clearNodeScope(jjtn000);
1598      jjtc000 = false;
1599    } else {
1600      jjtree.popNode();
1601    }
1602    if (jjte000 instanceof RuntimeException) {
1603      {if (true) throw (RuntimeException)jjte000;}
1604    }
1605    if (jjte000 instanceof ParseException) {
1606      {if (true) throw (ParseException)jjte000;}
1607    }
1608    {if (true) throw (Error)jjte000;}
1609    } finally {
1610if (jjtc000) {
1611      jjtree.closeNodeScope(jjtn000, true);
1612      jjtn000.jjtSetLastToken(getToken(0));
1613    }
1614    }
1615  }
1616
1617  final public void TryCatchFinally() throws ParseException {/*@bgen(jjtree) TryCatchFinally */
1618  ASTTryCatchFinally jjtn000 = new ASTTryCatchFinally(JJTTRYCATCHFINALLY);
1619  boolean jjtc000 = true;
1620  jjtree.openNodeScope(jjtn000);
1621  jjtn000.jjtSetFirstToken(getToken(1));Token exceptionId;
1622    try {
1623      jj_consume_token(TRY);
1624      Block();
1625      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1626      case FINALLY:{
1627        jj_consume_token(FINALLY);
1628        Block();
1629jjtree.closeNodeScope(jjtn000, true);
1630        jjtc000 = false;
1631        jjtn000.jjtSetLastToken(getToken(0));
1632jjtn000.setExceptionId(null);
1633        break;
1634        }
1635      case CATCH:{
1636        jj_consume_token(CATCH);
1637        jj_consume_token(78);
1638        exceptionId = jj_consume_token(IDENTIFIER);
1639        jj_consume_token(79);
1640        Block();
1641        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1642        case FINALLY:{
1643          jj_consume_token(FINALLY);
1644          Block();
1645          break;
1646          }
1647        default:
1648          jj_la1[48] = jj_gen;
1649          ;
1650        }
1651jjtree.closeNodeScope(jjtn000, true);
1652        jjtc000 = false;
1653        jjtn000.jjtSetLastToken(getToken(0));
1654jjtn000.setExceptionId(exceptionId.image);
1655        break;
1656        }
1657      default:
1658        jj_la1[49] = jj_gen;
1659        jj_consume_token(-1);
1660        throw new ParseException();
1661      }
1662    } catch (Throwable jjte000) {
1663if (jjtc000) {
1664      jjtree.clearNodeScope(jjtn000);
1665      jjtc000 = false;
1666    } else {
1667      jjtree.popNode();
1668    }
1669    if (jjte000 instanceof RuntimeException) {
1670      {if (true) throw (RuntimeException)jjte000;}
1671    }
1672    if (jjte000 instanceof ParseException) {
1673      {if (true) throw (ParseException)jjte000;}
1674    }
1675    {if (true) throw (Error)jjte000;}
1676    } finally {
1677if (jjtc000) {
1678      jjtree.closeNodeScope(jjtn000, true);
1679      jjtn000.jjtSetLastToken(getToken(0));
1680    }
1681    }
1682  }
1683
1684  final public void ExpressionStatement() throws ParseException {/*@bgen(jjtree) ExpressionStatement */
1685  ASTExpressionStatement jjtn000 = new ASTExpressionStatement(JJTEXPRESSIONSTATEMENT);
1686  boolean jjtc000 = true;
1687  jjtree.openNodeScope(jjtn000);
1688  jjtn000.jjtSetFirstToken(getToken(1));
1689    try {
1690      OrIfNullExpression();
1691      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1692      case NEWLINE:
1693      case COMMENT:{
1694        BlankLine();
1695        break;
1696        }
1697      default:
1698        jj_la1[50] = jj_gen;
1699        ;
1700      }
1701    } catch (Throwable jjte000) {
1702if (jjtc000) {
1703      jjtree.clearNodeScope(jjtn000);
1704      jjtc000 = false;
1705    } else {
1706      jjtree.popNode();
1707    }
1708    if (jjte000 instanceof RuntimeException) {
1709      {if (true) throw (RuntimeException)jjte000;}
1710    }
1711    if (jjte000 instanceof ParseException) {
1712      {if (true) throw (ParseException)jjte000;}
1713    }
1714    {if (true) throw (Error)jjte000;}
1715    } finally {
1716if (jjtc000) {
1717      jjtree.closeNodeScope(jjtn000, true);
1718      jjtn000.jjtSetLastToken(getToken(0));
1719    }
1720    }
1721  }
1722
1723  final public void Atom() throws ParseException {
1724    if (jj_2_10(2)) {
1725      FunctionInvocation();
1726    } else if (jj_2_11(2)) {
1727      Reference();
1728    } else {
1729      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1730      case MATCH:{
1731        Match();
1732        break;
1733        }
1734      case NUMBER:
1735      case LONG_NUMBER:
1736      case BIGINTEGER:
1737      case FLOATING_NUMBER:
1738      case FLOAT:
1739      case BIGDECIMAL:
1740      case STRING:
1741      case CHAR:
1742      case NULL:
1743      case TRUE:
1744      case FALSE:
1745      case CLASSREF:
1746      case FUNREF:
1747      case MULTI_STRING:{
1748        Literal();
1749        break;
1750        }
1751      case 77:
1752      case 81:
1753      case 82:{
1754        Function();
1755        break;
1756        }
1757      case COLL_START:{
1758        CollectionLiteral();
1759        break;
1760        }
1761      case 78:{
1762        jj_consume_token(78);
1763        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1764        case NEWLINE:
1765        case COMMENT:{
1766          BlankLine();
1767          break;
1768          }
1769        default:
1770          jj_la1[51] = jj_gen;
1771          ;
1772        }
1773        ExpressionStatement();
1774        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1775        case NEWLINE:
1776        case COMMENT:{
1777          BlankLine();
1778          break;
1779          }
1780        default:
1781          jj_la1[52] = jj_gen;
1782          ;
1783        }
1784        jj_consume_token(79);
1785        break;
1786        }
1787      default:
1788        jj_la1[53] = jj_gen;
1789        jj_consume_token(-1);
1790        throw new ParseException();
1791      }
1792    }
1793  }
1794
1795  final public void UnaryExpression() throws ParseException {Token token = null;
1796    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1797    case UNARY_OPERATOR:{
1798      token = jj_consume_token(UNARY_OPERATOR);
1799      break;
1800      }
1801    default:
1802      jj_la1[54] = jj_gen;
1803      ;
1804    }
1805ASTUnaryExpression jjtn001 = new ASTUnaryExpression(JJTUNARYEXPRESSION);
1806                              boolean jjtc001 = true;
1807                              jjtree.openNodeScope(jjtn001);
1808                              jjtn001.jjtSetFirstToken(getToken(1));
1809    try {
1810      InvocationExpression();
1811    } catch (Throwable jjte001) {
1812if (jjtc001) {
1813                                jjtree.clearNodeScope(jjtn001);
1814                                jjtc001 = false;
1815                              } else {
1816                                jjtree.popNode();
1817                              }
1818                              if (jjte001 instanceof RuntimeException) {
1819                                {if (true) throw (RuntimeException)jjte001;}
1820                              }
1821                              if (jjte001 instanceof ParseException) {
1822                                {if (true) throw (ParseException)jjte001;}
1823                              }
1824                              {if (true) throw (Error)jjte001;}
1825    } finally {
1826if (jjtc001) {
1827                                jjtree.closeNodeScope(jjtn001,  token != null);
1828                                jjtn001.jjtSetLastToken(getToken(0));
1829                              }
1830    }
1831  }
1832
1833  final public void InvocationExpression() throws ParseException {Token token = null;
1834  ASTAnonymousFunctionInvocation anon = null;
1835    Atom();
1836ASTInvocationExpression jjtn001 = new ASTInvocationExpression(JJTINVOCATIONEXPRESSION);
1837    boolean jjtc001 = true;
1838    jjtree.openNodeScope(jjtn001);
1839    jjtn001.jjtSetFirstToken(getToken(1));
1840    try {
1841      label_14:
1842      while (true) {
1843        if (jj_2_12(2)) {
1844          ;
1845        } else {
1846          break label_14;
1847        }
1848        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1849        case NEWLINE:
1850        case COMMENT:{
1851          BlankLine();
1852          break;
1853          }
1854        default:
1855          jj_la1[55] = jj_gen;
1856          ;
1857        }
1858        token = jj_consume_token(INVOCATION_OPERATOR);
1859        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1860        case NEWLINE:
1861        case COMMENT:{
1862          BlankLine();
1863          break;
1864          }
1865        default:
1866          jj_la1[56] = jj_gen;
1867          ;
1868        }
1869        MethodInvocation();
1870jjtn001.addOperator(token.image);
1871      }
1872    } catch (Throwable jjte001) {
1873if (jjtc001) {
1874      jjtree.clearNodeScope(jjtn001);
1875      jjtc001 = false;
1876    } else {
1877      jjtree.popNode();
1878    }
1879    if (jjte001 instanceof RuntimeException) {
1880      {if (true) throw (RuntimeException)jjte001;}
1881    }
1882    if (jjte001 instanceof ParseException) {
1883      {if (true) throw (ParseException)jjte001;}
1884    }
1885    {if (true) throw (Error)jjte001;}
1886    } finally {
1887if (jjtc001) {
1888      jjtree.closeNodeScope(jjtn001,  token != null);
1889      jjtn001.jjtSetLastToken(getToken(0));
1890    }
1891    }
1892    label_15:
1893    while (true) {
1894      if (jj_2_13(2)) {
1895        ;
1896      } else {
1897        break label_15;
1898      }
1899      anon = AnonymousFunctionInvocation();
1900anon.setOnExpression(true);
1901    }
1902  }
1903
1904  final public void MultiplicativeExpression() throws ParseException {Token token = null;
1905    UnaryExpression();
1906ASTMultiplicativeExpression jjtn001 = new ASTMultiplicativeExpression(JJTMULTIPLICATIVEEXPRESSION);
1907    boolean jjtc001 = true;
1908    jjtree.openNodeScope(jjtn001);
1909    jjtn001.jjtSetFirstToken(getToken(1));
1910    try {
1911      label_16:
1912      while (true) {
1913        if (jj_2_14(2)) {
1914          ;
1915        } else {
1916          break label_16;
1917        }
1918        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1919        case NEWLINE:
1920        case COMMENT:{
1921          BlankLine();
1922          break;
1923          }
1924        default:
1925          jj_la1[57] = jj_gen;
1926          ;
1927        }
1928        token = jj_consume_token(MULTIPLICATIVE_OPERATOR);
1929        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1930        case NEWLINE:
1931        case COMMENT:{
1932          BlankLine();
1933          break;
1934          }
1935        default:
1936          jj_la1[58] = jj_gen;
1937          ;
1938        }
1939        InvocationExpression();
1940jjtn001.addOperator(token.image);
1941      }
1942    } catch (Throwable jjte001) {
1943if (jjtc001) {
1944      jjtree.clearNodeScope(jjtn001);
1945      jjtc001 = false;
1946    } else {
1947      jjtree.popNode();
1948    }
1949    if (jjte001 instanceof RuntimeException) {
1950      {if (true) throw (RuntimeException)jjte001;}
1951    }
1952    if (jjte001 instanceof ParseException) {
1953      {if (true) throw (ParseException)jjte001;}
1954    }
1955    {if (true) throw (Error)jjte001;}
1956    } finally {
1957if (jjtc001) {
1958      jjtree.closeNodeScope(jjtn001,  token != null);
1959      jjtn001.jjtSetLastToken(getToken(0));
1960    }
1961    }
1962  }
1963
1964  final public void AdditiveExpression() throws ParseException {Token token = null;
1965    MultiplicativeExpression();
1966ASTAdditiveExpression jjtn001 = new ASTAdditiveExpression(JJTADDITIVEEXPRESSION);
1967    boolean jjtc001 = true;
1968    jjtree.openNodeScope(jjtn001);
1969    jjtn001.jjtSetFirstToken(getToken(1));
1970    try {
1971      label_17:
1972      while (true) {
1973        if (jj_2_15(2)) {
1974          ;
1975        } else {
1976          break label_17;
1977        }
1978        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1979        case NEWLINE:
1980        case COMMENT:{
1981          BlankLine();
1982          break;
1983          }
1984        default:
1985          jj_la1[59] = jj_gen;
1986          ;
1987        }
1988        token = jj_consume_token(ADDITIVE_OPERATOR);
1989        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1990        case NEWLINE:
1991        case COMMENT:{
1992          BlankLine();
1993          break;
1994          }
1995        default:
1996          jj_la1[60] = jj_gen;
1997          ;
1998        }
1999        MultiplicativeExpression();
2000jjtn001.addOperator(token.image);
2001      }
2002    } catch (Throwable jjte001) {
2003if (jjtc001) {
2004      jjtree.clearNodeScope(jjtn001);
2005      jjtc001 = false;
2006    } else {
2007      jjtree.popNode();
2008    }
2009    if (jjte001 instanceof RuntimeException) {
2010      {if (true) throw (RuntimeException)jjte001;}
2011    }
2012    if (jjte001 instanceof ParseException) {
2013      {if (true) throw (ParseException)jjte001;}
2014    }
2015    {if (true) throw (Error)jjte001;}
2016    } finally {
2017if (jjtc001) {
2018      jjtree.closeNodeScope(jjtn001,  token != null);
2019      jjtn001.jjtSetLastToken(getToken(0));
2020    }
2021    }
2022  }
2023
2024  final public void RelationalExpression() throws ParseException {Token token = null;
2025    AdditiveExpression();
2026ASTRelationalExpression jjtn001 = new ASTRelationalExpression(JJTRELATIONALEXPRESSION);
2027    boolean jjtc001 = true;
2028    jjtree.openNodeScope(jjtn001);
2029    jjtn001.jjtSetFirstToken(getToken(1));
2030    try {
2031      if (jj_2_16(2)) {
2032        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2033        case NEWLINE:
2034        case COMMENT:{
2035          BlankLine();
2036          break;
2037          }
2038        default:
2039          jj_la1[61] = jj_gen;
2040          ;
2041        }
2042        token = jj_consume_token(RELATIONAL_OPERATOR);
2043        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2044        case NEWLINE:
2045        case COMMENT:{
2046          BlankLine();
2047          break;
2048          }
2049        default:
2050          jj_la1[62] = jj_gen;
2051          ;
2052        }
2053        AdditiveExpression();
2054jjtn001.setOperator(token.image);
2055      } else {
2056        ;
2057      }
2058    } catch (Throwable jjte001) {
2059if (jjtc001) {
2060      jjtree.clearNodeScope(jjtn001);
2061      jjtc001 = false;
2062    } else {
2063      jjtree.popNode();
2064    }
2065    if (jjte001 instanceof RuntimeException) {
2066      {if (true) throw (RuntimeException)jjte001;}
2067    }
2068    if (jjte001 instanceof ParseException) {
2069      {if (true) throw (ParseException)jjte001;}
2070    }
2071    {if (true) throw (Error)jjte001;}
2072    } finally {
2073if (jjtc001) {
2074      jjtree.closeNodeScope(jjtn001,  token != null);
2075      jjtn001.jjtSetLastToken(getToken(0));
2076    }
2077    }
2078  }
2079
2080  final public void EqualityExpression() throws ParseException {Token token = null;
2081    RelationalExpression();
2082ASTEqualityExpression jjtn001 = new ASTEqualityExpression(JJTEQUALITYEXPRESSION);
2083    boolean jjtc001 = true;
2084    jjtree.openNodeScope(jjtn001);
2085    jjtn001.jjtSetFirstToken(getToken(1));
2086    try {
2087      if (jj_2_17(2)) {
2088        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2089        case NEWLINE:
2090        case COMMENT:{
2091          BlankLine();
2092          break;
2093          }
2094        default:
2095          jj_la1[63] = jj_gen;
2096          ;
2097        }
2098        token = jj_consume_token(EQUALITY_OPERATOR);
2099        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2100        case NEWLINE:
2101        case COMMENT:{
2102          BlankLine();
2103          break;
2104          }
2105        default:
2106          jj_la1[64] = jj_gen;
2107          ;
2108        }
2109        RelationalExpression();
2110jjtn001.setOperator(token.image);
2111      } else {
2112        ;
2113      }
2114    } catch (Throwable jjte001) {
2115if (jjtc001) {
2116      jjtree.clearNodeScope(jjtn001);
2117      jjtc001 = false;
2118    } else {
2119      jjtree.popNode();
2120    }
2121    if (jjte001 instanceof RuntimeException) {
2122      {if (true) throw (RuntimeException)jjte001;}
2123    }
2124    if (jjte001 instanceof ParseException) {
2125      {if (true) throw (ParseException)jjte001;}
2126    }
2127    {if (true) throw (Error)jjte001;}
2128    } finally {
2129if (jjtc001) {
2130      jjtree.closeNodeScope(jjtn001,  token != null);
2131      jjtn001.jjtSetLastToken(getToken(0));
2132    }
2133    }
2134  }
2135
2136  final public void AndExpression() throws ParseException {int count = 0;
2137    EqualityExpression();
2138ASTAndExpression jjtn001 = new ASTAndExpression(JJTANDEXPRESSION);
2139    boolean jjtc001 = true;
2140    jjtree.openNodeScope(jjtn001);
2141    jjtn001.jjtSetFirstToken(getToken(1));
2142    try {
2143      label_18:
2144      while (true) {
2145        if (jj_2_18(2)) {
2146          ;
2147        } else {
2148          break label_18;
2149        }
2150        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2151        case NEWLINE:
2152        case COMMENT:{
2153          BlankLine();
2154          break;
2155          }
2156        default:
2157          jj_la1[65] = jj_gen;
2158          ;
2159        }
2160        jj_consume_token(AND_OPERATOR);
2161        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2162        case NEWLINE:
2163        case COMMENT:{
2164          BlankLine();
2165          break;
2166          }
2167        default:
2168          jj_la1[66] = jj_gen;
2169          ;
2170        }
2171        EqualityExpression();
2172jjtn001.increaseCount();
2173      count++;
2174      }
2175    } catch (Throwable jjte001) {
2176if (jjtc001) {
2177      jjtree.clearNodeScope(jjtn001);
2178      jjtc001 = false;
2179    } else {
2180      jjtree.popNode();
2181    }
2182    if (jjte001 instanceof RuntimeException) {
2183      {if (true) throw (RuntimeException)jjte001;}
2184    }
2185    if (jjte001 instanceof ParseException) {
2186      {if (true) throw (ParseException)jjte001;}
2187    }
2188    {if (true) throw (Error)jjte001;}
2189    } finally {
2190if (jjtc001) {
2191      jjtree.closeNodeScope(jjtn001,  count > 0);
2192      jjtn001.jjtSetLastToken(getToken(0));
2193    }
2194    }
2195  }
2196
2197  final public void OrExpression() throws ParseException {int count = 0;
2198    AndExpression();
2199ASTOrExpression jjtn001 = new ASTOrExpression(JJTOREXPRESSION);
2200    boolean jjtc001 = true;
2201    jjtree.openNodeScope(jjtn001);
2202    jjtn001.jjtSetFirstToken(getToken(1));
2203    try {
2204      label_19:
2205      while (true) {
2206        if (jj_2_19(2)) {
2207          ;
2208        } else {
2209          break label_19;
2210        }
2211        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2212        case NEWLINE:
2213        case COMMENT:{
2214          BlankLine();
2215          break;
2216          }
2217        default:
2218          jj_la1[67] = jj_gen;
2219          ;
2220        }
2221        jj_consume_token(OR_OPERATOR);
2222        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2223        case NEWLINE:
2224        case COMMENT:{
2225          BlankLine();
2226          break;
2227          }
2228        default:
2229          jj_la1[68] = jj_gen;
2230          ;
2231        }
2232        AndExpression();
2233jjtn001.increaseCount();
2234      count++;
2235      }
2236    } catch (Throwable jjte001) {
2237if (jjtc001) {
2238      jjtree.clearNodeScope(jjtn001);
2239      jjtc001 = false;
2240    } else {
2241      jjtree.popNode();
2242    }
2243    if (jjte001 instanceof RuntimeException) {
2244      {if (true) throw (RuntimeException)jjte001;}
2245    }
2246    if (jjte001 instanceof ParseException) {
2247      {if (true) throw (ParseException)jjte001;}
2248    }
2249    {if (true) throw (Error)jjte001;}
2250    } finally {
2251if (jjtc001) {
2252      jjtree.closeNodeScope(jjtn001,  count > 0);
2253      jjtn001.jjtSetLastToken(getToken(0));
2254    }
2255    }
2256  }
2257
2258  final public void OrIfNullExpression() throws ParseException {int count = 0;
2259    OrExpression();
2260ASTOrIfNullExpression jjtn001 = new ASTOrIfNullExpression(JJTORIFNULLEXPRESSION);
2261    boolean jjtc001 = true;
2262    jjtree.openNodeScope(jjtn001);
2263    jjtn001.jjtSetFirstToken(getToken(1));
2264    try {
2265      label_20:
2266      while (true) {
2267        if (jj_2_20(2)) {
2268          ;
2269        } else {
2270          break label_20;
2271        }
2272        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2273        case NEWLINE:
2274        case COMMENT:{
2275          BlankLine();
2276          break;
2277          }
2278        default:
2279          jj_la1[69] = jj_gen;
2280          ;
2281        }
2282        jj_consume_token(OR_IFNULL_OPERATOR);
2283        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2284        case NEWLINE:
2285        case COMMENT:{
2286          BlankLine();
2287          break;
2288          }
2289        default:
2290          jj_la1[70] = jj_gen;
2291          ;
2292        }
2293        OrExpression();
2294jjtn001.increaseCount();
2295      count++;
2296      }
2297    } catch (Throwable jjte001) {
2298if (jjtc001) {
2299      jjtree.clearNodeScope(jjtn001);
2300      jjtc001 = false;
2301    } else {
2302      jjtree.popNode();
2303    }
2304    if (jjte001 instanceof RuntimeException) {
2305      {if (true) throw (RuntimeException)jjte001;}
2306    }
2307    if (jjte001 instanceof ParseException) {
2308      {if (true) throw (ParseException)jjte001;}
2309    }
2310    {if (true) throw (Error)jjte001;}
2311    } finally {
2312if (jjtc001) {
2313      jjtree.closeNodeScope(jjtn001,  count > 0);
2314      jjtn001.jjtSetLastToken(getToken(0));
2315    }
2316    }
2317  }
2318
2319  final public void MethodInvocation() throws ParseException {/*@bgen(jjtree) MethodInvocation */
2320  ASTMethodInvocation jjtn000 = new ASTMethodInvocation(JJTMETHODINVOCATION);
2321  boolean jjtc000 = true;
2322  jjtree.openNodeScope(jjtn000);
2323  jjtn000.jjtSetFirstToken(getToken(1));Token token;
2324    try {
2325      token = jj_consume_token(IDENTIFIER);
2326      Arguments();
2327      label_21:
2328      while (true) {
2329        if (jj_2_21(2)) {
2330          ;
2331        } else {
2332          break label_21;
2333        }
2334        AnonymousFunctionInvocation();
2335      }
2336jjtree.closeNodeScope(jjtn000, true);
2337    jjtc000 = false;
2338    jjtn000.jjtSetLastToken(getToken(0));
2339jjtn000.setName(token.image);
2340    } catch (Throwable jjte000) {
2341if (jjtc000) {
2342      jjtree.clearNodeScope(jjtn000);
2343      jjtc000 = false;
2344    } else {
2345      jjtree.popNode();
2346    }
2347    if (jjte000 instanceof RuntimeException) {
2348      {if (true) throw (RuntimeException)jjte000;}
2349    }
2350    if (jjte000 instanceof ParseException) {
2351      {if (true) throw (ParseException)jjte000;}
2352    }
2353    {if (true) throw (Error)jjte000;}
2354    } finally {
2355if (jjtc000) {
2356      jjtree.closeNodeScope(jjtn000, true);
2357      jjtn000.jjtSetLastToken(getToken(0));
2358    }
2359    }
2360  }
2361
2362  final public void Block() throws ParseException {/*@bgen(jjtree) Block */
2363  ASTBlock jjtn000 = new ASTBlock(JJTBLOCK);
2364  boolean jjtc000 = true;
2365  jjtree.openNodeScope(jjtn000);
2366  jjtn000.jjtSetFirstToken(getToken(1));
2367    try {
2368      try {
2369        jj_consume_token(77);
2370        label_22:
2371        while (true) {
2372          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2373          case NEWLINE:
2374          case RETURN:
2375          case IF:
2376          case WHILE:
2377          case FOR:
2378          case FOREACH:
2379          case THROW:
2380          case TRY:
2381          case CASE:
2382          case MATCH:
2383          case BREAK:
2384          case CONTINUE:
2385          case UNARY_OPERATOR:
2386          case VAR:
2387          case LET:
2388          case NUMBER:
2389          case LONG_NUMBER:
2390          case BIGINTEGER:
2391          case FLOATING_NUMBER:
2392          case FLOAT:
2393          case BIGDECIMAL:
2394          case STRING:
2395          case CHAR:
2396          case NULL:
2397          case TRUE:
2398          case FALSE:
2399          case CLASSREF:
2400          case FUNREF:
2401          case COLL_START:
2402          case MULTI_STRING:
2403          case IDENTIFIER:
2404          case COMMENT:
2405          case 77:
2406          case 78:
2407          case 81:
2408          case 82:{
2409            ;
2410            break;
2411            }
2412          default:
2413            jj_la1[71] = jj_gen;
2414            break label_22;
2415          }
2416          try {
2417            Statement();
2418          } catch (ParseException e) {
2419skipto(NEWLINE, e, jjtn000);
2420          }
2421        }
2422        jj_consume_token(75);
2423      } catch (ParseException e) {
2424skipto(NEWLINE, e, jjtn000);
2425      }
2426    } catch (Throwable jjte000) {
2427if (jjtc000) {
2428      jjtree.clearNodeScope(jjtn000);
2429      jjtc000 = false;
2430    } else {
2431      jjtree.popNode();
2432    }
2433    if (jjte000 instanceof RuntimeException) {
2434      {if (true) throw (RuntimeException)jjte000;}
2435    }
2436    if (jjte000 instanceof ParseException) {
2437      {if (true) throw (ParseException)jjte000;}
2438    }
2439    {if (true) throw (Error)jjte000;}
2440    } finally {
2441if (jjtc000) {
2442      jjtree.closeNodeScope(jjtn000, true);
2443      jjtn000.jjtSetLastToken(getToken(0));
2444    }
2445    }
2446  }
2447
2448  final public void Function() throws ParseException {/*@bgen(jjtree) Function */
2449  ASTFunction jjtn000 = new ASTFunction(JJTFUNCTION);
2450  boolean jjtc000 = true;
2451  jjtree.openNodeScope(jjtn000);
2452  jjtn000.jjtSetFirstToken(getToken(1));List<String> parameters = null;
2453  Token varargsToken = null;
2454  boolean compactForm = false;
2455    try {
2456      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2457      case 81:{
2458        jj_consume_token(81);
2459        parameters = Parameters();
2460        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2461        case 80:{
2462          varargsToken = jj_consume_token(80);
2463          break;
2464          }
2465        default:
2466          jj_la1[72] = jj_gen;
2467          ;
2468        }
2469        jj_consume_token(81);
2470        break;
2471        }
2472      default:
2473        jj_la1[73] = jj_gen;
2474        ;
2475      }
2476      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2477      case 77:{
2478        Block();
2479        break;
2480        }
2481      case 82:{
2482        jj_consume_token(82);
2483        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2484        case NEWLINE:
2485        case COMMENT:{
2486          BlankLine();
2487          break;
2488          }
2489        default:
2490          jj_la1[74] = jj_gen;
2491          ;
2492        }
2493        ExpressionStatement();
2494compactForm = true;
2495        break;
2496        }
2497      default:
2498        jj_la1[75] = jj_gen;
2499        jj_consume_token(-1);
2500        throw new ParseException();
2501      }
2502jjtree.closeNodeScope(jjtn000, true);
2503    jjtc000 = false;
2504    jjtn000.jjtSetLastToken(getToken(0));
2505if (parameters == null) {
2506      parameters = Collections.emptyList();
2507    }
2508    jjtn000.setCompactForm(compactForm);
2509    jjtn000.setParameters(parameters);
2510    jjtn000.setVarargs(varargsToken != null);
2511    } catch (Throwable jjte000) {
2512if (jjtc000) {
2513      jjtree.clearNodeScope(jjtn000);
2514      jjtc000 = false;
2515    } else {
2516      jjtree.popNode();
2517    }
2518    if (jjte000 instanceof RuntimeException) {
2519      {if (true) throw (RuntimeException)jjte000;}
2520    }
2521    if (jjte000 instanceof ParseException) {
2522      {if (true) throw (ParseException)jjte000;}
2523    }
2524    {if (true) throw (Error)jjte000;}
2525    } finally {
2526if (jjtc000) {
2527      jjtree.closeNodeScope(jjtn000, true);
2528      jjtn000.jjtSetLastToken(getToken(0));
2529    }
2530    }
2531  }
2532
2533  final public void Literal() throws ParseException {/*@bgen(jjtree) Literal */
2534  ASTLiteral jjtn000 = new ASTLiteral(JJTLITERAL);
2535  boolean jjtc000 = true;
2536  jjtree.openNodeScope(jjtn000);
2537  jjtn000.jjtSetFirstToken(getToken(1));Object value;
2538    try {
2539      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2540      case CLASSREF:{
2541        value = ClassLiteral();
2542jjtree.closeNodeScope(jjtn000, true);
2543      jjtc000 = false;
2544      jjtn000.jjtSetLastToken(getToken(0));
2545jjtn000.setLiteralValue(value);
2546        break;
2547        }
2548      case STRING:
2549      case MULTI_STRING:{
2550        value = StringLiteral();
2551jjtree.closeNodeScope(jjtn000, true);
2552      jjtc000 = false;
2553      jjtn000.jjtSetLastToken(getToken(0));
2554jjtn000.setLiteralValue(value);
2555        break;
2556        }
2557      case CHAR:{
2558        value = CharLiteral();
2559jjtree.closeNodeScope(jjtn000, true);
2560      jjtc000 = false;
2561      jjtn000.jjtSetLastToken(getToken(0));
2562jjtn000.setLiteralValue(value);
2563        break;
2564        }
2565      case BIGDECIMAL:{
2566        value = BigDecimalLiteral();
2567jjtree.closeNodeScope(jjtn000, true);
2568      jjtc000 = false;
2569      jjtn000.jjtSetLastToken(getToken(0));
2570jjtn000.setLiteralValue(value);
2571        break;
2572        }
2573      case BIGINTEGER:{
2574        value = BigIntegerLiteral();
2575jjtree.closeNodeScope(jjtn000, true);
2576      jjtc000 = false;
2577      jjtn000.jjtSetLastToken(getToken(0));
2578jjtn000.setLiteralValue(value);
2579        break;
2580        }
2581      case FLOAT:{
2582        value = FloatLiteral();
2583jjtree.closeNodeScope(jjtn000, true);
2584      jjtc000 = false;
2585      jjtn000.jjtSetLastToken(getToken(0));
2586jjtn000.setLiteralValue(value);
2587        break;
2588        }
2589      case FLOATING_NUMBER:{
2590        value = DoubleLiteral();
2591jjtree.closeNodeScope(jjtn000, true);
2592      jjtc000 = false;
2593      jjtn000.jjtSetLastToken(getToken(0));
2594jjtn000.setLiteralValue(value);
2595        break;
2596        }
2597      case LONG_NUMBER:{
2598        value = LongLiteral();
2599jjtree.closeNodeScope(jjtn000, true);
2600      jjtc000 = false;
2601      jjtn000.jjtSetLastToken(getToken(0));
2602jjtn000.setLiteralValue(value);
2603        break;
2604        }
2605      case NUMBER:{
2606        value = IntegerLiteral();
2607jjtree.closeNodeScope(jjtn000, true);
2608      jjtc000 = false;
2609      jjtn000.jjtSetLastToken(getToken(0));
2610jjtn000.setLiteralValue(value);
2611        break;
2612        }
2613      case NULL:{
2614        jj_consume_token(NULL);
2615jjtree.closeNodeScope(jjtn000, true);
2616      jjtc000 = false;
2617      jjtn000.jjtSetLastToken(getToken(0));
2618jjtn000.setLiteralValue(null);
2619        break;
2620        }
2621      case TRUE:{
2622        jj_consume_token(TRUE);
2623jjtree.closeNodeScope(jjtn000, true);
2624      jjtc000 = false;
2625      jjtn000.jjtSetLastToken(getToken(0));
2626jjtn000.setLiteralValue(Boolean.TRUE);
2627        break;
2628        }
2629      case FALSE:{
2630        jj_consume_token(FALSE);
2631jjtree.closeNodeScope(jjtn000, true);
2632      jjtc000 = false;
2633      jjtn000.jjtSetLastToken(getToken(0));
2634jjtn000.setLiteralValue(Boolean.FALSE);
2635        break;
2636        }
2637      case FUNREF:{
2638        value = FunctionRef();
2639jjtree.closeNodeScope(jjtn000, true);
2640      jjtc000 = false;
2641      jjtn000.jjtSetLastToken(getToken(0));
2642jjtn000.setLiteralValue(value);
2643        break;
2644        }
2645      default:
2646        jj_la1[76] = jj_gen;
2647        jj_consume_token(-1);
2648        throw new ParseException();
2649      }
2650    } catch (Throwable jjte000) {
2651if (jjtc000) {
2652      jjtree.clearNodeScope(jjtn000);
2653      jjtc000 = false;
2654    } else {
2655      jjtree.popNode();
2656    }
2657    if (jjte000 instanceof RuntimeException) {
2658      {if (true) throw (RuntimeException)jjte000;}
2659    }
2660    if (jjte000 instanceof ParseException) {
2661      {if (true) throw (ParseException)jjte000;}
2662    }
2663    {if (true) throw (Error)jjte000;}
2664    } finally {
2665if (jjtc000) {
2666      jjtree.closeNodeScope(jjtn000, true);
2667      jjtn000.jjtSetLastToken(getToken(0));
2668    }
2669    }
2670  }
2671
2672  final public void CollectionLiteral() throws ParseException {/*@bgen(jjtree) CollectionLiteral */
2673  ASTCollectionLiteral jjtn000 = new ASTCollectionLiteral(JJTCOLLECTIONLITERAL);
2674  boolean jjtc000 = true;
2675  jjtree.openNodeScope(jjtn000);
2676  jjtn000.jjtSetFirstToken(getToken(1));Token token;
2677  boolean isRange = false;
2678  boolean isComprehension = false;
2679    try {
2680      token = jj_consume_token(COLL_START);
2681      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2682      case NEWLINE:
2683      case COMMENT:{
2684        BlankLine();
2685        break;
2686        }
2687      default:
2688        jj_la1[77] = jj_gen;
2689        ;
2690      }
2691      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2692      case MATCH:
2693      case UNARY_OPERATOR:
2694      case NUMBER:
2695      case LONG_NUMBER:
2696      case BIGINTEGER:
2697      case FLOATING_NUMBER:
2698      case FLOAT:
2699      case BIGDECIMAL:
2700      case STRING:
2701      case CHAR:
2702      case NULL:
2703      case TRUE:
2704      case FALSE:
2705      case CLASSREF:
2706      case FUNREF:
2707      case COLL_START:
2708      case MULTI_STRING:
2709      case IDENTIFIER:
2710      case 77:
2711      case 78:
2712      case 81:
2713      case 82:{
2714        ExpressionStatement();
2715        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2716        case FOR:
2717        case FOREACH:
2718        case 73:
2719        case 83:{
2720          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2721          case 73:{
2722            label_23:
2723            while (true) {
2724              jj_consume_token(73);
2725              switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2726              case NEWLINE:
2727              case COMMENT:{
2728                BlankLine();
2729                break;
2730                }
2731              default:
2732                jj_la1[78] = jj_gen;
2733                ;
2734              }
2735              ExpressionStatement();
2736              switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2737              case 73:{
2738                ;
2739                break;
2740                }
2741              default:
2742                jj_la1[79] = jj_gen;
2743                break label_23;
2744              }
2745            }
2746            break;
2747            }
2748          case 83:{
2749            jj_consume_token(83);
2750            ExpressionStatement();
2751isRange = true;
2752            break;
2753            }
2754          case FOR:
2755          case FOREACH:{
2756            label_24:
2757            while (true) {
2758              switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2759              case FOREACH:{
2760                ForEachLoop();
2761                break;
2762                }
2763              case FOR:{
2764                ForLoop();
2765                break;
2766                }
2767              default:
2768                jj_la1[80] = jj_gen;
2769                jj_consume_token(-1);
2770                throw new ParseException();
2771              }
2772              switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2773              case FOR:
2774              case FOREACH:{
2775                ;
2776                break;
2777                }
2778              default:
2779                jj_la1[81] = jj_gen;
2780                break label_24;
2781              }
2782            }
2783isComprehension = true;
2784            break;
2785            }
2786          default:
2787            jj_la1[82] = jj_gen;
2788            jj_consume_token(-1);
2789            throw new ParseException();
2790          }
2791          break;
2792          }
2793        default:
2794          jj_la1[83] = jj_gen;
2795          ;
2796        }
2797        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2798        case NEWLINE:
2799        case COMMENT:{
2800          BlankLine();
2801          break;
2802          }
2803        default:
2804          jj_la1[84] = jj_gen;
2805          ;
2806        }
2807        break;
2808        }
2809      default:
2810        jj_la1[85] = jj_gen;
2811        ;
2812      }
2813      jj_consume_token(84);
2814jjtree.closeNodeScope(jjtn000, true);
2815    jjtc000 = false;
2816    jjtn000.jjtSetLastToken(getToken(0));
2817String image = token.image;
2818    jjtn000.setType(image.substring(0, image.length() - 1));
2819    if (jjtn000.getType().isEmpty()) {
2820      jjtn000.setType("tuple");
2821    }
2822    if (isRange) {
2823      jjtn000.setType("range");
2824    }
2825    jjtn000.setComprehension(isComprehension);
2826    } catch (Throwable jjte000) {
2827if (jjtc000) {
2828      jjtree.clearNodeScope(jjtn000);
2829      jjtc000 = false;
2830    } else {
2831      jjtree.popNode();
2832    }
2833    if (jjte000 instanceof RuntimeException) {
2834      {if (true) throw (RuntimeException)jjte000;}
2835    }
2836    if (jjte000 instanceof ParseException) {
2837      {if (true) throw (ParseException)jjte000;}
2838    }
2839    {if (true) throw (Error)jjte000;}
2840    } finally {
2841if (jjtc000) {
2842      jjtree.closeNodeScope(jjtn000, true);
2843      jjtn000.jjtSetLastToken(getToken(0));
2844    }
2845    }
2846  }
2847
2848  final public void Reference() throws ParseException {/*@bgen(jjtree) Reference */
2849  ASTReference jjtn000 = new ASTReference(JJTREFERENCE);
2850  boolean jjtc000 = true;
2851  jjtree.openNodeScope(jjtn000);
2852  jjtn000.jjtSetFirstToken(getToken(1));
2853    try {
2854      jj_consume_token(IDENTIFIER);
2855jjtree.closeNodeScope(jjtn000, true);
2856    jjtc000 = false;
2857    jjtn000.jjtSetLastToken(getToken(0));
2858jjtn000.setName(jjtn000.jjtGetFirstToken().image);
2859    } finally {
2860if (jjtc000) {
2861      jjtree.closeNodeScope(jjtn000, true);
2862      jjtn000.jjtSetLastToken(getToken(0));
2863    }
2864    }
2865  }
2866
2867  final public ASTDestructuringAssignment DestructuringAssignment() throws ParseException {/*@bgen(jjtree) DestructuringAssignment */
2868  ASTDestructuringAssignment jjtn000 = new ASTDestructuringAssignment(JJTDESTRUCTURINGASSIGNMENT);
2869  boolean jjtc000 = true;
2870  jjtree.openNodeScope(jjtn000);
2871  jjtn000.jjtSetFirstToken(getToken(1));List<String> names;
2872  Token varargsToken = null;
2873    try {
2874      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2875      case LET:{
2876        jj_consume_token(LET);
2877        names = DestructuredNames();
2878        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2879        case 80:{
2880          varargsToken = jj_consume_token(80);
2881          break;
2882          }
2883        default:
2884          jj_la1[86] = jj_gen;
2885          ;
2886        }
2887        jj_consume_token(76);
2888        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2889        case NEWLINE:
2890        case COMMENT:{
2891          BlankLine();
2892          break;
2893          }
2894        default:
2895          jj_la1[87] = jj_gen;
2896          ;
2897        }
2898        ExpressionStatement();
2899jjtree.closeNodeScope(jjtn000, true);
2900    jjtc000 = false;
2901    jjtn000.jjtSetLastToken(getToken(0));
2902jjtn000.setType(ASTLetOrVar.Type.LET);
2903    jjtn000.setNames(names);
2904    jjtn000.setVarargs(varargsToken != null);
2905    {if ("" != null) return jjtn000;}
2906        break;
2907        }
2908      case VAR:{
2909        jj_consume_token(VAR);
2910        names = DestructuredNames();
2911        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2912        case 80:{
2913          varargsToken = jj_consume_token(80);
2914          break;
2915          }
2916        default:
2917          jj_la1[88] = jj_gen;
2918          ;
2919        }
2920        jj_consume_token(76);
2921        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2922        case NEWLINE:
2923        case COMMENT:{
2924          BlankLine();
2925          break;
2926          }
2927        default:
2928          jj_la1[89] = jj_gen;
2929          ;
2930        }
2931        ExpressionStatement();
2932jjtree.closeNodeScope(jjtn000, true);
2933    jjtc000 = false;
2934    jjtn000.jjtSetLastToken(getToken(0));
2935jjtn000.setType(ASTLetOrVar.Type.VAR);
2936    jjtn000.setNames(names);
2937    jjtn000.setVarargs(varargsToken != null);
2938    {if ("" != null) return jjtn000;}
2939        break;
2940        }
2941      case IDENTIFIER:{
2942        names = DestructuredNames();
2943        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2944        case 80:{
2945          varargsToken = jj_consume_token(80);
2946          break;
2947          }
2948        default:
2949          jj_la1[90] = jj_gen;
2950          ;
2951        }
2952        jj_consume_token(76);
2953        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2954        case NEWLINE:
2955        case COMMENT:{
2956          BlankLine();
2957          break;
2958          }
2959        default:
2960          jj_la1[91] = jj_gen;
2961          ;
2962        }
2963        ExpressionStatement();
2964jjtree.closeNodeScope(jjtn000, true);
2965    jjtc000 = false;
2966    jjtn000.jjtSetLastToken(getToken(0));
2967jjtn000.setType(null);
2968    jjtn000.setNames(names);
2969    jjtn000.setVarargs(varargsToken != null);
2970    {if ("" != null) return jjtn000;}
2971        break;
2972        }
2973      default:
2974        jj_la1[92] = jj_gen;
2975        jj_consume_token(-1);
2976        throw new ParseException();
2977      }
2978    } catch (Throwable jjte000) {
2979if (jjtc000) {
2980      jjtree.clearNodeScope(jjtn000);
2981      jjtc000 = false;
2982    } else {
2983      jjtree.popNode();
2984    }
2985    if (jjte000 instanceof RuntimeException) {
2986      {if (true) throw (RuntimeException)jjte000;}
2987    }
2988    if (jjte000 instanceof ParseException) {
2989      {if (true) throw (ParseException)jjte000;}
2990    }
2991    {if (true) throw (Error)jjte000;}
2992    } finally {
2993if (jjtc000) {
2994      jjtree.closeNodeScope(jjtn000, true);
2995      jjtn000.jjtSetLastToken(getToken(0));
2996    }
2997    }
2998    throw new Error("Missing return statement in function");
2999  }
3000
3001  final public List<String> DestructuredNames() throws ParseException {List<String> names = new LinkedList<String>();
3002  Token rootToken;
3003  Token nextToken;
3004    rootToken = jj_consume_token(IDENTIFIER);
3005names.add(rootToken.image);
3006    label_25:
3007    while (true) {
3008      jj_consume_token(73);
3009      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3010      case NEWLINE:
3011      case COMMENT:{
3012        BlankLine();
3013        break;
3014        }
3015      default:
3016        jj_la1[93] = jj_gen;
3017        ;
3018      }
3019      nextToken = jj_consume_token(IDENTIFIER);
3020names.add(nextToken.image);
3021      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3022      case 73:{
3023        ;
3024        break;
3025        }
3026      default:
3027        jj_la1[94] = jj_gen;
3028        break label_25;
3029      }
3030    }
3031{if ("" != null) return names;}
3032    throw new Error("Missing return statement in function");
3033  }
3034
3035  final public ASTLetOrVar LetOrVar() throws ParseException {/*@bgen(jjtree) LetOrVar */
3036  ASTLetOrVar jjtn000 = new ASTLetOrVar(JJTLETORVAR);
3037  boolean jjtc000 = true;
3038  jjtree.openNodeScope(jjtn000);
3039  jjtn000.jjtSetFirstToken(getToken(1));Token idToken;
3040    try {
3041      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3042      case LET:{
3043        jj_consume_token(LET);
3044        idToken = jj_consume_token(IDENTIFIER);
3045        jj_consume_token(76);
3046        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3047        case NEWLINE:
3048        case COMMENT:{
3049          BlankLine();
3050          break;
3051          }
3052        default:
3053          jj_la1[95] = jj_gen;
3054          ;
3055        }
3056        ExpressionStatement();
3057jjtree.closeNodeScope(jjtn000, true);
3058    jjtc000 = false;
3059    jjtn000.jjtSetLastToken(getToken(0));
3060jjtn000.setType(ASTLetOrVar.Type.LET);
3061    jjtn000.setName(idToken.image);
3062    {if ("" != null) return jjtn000;}
3063        break;
3064        }
3065      case VAR:{
3066        jj_consume_token(VAR);
3067        idToken = jj_consume_token(IDENTIFIER);
3068        jj_consume_token(76);
3069        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3070        case NEWLINE:
3071        case COMMENT:{
3072          BlankLine();
3073          break;
3074          }
3075        default:
3076          jj_la1[96] = jj_gen;
3077          ;
3078        }
3079        ExpressionStatement();
3080jjtree.closeNodeScope(jjtn000, true);
3081    jjtc000 = false;
3082    jjtn000.jjtSetLastToken(getToken(0));
3083jjtn000.setType(ASTLetOrVar.Type.VAR);
3084    jjtn000.setName(idToken.image);
3085    {if ("" != null) return jjtn000;}
3086        break;
3087        }
3088      default:
3089        jj_la1[97] = jj_gen;
3090        jj_consume_token(-1);
3091        throw new ParseException();
3092      }
3093    } catch (Throwable jjte000) {
3094if (jjtc000) {
3095      jjtree.clearNodeScope(jjtn000);
3096      jjtc000 = false;
3097    } else {
3098      jjtree.popNode();
3099    }
3100    if (jjte000 instanceof RuntimeException) {
3101      {if (true) throw (RuntimeException)jjte000;}
3102    }
3103    if (jjte000 instanceof ParseException) {
3104      {if (true) throw (ParseException)jjte000;}
3105    }
3106    {if (true) throw (Error)jjte000;}
3107    } finally {
3108if (jjtc000) {
3109      jjtree.closeNodeScope(jjtn000, true);
3110      jjtn000.jjtSetLastToken(getToken(0));
3111    }
3112    }
3113    throw new Error("Missing return statement in function");
3114  }
3115
3116  final public void Assignment() throws ParseException {/*@bgen(jjtree) Assignment */
3117  ASTAssignment jjtn000 = new ASTAssignment(JJTASSIGNMENT);
3118  boolean jjtc000 = true;
3119  jjtree.openNodeScope(jjtn000);
3120  jjtn000.jjtSetFirstToken(getToken(1));Token idToken;
3121    try {
3122      idToken = jj_consume_token(IDENTIFIER);
3123      jj_consume_token(76);
3124      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3125      case NEWLINE:
3126      case COMMENT:{
3127        BlankLine();
3128        break;
3129        }
3130      default:
3131        jj_la1[98] = jj_gen;
3132        ;
3133      }
3134      ExpressionStatement();
3135jjtree.closeNodeScope(jjtn000, true);
3136    jjtc000 = false;
3137    jjtn000.jjtSetLastToken(getToken(0));
3138jjtn000.setName(idToken.image);
3139    } catch (Throwable jjte000) {
3140if (jjtc000) {
3141      jjtree.clearNodeScope(jjtn000);
3142      jjtc000 = false;
3143    } else {
3144      jjtree.popNode();
3145    }
3146    if (jjte000 instanceof RuntimeException) {
3147      {if (true) throw (RuntimeException)jjte000;}
3148    }
3149    if (jjte000 instanceof ParseException) {
3150      {if (true) throw (ParseException)jjte000;}
3151    }
3152    {if (true) throw (Error)jjte000;}
3153    } finally {
3154if (jjtc000) {
3155      jjtree.closeNodeScope(jjtn000, true);
3156      jjtn000.jjtSetLastToken(getToken(0));
3157    }
3158    }
3159  }
3160
3161  final public void Return() throws ParseException {/*@bgen(jjtree) Return */
3162  ASTReturn jjtn000 = new ASTReturn(JJTRETURN);
3163  boolean jjtc000 = true;
3164  jjtree.openNodeScope(jjtn000);
3165  jjtn000.jjtSetFirstToken(getToken(1));
3166    try {
3167      jj_consume_token(RETURN);
3168      if (jj_2_22(2)) {
3169        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3170        case NEWLINE:
3171        case COMMENT:{
3172          BlankLine();
3173          break;
3174          }
3175        default:
3176          jj_la1[99] = jj_gen;
3177          ;
3178        }
3179        ExpressionStatement();
3180      } else {
3181        ;
3182      }
3183    } catch (Throwable jjte000) {
3184if (jjtc000) {
3185      jjtree.clearNodeScope(jjtn000);
3186      jjtc000 = false;
3187    } else {
3188      jjtree.popNode();
3189    }
3190    if (jjte000 instanceof RuntimeException) {
3191      {if (true) throw (RuntimeException)jjte000;}
3192    }
3193    if (jjte000 instanceof ParseException) {
3194      {if (true) throw (ParseException)jjte000;}
3195    }
3196    {if (true) throw (Error)jjte000;}
3197    } finally {
3198if (jjtc000) {
3199      jjtree.closeNodeScope(jjtn000, true);
3200      jjtn000.jjtSetLastToken(getToken(0));
3201    }
3202    }
3203  }
3204
3205  final public void Argument() throws ParseException {/*@bgen(jjtree) Argument */
3206  ASTArgument jjtn000 = new ASTArgument(JJTARGUMENT);
3207  boolean jjtc000 = true;
3208  jjtree.openNodeScope(jjtn000);
3209  jjtn000.jjtSetFirstToken(getToken(1));Token parameterId = null;
3210  Token expression;
3211    try {
3212      if (jj_2_23(2)) {
3213        parameterId = jj_consume_token(IDENTIFIER);
3214        jj_consume_token(76);
3215      } else {
3216        ;
3217      }
3218      ExpressionStatement();
3219jjtree.closeNodeScope(jjtn000, true);
3220    jjtc000 = false;
3221    jjtn000.jjtSetLastToken(getToken(0));
3222if (parameterId != null) {
3223      jjtn000.setName(parameterId.image);
3224      jjtn000.setNamed(true);
3225    }
3226    } catch (Throwable jjte000) {
3227if (jjtc000) {
3228      jjtree.clearNodeScope(jjtn000);
3229      jjtc000 = false;
3230    } else {
3231      jjtree.popNode();
3232    }
3233    if (jjte000 instanceof RuntimeException) {
3234      {if (true) throw (RuntimeException)jjte000;}
3235    }
3236    if (jjte000 instanceof ParseException) {
3237      {if (true) throw (ParseException)jjte000;}
3238    }
3239    {if (true) throw (Error)jjte000;}
3240    } finally {
3241if (jjtc000) {
3242      jjtree.closeNodeScope(jjtn000, true);
3243      jjtn000.jjtSetLastToken(getToken(0));
3244    }
3245    }
3246  }
3247
3248  final public void Arguments() throws ParseException {
3249    jj_consume_token(78);
3250    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3251    case NEWLINE:
3252    case COMMENT:{
3253      BlankLine();
3254      break;
3255      }
3256    default:
3257      jj_la1[100] = jj_gen;
3258      ;
3259    }
3260    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3261    case MATCH:
3262    case UNARY_OPERATOR:
3263    case NUMBER:
3264    case LONG_NUMBER:
3265    case BIGINTEGER:
3266    case FLOATING_NUMBER:
3267    case FLOAT:
3268    case BIGDECIMAL:
3269    case STRING:
3270    case CHAR:
3271    case NULL:
3272    case TRUE:
3273    case FALSE:
3274    case CLASSREF:
3275    case FUNREF:
3276    case COLL_START:
3277    case MULTI_STRING:
3278    case IDENTIFIER:
3279    case 77:
3280    case 78:
3281    case 81:
3282    case 82:{
3283      Argument();
3284      label_26:
3285      while (true) {
3286        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3287        case 73:{
3288          ;
3289          break;
3290          }
3291        default:
3292          jj_la1[101] = jj_gen;
3293          break label_26;
3294        }
3295        jj_consume_token(73);
3296        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3297        case NEWLINE:
3298        case COMMENT:{
3299          BlankLine();
3300          break;
3301          }
3302        default:
3303          jj_la1[102] = jj_gen;
3304          ;
3305        }
3306        Argument();
3307      }
3308      break;
3309      }
3310    default:
3311      jj_la1[103] = jj_gen;
3312      ;
3313    }
3314    jj_consume_token(79);
3315  }
3316
3317  final public ASTAnonymousFunctionInvocation AnonymousFunctionInvocation() throws ParseException {/*@bgen(jjtree) AnonymousFunctionInvocation */
3318  ASTAnonymousFunctionInvocation jjtn000 = new ASTAnonymousFunctionInvocation(JJTANONYMOUSFUNCTIONINVOCATION);
3319  boolean jjtc000 = true;
3320  jjtree.openNodeScope(jjtn000);
3321  jjtn000.jjtSetFirstToken(getToken(1));Token constant = null;
3322    try {
3323      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3324      case CONSTANT_INVOCATION:{
3325        constant = jj_consume_token(CONSTANT_INVOCATION);
3326        break;
3327        }
3328      default:
3329        jj_la1[104] = jj_gen;
3330        ;
3331      }
3332      Arguments();
3333jjtree.closeNodeScope(jjtn000, true);
3334    jjtc000 = false;
3335    jjtn000.jjtSetLastToken(getToken(0));
3336if (constant != null) {
3337      jjtn000.setConstant(true);
3338    }
3339    {if ("" != null) return jjtn000;}
3340    } catch (Throwable jjte000) {
3341if (jjtc000) {
3342      jjtree.clearNodeScope(jjtn000);
3343      jjtc000 = false;
3344    } else {
3345      jjtree.popNode();
3346    }
3347    if (jjte000 instanceof RuntimeException) {
3348      {if (true) throw (RuntimeException)jjte000;}
3349    }
3350    if (jjte000 instanceof ParseException) {
3351      {if (true) throw (ParseException)jjte000;}
3352    }
3353    {if (true) throw (Error)jjte000;}
3354    } finally {
3355if (jjtc000) {
3356      jjtree.closeNodeScope(jjtn000, true);
3357      jjtn000.jjtSetLastToken(getToken(0));
3358    }
3359    }
3360    throw new Error("Missing return statement in function");
3361  }
3362
3363  final public void FunctionInvocation() throws ParseException {/*@bgen(jjtree) FunctionInvocation */
3364  ASTFunctionInvocation jjtn000 = new ASTFunctionInvocation(JJTFUNCTIONINVOCATION);
3365  boolean jjtc000 = true;
3366  jjtree.openNodeScope(jjtn000);
3367  jjtn000.jjtSetFirstToken(getToken(1));String name;
3368  Token constant = null;
3369    try {
3370      name = QualifiedName();
3371      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3372      case CONSTANT_INVOCATION:{
3373        constant = jj_consume_token(CONSTANT_INVOCATION);
3374        break;
3375        }
3376      default:
3377        jj_la1[105] = jj_gen;
3378        ;
3379      }
3380      Arguments();
3381      label_27:
3382      while (true) {
3383        if (jj_2_24(2)) {
3384          ;
3385        } else {
3386          break label_27;
3387        }
3388        AnonymousFunctionInvocation();
3389      }
3390jjtree.closeNodeScope(jjtn000, true);
3391    jjtc000 = false;
3392    jjtn000.jjtSetLastToken(getToken(0));
3393jjtn000.setName(name);
3394    if (constant != null) {
3395      jjtn000.setConstant(true);
3396    }
3397    } catch (Throwable jjte000) {
3398if (jjtc000) {
3399      jjtree.clearNodeScope(jjtn000);
3400      jjtc000 = false;
3401    } else {
3402      jjtree.popNode();
3403    }
3404    if (jjte000 instanceof RuntimeException) {
3405      {if (true) throw (RuntimeException)jjte000;}
3406    }
3407    if (jjte000 instanceof ParseException) {
3408      {if (true) throw (ParseException)jjte000;}
3409    }
3410    {if (true) throw (Error)jjte000;}
3411    } finally {
3412if (jjtc000) {
3413      jjtree.closeNodeScope(jjtn000, true);
3414      jjtn000.jjtSetLastToken(getToken(0));
3415    }
3416    }
3417  }
3418
3419  final public void ConditionalBranching() throws ParseException {/*@bgen(jjtree) ConditionalBranching */
3420  ASTConditionalBranching jjtn000 = new ASTConditionalBranching(JJTCONDITIONALBRANCHING);
3421  boolean jjtc000 = true;
3422  jjtree.openNodeScope(jjtn000);
3423  jjtn000.jjtSetFirstToken(getToken(1));
3424    try {
3425      jj_consume_token(IF);
3426      ExpressionStatement();
3427      Block();
3428      if (jj_2_25(2147483647)) {
3429        jj_consume_token(ELSE);
3430        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3431        case IF:{
3432          ConditionalBranching();
3433          break;
3434          }
3435        case 77:{
3436          Block();
3437          break;
3438          }
3439        default:
3440          jj_la1[106] = jj_gen;
3441          jj_consume_token(-1);
3442          throw new ParseException();
3443        }
3444      } else {
3445        ;
3446      }
3447    } catch (Throwable jjte000) {
3448if (jjtc000) {
3449      jjtree.clearNodeScope(jjtn000);
3450      jjtc000 = false;
3451    } else {
3452      jjtree.popNode();
3453    }
3454    if (jjte000 instanceof RuntimeException) {
3455      {if (true) throw (RuntimeException)jjte000;}
3456    }
3457    if (jjte000 instanceof ParseException) {
3458      {if (true) throw (ParseException)jjte000;}
3459    }
3460    {if (true) throw (Error)jjte000;}
3461    } finally {
3462if (jjtc000) {
3463      jjtree.closeNodeScope(jjtn000, true);
3464      jjtn000.jjtSetLastToken(getToken(0));
3465    }
3466    }
3467  }
3468
3469  final public void Case() throws ParseException {/*@bgen(jjtree) Case */
3470  ASTCase jjtn000 = new ASTCase(JJTCASE);
3471  boolean jjtc000 = true;
3472  jjtree.openNodeScope(jjtn000);
3473  jjtn000.jjtSetFirstToken(getToken(1));
3474    try {
3475      jj_consume_token(CASE);
3476      jj_consume_token(77);
3477      BlankLines();
3478      label_28:
3479      while (true) {
3480        jj_consume_token(WHEN);
3481        ExpressionStatement();
3482        Block();
3483        BlankLines();
3484        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3485        case WHEN:{
3486          ;
3487          break;
3488          }
3489        default:
3490          jj_la1[107] = jj_gen;
3491          break label_28;
3492        }
3493      }
3494      jj_consume_token(OTHERWISE);
3495      Block();
3496      BlankLines();
3497      jj_consume_token(75);
3498    } catch (Throwable jjte000) {
3499if (jjtc000) {
3500      jjtree.clearNodeScope(jjtn000);
3501      jjtc000 = false;
3502    } else {
3503      jjtree.popNode();
3504    }
3505    if (jjte000 instanceof RuntimeException) {
3506      {if (true) throw (RuntimeException)jjte000;}
3507    }
3508    if (jjte000 instanceof ParseException) {
3509      {if (true) throw (ParseException)jjte000;}
3510    }
3511    {if (true) throw (Error)jjte000;}
3512    } finally {
3513if (jjtc000) {
3514      jjtree.closeNodeScope(jjtn000, true);
3515      jjtn000.jjtSetLastToken(getToken(0));
3516    }
3517    }
3518  }
3519
3520  final public void Match() throws ParseException {/*@bgen(jjtree) Match */
3521  ASTMatch jjtn000 = new ASTMatch(JJTMATCH);
3522  boolean jjtc000 = true;
3523  jjtree.openNodeScope(jjtn000);
3524  jjtn000.jjtSetFirstToken(getToken(1));
3525    try {
3526      jj_consume_token(MATCH);
3527      jj_consume_token(77);
3528      BlankLines();
3529      label_29:
3530      while (true) {
3531        jj_consume_token(WHEN);
3532        BlankLines();
3533        ExpressionStatement();
3534        BlankLines();
3535        jj_consume_token(THEN);
3536        BlankLines();
3537        ExpressionStatement();
3538        BlankLines();
3539        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
3540        case WHEN:{
3541          ;
3542          break;
3543          }
3544        default:
3545          jj_la1[108] = jj_gen;
3546          break label_29;
3547        }
3548      }
3549      jj_consume_token(OTHERWISE);
3550      BlankLines();
3551      ExpressionStatement();
3552      BlankLines();
3553      jj_consume_token(75);
3554    } catch (Throwable jjte000) {
3555if (jjtc000) {
3556      jjtree.clearNodeScope(jjtn000);
3557      jjtc000 = false;
3558    } else {
3559      jjtree.popNode();
3560    }
3561    if (jjte000 instanceof RuntimeException) {
3562      {if (true) throw (RuntimeException)jjte000;}
3563    }
3564    if (jjte000 instanceof ParseException) {
3565      {if (true) throw (ParseException)jjte000;}
3566    }
3567    {if (true) throw (Error)jjte000;}
3568    } finally {
3569if (jjtc000) {
3570      jjtree.closeNodeScope(jjtn000, true);
3571      jjtn000.jjtSetLastToken(getToken(0));
3572    }
3573    }
3574  }
3575
3576  private boolean jj_2_1(int xla)
3577 {
3578    jj_la = xla; jj_lastpos = jj_scanpos = token;
3579    try { return !jj_3_1(); }
3580    catch(LookaheadSuccess ls) { return true; }
3581    finally { jj_save(0, xla); }
3582  }
3583
3584  private boolean jj_2_2(int xla)
3585 {
3586    jj_la = xla; jj_lastpos = jj_scanpos = token;
3587    try { return !jj_3_2(); }
3588    catch(LookaheadSuccess ls) { return true; }
3589    finally { jj_save(1, xla); }
3590  }
3591
3592  private boolean jj_2_3(int xla)
3593 {
3594    jj_la = xla; jj_lastpos = jj_scanpos = token;
3595    try { return !jj_3_3(); }
3596    catch(LookaheadSuccess ls) { return true; }
3597    finally { jj_save(2, xla); }
3598  }
3599
3600  private boolean jj_2_4(int xla)
3601 {
3602    jj_la = xla; jj_lastpos = jj_scanpos = token;
3603    try { return !jj_3_4(); }
3604    catch(LookaheadSuccess ls) { return true; }
3605    finally { jj_save(3, xla); }
3606  }
3607
3608  private boolean jj_2_5(int xla)
3609 {
3610    jj_la = xla; jj_lastpos = jj_scanpos = token;
3611    try { return !jj_3_5(); }
3612    catch(LookaheadSuccess ls) { return true; }
3613    finally { jj_save(4, xla); }
3614  }
3615
3616  private boolean jj_2_6(int xla)
3617 {
3618    jj_la = xla; jj_lastpos = jj_scanpos = token;
3619    try { return !jj_3_6(); }
3620    catch(LookaheadSuccess ls) { return true; }
3621    finally { jj_save(5, xla); }
3622  }
3623
3624  private boolean jj_2_7(int xla)
3625 {
3626    jj_la = xla; jj_lastpos = jj_scanpos = token;
3627    try { return !jj_3_7(); }
3628    catch(LookaheadSuccess ls) { return true; }
3629    finally { jj_save(6, xla); }
3630  }
3631
3632  private boolean jj_2_8(int xla)
3633 {
3634    jj_la = xla; jj_lastpos = jj_scanpos = token;
3635    try { return !jj_3_8(); }
3636    catch(LookaheadSuccess ls) { return true; }
3637    finally { jj_save(7, xla); }
3638  }
3639
3640  private boolean jj_2_9(int xla)
3641 {
3642    jj_la = xla; jj_lastpos = jj_scanpos = token;
3643    try { return !jj_3_9(); }
3644    catch(LookaheadSuccess ls) { return true; }
3645    finally { jj_save(8, xla); }
3646  }
3647
3648  private boolean jj_2_10(int xla)
3649 {
3650    jj_la = xla; jj_lastpos = jj_scanpos = token;
3651    try { return !jj_3_10(); }
3652    catch(LookaheadSuccess ls) { return true; }
3653    finally { jj_save(9, xla); }
3654  }
3655
3656  private boolean jj_2_11(int xla)
3657 {
3658    jj_la = xla; jj_lastpos = jj_scanpos = token;
3659    try { return !jj_3_11(); }
3660    catch(LookaheadSuccess ls) { return true; }
3661    finally { jj_save(10, xla); }
3662  }
3663
3664  private boolean jj_2_12(int xla)
3665 {
3666    jj_la = xla; jj_lastpos = jj_scanpos = token;
3667    try { return !jj_3_12(); }
3668    catch(LookaheadSuccess ls) { return true; }
3669    finally { jj_save(11, xla); }
3670  }
3671
3672  private boolean jj_2_13(int xla)
3673 {
3674    jj_la = xla; jj_lastpos = jj_scanpos = token;
3675    try { return !jj_3_13(); }
3676    catch(LookaheadSuccess ls) { return true; }
3677    finally { jj_save(12, xla); }
3678  }
3679
3680  private boolean jj_2_14(int xla)
3681 {
3682    jj_la = xla; jj_lastpos = jj_scanpos = token;
3683    try { return !jj_3_14(); }
3684    catch(LookaheadSuccess ls) { return true; }
3685    finally { jj_save(13, xla); }
3686  }
3687
3688  private boolean jj_2_15(int xla)
3689 {
3690    jj_la = xla; jj_lastpos = jj_scanpos = token;
3691    try { return !jj_3_15(); }
3692    catch(LookaheadSuccess ls) { return true; }
3693    finally { jj_save(14, xla); }
3694  }
3695
3696  private boolean jj_2_16(int xla)
3697 {
3698    jj_la = xla; jj_lastpos = jj_scanpos = token;
3699    try { return !jj_3_16(); }
3700    catch(LookaheadSuccess ls) { return true; }
3701    finally { jj_save(15, xla); }
3702  }
3703
3704  private boolean jj_2_17(int xla)
3705 {
3706    jj_la = xla; jj_lastpos = jj_scanpos = token;
3707    try { return !jj_3_17(); }
3708    catch(LookaheadSuccess ls) { return true; }
3709    finally { jj_save(16, xla); }
3710  }
3711
3712  private boolean jj_2_18(int xla)
3713 {
3714    jj_la = xla; jj_lastpos = jj_scanpos = token;
3715    try { return !jj_3_18(); }
3716    catch(LookaheadSuccess ls) { return true; }
3717    finally { jj_save(17, xla); }
3718  }
3719
3720  private boolean jj_2_19(int xla)
3721 {
3722    jj_la = xla; jj_lastpos = jj_scanpos = token;
3723    try { return !jj_3_19(); }
3724    catch(LookaheadSuccess ls) { return true; }
3725    finally { jj_save(18, xla); }
3726  }
3727
3728  private boolean jj_2_20(int xla)
3729 {
3730    jj_la = xla; jj_lastpos = jj_scanpos = token;
3731    try { return !jj_3_20(); }
3732    catch(LookaheadSuccess ls) { return true; }
3733    finally { jj_save(19, xla); }
3734  }
3735
3736  private boolean jj_2_21(int xla)
3737 {
3738    jj_la = xla; jj_lastpos = jj_scanpos = token;
3739    try { return !jj_3_21(); }
3740    catch(LookaheadSuccess ls) { return true; }
3741    finally { jj_save(20, xla); }
3742  }
3743
3744  private boolean jj_2_22(int xla)
3745 {
3746    jj_la = xla; jj_lastpos = jj_scanpos = token;
3747    try { return !jj_3_22(); }
3748    catch(LookaheadSuccess ls) { return true; }
3749    finally { jj_save(21, xla); }
3750  }
3751
3752  private boolean jj_2_23(int xla)
3753 {
3754    jj_la = xla; jj_lastpos = jj_scanpos = token;
3755    try { return !jj_3_23(); }
3756    catch(LookaheadSuccess ls) { return true; }
3757    finally { jj_save(22, xla); }
3758  }
3759
3760  private boolean jj_2_24(int xla)
3761 {
3762    jj_la = xla; jj_lastpos = jj_scanpos = token;
3763    try { return !jj_3_24(); }
3764    catch(LookaheadSuccess ls) { return true; }
3765    finally { jj_save(23, xla); }
3766  }
3767
3768  private boolean jj_2_25(int xla)
3769 {
3770    jj_la = xla; jj_lastpos = jj_scanpos = token;
3771    try { return !jj_3_25(); }
3772    catch(LookaheadSuccess ls) { return true; }
3773    finally { jj_save(24, xla); }
3774  }
3775
3776  private boolean jj_3R_127()
3777 {
3778    if (jj_3R_77()) return true;
3779    return false;
3780  }
3781
3782  private boolean jj_3R_87()
3783 {
3784    if (jj_scan_token(73)) return true;
3785    Token xsp;
3786    xsp = jj_scanpos;
3787    if (jj_3R_127()) jj_scanpos = xsp;
3788    if (jj_scan_token(IDENTIFIER)) return true;
3789    return false;
3790  }
3791
3792  private boolean jj_3R_74()
3793 {
3794    if (jj_scan_token(IDENTIFIER)) return true;
3795    Token xsp;
3796    if (jj_3R_87()) return true;
3797    while (true) {
3798      xsp = jj_scanpos;
3799      if (jj_3R_87()) { jj_scanpos = xsp; break; }
3800    }
3801    return false;
3802  }
3803
3804  private boolean jj_3R_134()
3805 {
3806    if (jj_scan_token(TRY)) return true;
3807    return false;
3808  }
3809
3810  private boolean jj_3_9()
3811 {
3812    if (jj_3R_35()) return true;
3813    return false;
3814  }
3815
3816  private boolean jj_3R_39()
3817 {
3818    if (jj_scan_token(78)) return true;
3819    if (jj_3R_74()) return true;
3820    return false;
3821  }
3822
3823  private boolean jj_3R_38()
3824 {
3825    if (jj_3R_74()) return true;
3826    return false;
3827  }
3828
3829  private boolean jj_3R_70()
3830 {
3831    if (jj_3R_74()) return true;
3832    return false;
3833  }
3834
3835  private boolean jj_3_8()
3836 {
3837    Token xsp;
3838    xsp = jj_scanpos;
3839    if (jj_3R_38()) {
3840    jj_scanpos = xsp;
3841    if (jj_3R_39()) return true;
3842    }
3843    return false;
3844  }
3845
3846  private boolean jj_3R_37()
3847 {
3848    if (jj_scan_token(78)) return true;
3849    if (jj_scan_token(IDENTIFIER)) return true;
3850    return false;
3851  }
3852
3853  private boolean jj_3R_69()
3854 {
3855    if (jj_scan_token(VAR)) return true;
3856    if (jj_3R_74()) return true;
3857    return false;
3858  }
3859
3860  private boolean jj_3R_36()
3861 {
3862    if (jj_scan_token(IDENTIFIER)) return true;
3863    if (jj_scan_token(IN)) return true;
3864    return false;
3865  }
3866
3867  private boolean jj_3_7()
3868 {
3869    Token xsp;
3870    xsp = jj_scanpos;
3871    if (jj_3R_36()) {
3872    jj_scanpos = xsp;
3873    if (jj_3R_37()) return true;
3874    }
3875    return false;
3876  }
3877
3878  private boolean jj_3R_132()
3879 {
3880    if (jj_scan_token(FOREACH)) return true;
3881    return false;
3882  }
3883
3884  private boolean jj_3R_68()
3885 {
3886    if (jj_scan_token(LET)) return true;
3887    if (jj_3R_74()) return true;
3888    return false;
3889  }
3890
3891  private boolean jj_3R_33()
3892 {
3893    Token xsp;
3894    xsp = jj_scanpos;
3895    if (jj_3R_68()) {
3896    jj_scanpos = xsp;
3897    if (jj_3R_69()) {
3898    jj_scanpos = xsp;
3899    if (jj_3R_70()) return true;
3900    }
3901    }
3902    return false;
3903  }
3904
3905  private boolean jj_3_6()
3906 {
3907    if (jj_3R_35()) return true;
3908    return false;
3909  }
3910
3911  private boolean jj_3R_31()
3912 {
3913    if (jj_scan_token(IDENTIFIER)) return true;
3914    return false;
3915  }
3916
3917  private boolean jj_3R_131()
3918 {
3919    if (jj_scan_token(FOR)) return true;
3920    return false;
3921  }
3922
3923  private boolean jj_3R_130()
3924 {
3925    if (jj_scan_token(WHILE)) return true;
3926    return false;
3927  }
3928
3929  private boolean jj_3R_133()
3930 {
3931    if (jj_scan_token(THROW)) return true;
3932    return false;
3933  }
3934
3935  private boolean jj_3R_125()
3936 {
3937    if (jj_3R_77()) return true;
3938    return false;
3939  }
3940
3941  private boolean jj_3R_137()
3942 {
3943    if (jj_scan_token(BREAK)) return true;
3944    return false;
3945  }
3946
3947  private boolean jj_3R_136()
3948 {
3949    if (jj_scan_token(CONTINUE)) return true;
3950    return false;
3951  }
3952
3953  private boolean jj_3R_147()
3954 {
3955    if (jj_scan_token(FUNREF)) return true;
3956    return false;
3957  }
3958
3959  private boolean jj_3R_107()
3960 {
3961    if (jj_3R_137()) return true;
3962    return false;
3963  }
3964
3965  private boolean jj_3R_106()
3966 {
3967    if (jj_3R_136()) return true;
3968    return false;
3969  }
3970
3971  private boolean jj_3R_105()
3972 {
3973    if (jj_3R_135()) return true;
3974    return false;
3975  }
3976
3977  private boolean jj_3R_126()
3978 {
3979    if (jj_3R_66()) return true;
3980    return false;
3981  }
3982
3983  private boolean jj_3R_104()
3984 {
3985    if (jj_3R_134()) return true;
3986    return false;
3987  }
3988
3989  private boolean jj_3R_103()
3990 {
3991    if (jj_3R_133()) return true;
3992    return false;
3993  }
3994
3995  private boolean jj_3R_94()
3996 {
3997    if (jj_scan_token(COLL_START)) return true;
3998    Token xsp;
3999    xsp = jj_scanpos;
4000    if (jj_3R_125()) jj_scanpos = xsp;
4001    xsp = jj_scanpos;
4002    if (jj_3R_126()) jj_scanpos = xsp;
4003    if (jj_scan_token(84)) return true;
4004    return false;
4005  }
4006
4007  private boolean jj_3R_102()
4008 {
4009    if (jj_3R_132()) return true;
4010    return false;
4011  }
4012
4013  private boolean jj_3R_141()
4014 {
4015    if (jj_scan_token(BIGDECIMAL)) return true;
4016    return false;
4017  }
4018
4019  private boolean jj_3R_101()
4020 {
4021    if (jj_3R_131()) return true;
4022    return false;
4023  }
4024
4025  private boolean jj_3R_100()
4026 {
4027    if (jj_3R_130()) return true;
4028    return false;
4029  }
4030
4031  private boolean jj_3R_99()
4032 {
4033    if (jj_3R_129()) return true;
4034    return false;
4035  }
4036
4037  private boolean jj_3R_98()
4038 {
4039    if (jj_3R_128()) return true;
4040    return false;
4041  }
4042
4043  private boolean jj_3R_97()
4044 {
4045    if (jj_3R_66()) return true;
4046    return false;
4047  }
4048
4049  private boolean jj_3R_121()
4050 {
4051    if (jj_3R_147()) return true;
4052    return false;
4053  }
4054
4055  private boolean jj_3_5()
4056 {
4057    if (jj_3R_34()) return true;
4058    return false;
4059  }
4060
4061  private boolean jj_3R_143()
4062 {
4063    if (jj_scan_token(FLOAT)) return true;
4064    return false;
4065  }
4066
4067  private boolean jj_3_4()
4068 {
4069    if (jj_3R_33()) return true;
4070    return false;
4071  }
4072
4073  private boolean jj_3R_120()
4074 {
4075    if (jj_scan_token(FALSE)) return true;
4076    return false;
4077  }
4078
4079  private boolean jj_3_3()
4080 {
4081    if (jj_3R_32()) return true;
4082    return false;
4083  }
4084
4085  private boolean jj_3R_86()
4086 {
4087    Token xsp;
4088    xsp = jj_scanpos;
4089    if (jj_3R_96()) {
4090    jj_scanpos = xsp;
4091    if (jj_3_3()) {
4092    jj_scanpos = xsp;
4093    if (jj_3_4()) {
4094    jj_scanpos = xsp;
4095    if (jj_3_5()) {
4096    jj_scanpos = xsp;
4097    if (jj_3R_97()) {
4098    jj_scanpos = xsp;
4099    if (jj_3R_98()) {
4100    jj_scanpos = xsp;
4101    if (jj_3R_99()) {
4102    jj_scanpos = xsp;
4103    if (jj_3R_100()) {
4104    jj_scanpos = xsp;
4105    if (jj_3R_101()) {
4106    jj_scanpos = xsp;
4107    if (jj_3R_102()) {
4108    jj_scanpos = xsp;
4109    if (jj_3R_103()) {
4110    jj_scanpos = xsp;
4111    if (jj_3R_104()) {
4112    jj_scanpos = xsp;
4113    if (jj_3R_105()) {
4114    jj_scanpos = xsp;
4115    if (jj_3R_106()) {
4116    jj_scanpos = xsp;
4117    if (jj_3R_107()) return true;
4118    }
4119    }
4120    }
4121    }
4122    }
4123    }
4124    }
4125    }
4126    }
4127    }
4128    }
4129    }
4130    }
4131    }
4132    return false;
4133  }
4134
4135  private boolean jj_3R_96()
4136 {
4137    if (jj_3R_77()) return true;
4138    return false;
4139  }
4140
4141  private boolean jj_3R_119()
4142 {
4143    if (jj_scan_token(TRUE)) return true;
4144    return false;
4145  }
4146
4147  private boolean jj_3R_144()
4148 {
4149    if (jj_scan_token(FLOATING_NUMBER)) return true;
4150    return false;
4151  }
4152
4153  private boolean jj_3R_118()
4154 {
4155    if (jj_scan_token(NULL)) return true;
4156    return false;
4157  }
4158
4159  private boolean jj_3R_117()
4160 {
4161    if (jj_3R_146()) return true;
4162    return false;
4163  }
4164
4165  private boolean jj_3_2()
4166 {
4167    if (jj_3R_31()) return true;
4168    return false;
4169  }
4170
4171  private boolean jj_3_1()
4172 {
4173    if (jj_3R_30()) return true;
4174    return false;
4175  }
4176
4177  private boolean jj_3R_116()
4178 {
4179    if (jj_3R_145()) return true;
4180    return false;
4181  }
4182
4183  private boolean jj_3R_138()
4184 {
4185    if (jj_scan_token(CLASSREF)) return true;
4186    return false;
4187  }
4188
4189  private boolean jj_3R_115()
4190 {
4191    if (jj_3R_144()) return true;
4192    return false;
4193  }
4194
4195  private boolean jj_3R_114()
4196 {
4197    if (jj_3R_143()) return true;
4198    return false;
4199  }
4200
4201  private boolean jj_3R_146()
4202 {
4203    if (jj_scan_token(NUMBER)) return true;
4204    return false;
4205  }
4206
4207  private boolean jj_3R_113()
4208 {
4209    if (jj_3R_142()) return true;
4210    return false;
4211  }
4212
4213  private boolean jj_3R_112()
4214 {
4215    if (jj_3R_141()) return true;
4216    return false;
4217  }
4218
4219  private boolean jj_3R_111()
4220 {
4221    if (jj_3R_140()) return true;
4222    return false;
4223  }
4224
4225  private boolean jj_3R_142()
4226 {
4227    if (jj_scan_token(BIGINTEGER)) return true;
4228    return false;
4229  }
4230
4231  private boolean jj_3R_110()
4232 {
4233    if (jj_3R_139()) return true;
4234    return false;
4235  }
4236
4237  private boolean jj_3R_109()
4238 {
4239    if (jj_3R_138()) return true;
4240    return false;
4241  }
4242
4243  private boolean jj_3R_92()
4244 {
4245    Token xsp;
4246    xsp = jj_scanpos;
4247    if (jj_3R_109()) {
4248    jj_scanpos = xsp;
4249    if (jj_3R_110()) {
4250    jj_scanpos = xsp;
4251    if (jj_3R_111()) {
4252    jj_scanpos = xsp;
4253    if (jj_3R_112()) {
4254    jj_scanpos = xsp;
4255    if (jj_3R_113()) {
4256    jj_scanpos = xsp;
4257    if (jj_3R_114()) {
4258    jj_scanpos = xsp;
4259    if (jj_3R_115()) {
4260    jj_scanpos = xsp;
4261    if (jj_3R_116()) {
4262    jj_scanpos = xsp;
4263    if (jj_3R_117()) {
4264    jj_scanpos = xsp;
4265    if (jj_3R_118()) {
4266    jj_scanpos = xsp;
4267    if (jj_3R_119()) {
4268    jj_scanpos = xsp;
4269    if (jj_3R_120()) {
4270    jj_scanpos = xsp;
4271    if (jj_3R_121()) return true;
4272    }
4273    }
4274    }
4275    }
4276    }
4277    }
4278    }
4279    }
4280    }
4281    }
4282    }
4283    }
4284    return false;
4285  }
4286
4287  private boolean jj_3R_145()
4288 {
4289    if (jj_scan_token(LONG_NUMBER)) return true;
4290    return false;
4291  }
4292
4293  private boolean jj_3R_149()
4294 {
4295    if (jj_3R_77()) return true;
4296    return false;
4297  }
4298
4299  private boolean jj_3R_140()
4300 {
4301    if (jj_scan_token(CHAR)) return true;
4302    return false;
4303  }
4304
4305  private boolean jj_3R_124()
4306 {
4307    if (jj_scan_token(82)) return true;
4308    Token xsp;
4309    xsp = jj_scanpos;
4310    if (jj_3R_149()) jj_scanpos = xsp;
4311    if (jj_3R_66()) return true;
4312    return false;
4313  }
4314
4315  private boolean jj_3R_63()
4316 {
4317    if (jj_3R_77()) return true;
4318    return false;
4319  }
4320
4321  private boolean jj_3R_123()
4322 {
4323    if (jj_3R_35()) return true;
4324    return false;
4325  }
4326
4327  private boolean jj_3R_122()
4328 {
4329    if (jj_scan_token(81)) return true;
4330    if (jj_3R_148()) return true;
4331    return false;
4332  }
4333
4334  private boolean jj_3R_93()
4335 {
4336    Token xsp;
4337    xsp = jj_scanpos;
4338    if (jj_3R_122()) jj_scanpos = xsp;
4339    xsp = jj_scanpos;
4340    if (jj_3R_123()) {
4341    jj_scanpos = xsp;
4342    if (jj_3R_124()) return true;
4343    }
4344    return false;
4345  }
4346
4347  private boolean jj_3R_151()
4348 {
4349    if (jj_scan_token(MULTI_STRING)) return true;
4350    return false;
4351  }
4352
4353  private boolean jj_3R_150()
4354 {
4355    if (jj_scan_token(STRING)) return true;
4356    return false;
4357  }
4358
4359  private boolean jj_3R_139()
4360 {
4361    Token xsp;
4362    xsp = jj_scanpos;
4363    if (jj_3R_150()) {
4364    jj_scanpos = xsp;
4365    if (jj_3R_151()) return true;
4366    }
4367    return false;
4368  }
4369
4370  private boolean jj_3R_60()
4371 {
4372    if (jj_3R_77()) return true;
4373    return false;
4374  }
4375
4376  private boolean jj_3R_73()
4377 {
4378    if (jj_3R_86()) return true;
4379    return false;
4380  }
4381
4382  private boolean jj_3R_35()
4383 {
4384    if (jj_scan_token(77)) return true;
4385    Token xsp;
4386    while (true) {
4387      xsp = jj_scanpos;
4388      if (jj_3R_73()) { jj_scanpos = xsp; break; }
4389    }
4390    if (jj_scan_token(75)) return true;
4391    return false;
4392  }
4393
4394  private boolean jj_3R_57()
4395 {
4396    if (jj_3R_77()) return true;
4397    return false;
4398  }
4399
4400  private boolean jj_3R_62()
4401 {
4402    if (jj_3R_77()) return true;
4403    return false;
4404  }
4405
4406  private boolean jj_3_21()
4407 {
4408    if (jj_3R_44()) return true;
4409    return false;
4410  }
4411
4412  private boolean jj_3R_54()
4413 {
4414    if (jj_3R_77()) return true;
4415    return false;
4416  }
4417
4418  private boolean jj_3R_43()
4419 {
4420    if (jj_scan_token(IDENTIFIER)) return true;
4421    return false;
4422  }
4423
4424  private boolean jj_3_20()
4425 {
4426    Token xsp;
4427    xsp = jj_scanpos;
4428    if (jj_3R_62()) jj_scanpos = xsp;
4429    if (jj_scan_token(OR_IFNULL_OPERATOR)) return true;
4430    xsp = jj_scanpos;
4431    if (jj_3R_63()) jj_scanpos = xsp;
4432    if (jj_3R_64()) return true;
4433    return false;
4434  }
4435
4436  private boolean jj_3R_59()
4437 {
4438    if (jj_3R_77()) return true;
4439    return false;
4440  }
4441
4442  private boolean jj_3R_51()
4443 {
4444    if (jj_3R_77()) return true;
4445    return false;
4446  }
4447
4448  private boolean jj_3R_79()
4449 {
4450    if (jj_3R_64()) return true;
4451    Token xsp;
4452    while (true) {
4453      xsp = jj_scanpos;
4454      if (jj_3_20()) { jj_scanpos = xsp; break; }
4455    }
4456    return false;
4457  }
4458
4459  private boolean jj_3R_148()
4460 {
4461    if (jj_scan_token(IDENTIFIER)) return true;
4462    return false;
4463  }
4464
4465  private boolean jj_3_19()
4466 {
4467    Token xsp;
4468    xsp = jj_scanpos;
4469    if (jj_3R_59()) jj_scanpos = xsp;
4470    if (jj_scan_token(OR_OPERATOR)) return true;
4471    xsp = jj_scanpos;
4472    if (jj_3R_60()) jj_scanpos = xsp;
4473    if (jj_3R_61()) return true;
4474    return false;
4475  }
4476
4477  private boolean jj_3R_56()
4478 {
4479    if (jj_3R_77()) return true;
4480    return false;
4481  }
4482
4483  private boolean jj_3R_48()
4484 {
4485    if (jj_3R_77()) return true;
4486    return false;
4487  }
4488
4489  private boolean jj_3R_64()
4490 {
4491    if (jj_3R_61()) return true;
4492    Token xsp;
4493    while (true) {
4494      xsp = jj_scanpos;
4495      if (jj_3_19()) { jj_scanpos = xsp; break; }
4496    }
4497    return false;
4498  }
4499
4500  private boolean jj_3R_88()
4501 {
4502    if (jj_scan_token(72)) return true;
4503    return false;
4504  }
4505
4506  private boolean jj_3R_46()
4507 {
4508    if (jj_3R_77()) return true;
4509    return false;
4510  }
4511
4512  private boolean jj_3R_75()
4513 {
4514    if (jj_scan_token(IDENTIFIER)) return true;
4515    Token xsp;
4516    while (true) {
4517      xsp = jj_scanpos;
4518      if (jj_3R_88()) { jj_scanpos = xsp; break; }
4519    }
4520    return false;
4521  }
4522
4523  private boolean jj_3R_53()
4524 {
4525    if (jj_3R_77()) return true;
4526    return false;
4527  }
4528
4529  private boolean jj_3_18()
4530 {
4531    Token xsp;
4532    xsp = jj_scanpos;
4533    if (jj_3R_56()) jj_scanpos = xsp;
4534    if (jj_scan_token(AND_OPERATOR)) return true;
4535    xsp = jj_scanpos;
4536    if (jj_3R_57()) jj_scanpos = xsp;
4537    if (jj_3R_58()) return true;
4538    return false;
4539  }
4540
4541  private boolean jj_3R_61()
4542 {
4543    if (jj_3R_58()) return true;
4544    Token xsp;
4545    while (true) {
4546      xsp = jj_scanpos;
4547      if (jj_3_18()) { jj_scanpos = xsp; break; }
4548    }
4549    return false;
4550  }
4551
4552  private boolean jj_3R_91()
4553 {
4554    if (jj_scan_token(MATCH)) return true;
4555    if (jj_scan_token(77)) return true;
4556    return false;
4557  }
4558
4559  private boolean jj_3R_50()
4560 {
4561    if (jj_3R_77()) return true;
4562    return false;
4563  }
4564
4565  private boolean jj_3_17()
4566 {
4567    Token xsp;
4568    xsp = jj_scanpos;
4569    if (jj_3R_53()) jj_scanpos = xsp;
4570    if (jj_scan_token(EQUALITY_OPERATOR)) return true;
4571    xsp = jj_scanpos;
4572    if (jj_3R_54()) jj_scanpos = xsp;
4573    if (jj_3R_55()) return true;
4574    return false;
4575  }
4576
4577  private boolean jj_3R_77()
4578 {
4579    Token xsp;
4580    xsp = jj_scanpos;
4581    if (jj_scan_token(5)) {
4582    jj_scanpos = xsp;
4583    if (jj_scan_token(67)) return true;
4584    }
4585    return false;
4586  }
4587
4588  private boolean jj_3_25()
4589 {
4590    if (jj_scan_token(ELSE)) return true;
4591    return false;
4592  }
4593
4594  private boolean jj_3R_135()
4595 {
4596    if (jj_scan_token(CASE)) return true;
4597    return false;
4598  }
4599
4600  private boolean jj_3R_58()
4601 {
4602    if (jj_3R_55()) return true;
4603    Token xsp;
4604    xsp = jj_scanpos;
4605    if (jj_3_17()) jj_scanpos = xsp;
4606    return false;
4607  }
4608
4609  private boolean jj_3R_42()
4610 {
4611    if (jj_3R_77()) return true;
4612    return false;
4613  }
4614
4615  private boolean jj_3R_47()
4616 {
4617    if (jj_3R_77()) return true;
4618    return false;
4619  }
4620
4621  private boolean jj_3_16()
4622 {
4623    Token xsp;
4624    xsp = jj_scanpos;
4625    if (jj_3R_50()) jj_scanpos = xsp;
4626    if (jj_scan_token(RELATIONAL_OPERATOR)) return true;
4627    xsp = jj_scanpos;
4628    if (jj_3R_51()) jj_scanpos = xsp;
4629    if (jj_3R_52()) return true;
4630    return false;
4631  }
4632
4633  private boolean jj_3R_129()
4634 {
4635    if (jj_scan_token(IF)) return true;
4636    return false;
4637  }
4638
4639  private boolean jj_3R_55()
4640 {
4641    if (jj_3R_52()) return true;
4642    Token xsp;
4643    xsp = jj_scanpos;
4644    if (jj_3_16()) jj_scanpos = xsp;
4645    return false;
4646  }
4647
4648  private boolean jj_3_24()
4649 {
4650    if (jj_3R_44()) return true;
4651    return false;
4652  }
4653
4654  private boolean jj_3R_40()
4655 {
4656    if (jj_3R_75()) return true;
4657    Token xsp;
4658    xsp = jj_scanpos;
4659    if (jj_scan_token(43)) jj_scanpos = xsp;
4660    if (jj_3R_76()) return true;
4661    return false;
4662  }
4663
4664  private boolean jj_3R_45()
4665 {
4666    if (jj_3R_77()) return true;
4667    return false;
4668  }
4669
4670  private boolean jj_3_15()
4671 {
4672    Token xsp;
4673    xsp = jj_scanpos;
4674    if (jj_3R_47()) jj_scanpos = xsp;
4675    if (jj_scan_token(ADDITIVE_OPERATOR)) return true;
4676    xsp = jj_scanpos;
4677    if (jj_3R_48()) jj_scanpos = xsp;
4678    if (jj_3R_49()) return true;
4679    return false;
4680  }
4681
4682  private boolean jj_3R_90()
4683 {
4684    if (jj_3R_108()) return true;
4685    return false;
4686  }
4687
4688  private boolean jj_3R_52()
4689 {
4690    if (jj_3R_49()) return true;
4691    Token xsp;
4692    while (true) {
4693      xsp = jj_scanpos;
4694      if (jj_3_15()) { jj_scanpos = xsp; break; }
4695    }
4696    return false;
4697  }
4698
4699  private boolean jj_3_14()
4700 {
4701    Token xsp;
4702    xsp = jj_scanpos;
4703    if (jj_3R_45()) jj_scanpos = xsp;
4704    if (jj_scan_token(MULTIPLICATIVE_OPERATOR)) return true;
4705    xsp = jj_scanpos;
4706    if (jj_3R_46()) jj_scanpos = xsp;
4707    if (jj_3R_30()) return true;
4708    return false;
4709  }
4710
4711  private boolean jj_3R_44()
4712 {
4713    Token xsp;
4714    xsp = jj_scanpos;
4715    if (jj_scan_token(43)) jj_scanpos = xsp;
4716    if (jj_3R_76()) return true;
4717    return false;
4718  }
4719
4720  private boolean jj_3R_89()
4721 {
4722    if (jj_3R_77()) return true;
4723    return false;
4724  }
4725
4726  private boolean jj_3R_49()
4727 {
4728    if (jj_3R_78()) return true;
4729    Token xsp;
4730    while (true) {
4731      xsp = jj_scanpos;
4732      if (jj_3_14()) { jj_scanpos = xsp; break; }
4733    }
4734    return false;
4735  }
4736
4737  private boolean jj_3R_65()
4738 {
4739    if (jj_3R_77()) return true;
4740    return false;
4741  }
4742
4743  private boolean jj_3R_41()
4744 {
4745    if (jj_3R_77()) return true;
4746    return false;
4747  }
4748
4749  private boolean jj_3R_76()
4750 {
4751    if (jj_scan_token(78)) return true;
4752    Token xsp;
4753    xsp = jj_scanpos;
4754    if (jj_3R_89()) jj_scanpos = xsp;
4755    xsp = jj_scanpos;
4756    if (jj_3R_90()) jj_scanpos = xsp;
4757    if (jj_scan_token(79)) return true;
4758    return false;
4759  }
4760
4761  private boolean jj_3_13()
4762 {
4763    if (jj_3R_44()) return true;
4764    return false;
4765  }
4766
4767  private boolean jj_3_22()
4768 {
4769    Token xsp;
4770    xsp = jj_scanpos;
4771    if (jj_3R_65()) jj_scanpos = xsp;
4772    if (jj_3R_66()) return true;
4773    return false;
4774  }
4775
4776  private boolean jj_3_23()
4777 {
4778    if (jj_scan_token(IDENTIFIER)) return true;
4779    if (jj_scan_token(76)) return true;
4780    return false;
4781  }
4782
4783  private boolean jj_3R_108()
4784 {
4785    Token xsp;
4786    xsp = jj_scanpos;
4787    if (jj_3_23()) jj_scanpos = xsp;
4788    if (jj_3R_66()) return true;
4789    return false;
4790  }
4791
4792  private boolean jj_3_12()
4793 {
4794    Token xsp;
4795    xsp = jj_scanpos;
4796    if (jj_3R_41()) jj_scanpos = xsp;
4797    if (jj_scan_token(INVOCATION_OPERATOR)) return true;
4798    xsp = jj_scanpos;
4799    if (jj_3R_42()) jj_scanpos = xsp;
4800    if (jj_3R_43()) return true;
4801    return false;
4802  }
4803
4804  private boolean jj_3R_30()
4805 {
4806    if (jj_3R_67()) return true;
4807    Token xsp;
4808    while (true) {
4809      xsp = jj_scanpos;
4810      if (jj_3_12()) { jj_scanpos = xsp; break; }
4811    }
4812    while (true) {
4813      xsp = jj_scanpos;
4814      if (jj_3_13()) { jj_scanpos = xsp; break; }
4815    }
4816    return false;
4817  }
4818
4819  private boolean jj_3R_128()
4820 {
4821    if (jj_scan_token(RETURN)) return true;
4822    return false;
4823  }
4824
4825  private boolean jj_3R_78()
4826 {
4827    Token xsp;
4828    xsp = jj_scanpos;
4829    if (jj_scan_token(41)) jj_scanpos = xsp;
4830    if (jj_3R_30()) return true;
4831    return false;
4832  }
4833
4834  private boolean jj_3R_80()
4835 {
4836    if (jj_3R_77()) return true;
4837    return false;
4838  }
4839
4840  private boolean jj_3R_95()
4841 {
4842    if (jj_3R_77()) return true;
4843    return false;
4844  }
4845
4846  private boolean jj_3R_32()
4847 {
4848    if (jj_scan_token(IDENTIFIER)) return true;
4849    if (jj_scan_token(76)) return true;
4850    return false;
4851  }
4852
4853  private boolean jj_3R_85()
4854 {
4855    if (jj_scan_token(78)) return true;
4856    Token xsp;
4857    xsp = jj_scanpos;
4858    if (jj_3R_95()) jj_scanpos = xsp;
4859    if (jj_3R_66()) return true;
4860    return false;
4861  }
4862
4863  private boolean jj_3R_84()
4864 {
4865    if (jj_3R_94()) return true;
4866    return false;
4867  }
4868
4869  private boolean jj_3R_83()
4870 {
4871    if (jj_3R_93()) return true;
4872    return false;
4873  }
4874
4875  private boolean jj_3R_82()
4876 {
4877    if (jj_3R_92()) return true;
4878    return false;
4879  }
4880
4881  private boolean jj_3R_81()
4882 {
4883    if (jj_3R_91()) return true;
4884    return false;
4885  }
4886
4887  private boolean jj_3R_72()
4888 {
4889    if (jj_scan_token(VAR)) return true;
4890    if (jj_scan_token(IDENTIFIER)) return true;
4891    return false;
4892  }
4893
4894  private boolean jj_3_11()
4895 {
4896    if (jj_3R_31()) return true;
4897    return false;
4898  }
4899
4900  private boolean jj_3R_67()
4901 {
4902    Token xsp;
4903    xsp = jj_scanpos;
4904    if (jj_3_10()) {
4905    jj_scanpos = xsp;
4906    if (jj_3_11()) {
4907    jj_scanpos = xsp;
4908    if (jj_3R_81()) {
4909    jj_scanpos = xsp;
4910    if (jj_3R_82()) {
4911    jj_scanpos = xsp;
4912    if (jj_3R_83()) {
4913    jj_scanpos = xsp;
4914    if (jj_3R_84()) {
4915    jj_scanpos = xsp;
4916    if (jj_3R_85()) return true;
4917    }
4918    }
4919    }
4920    }
4921    }
4922    }
4923    return false;
4924  }
4925
4926  private boolean jj_3_10()
4927 {
4928    if (jj_3R_40()) return true;
4929    return false;
4930  }
4931
4932  private boolean jj_3R_71()
4933 {
4934    if (jj_scan_token(LET)) return true;
4935    if (jj_scan_token(IDENTIFIER)) return true;
4936    return false;
4937  }
4938
4939  private boolean jj_3R_34()
4940 {
4941    Token xsp;
4942    xsp = jj_scanpos;
4943    if (jj_3R_71()) {
4944    jj_scanpos = xsp;
4945    if (jj_3R_72()) return true;
4946    }
4947    return false;
4948  }
4949
4950  private boolean jj_3R_66()
4951 {
4952    if (jj_3R_79()) return true;
4953    Token xsp;
4954    xsp = jj_scanpos;
4955    if (jj_3R_80()) jj_scanpos = xsp;
4956    return false;
4957  }
4958
4959  /** Generated Token Manager. */
4960  public GoloParserTokenManager token_source;
4961  JavaCharStream jj_input_stream;
4962  /** Current token. */
4963  public Token token;
4964  /** Next token. */
4965  public Token jj_nt;
4966  private int jj_ntk;
4967  private Token jj_scanpos, jj_lastpos;
4968  private int jj_la;
4969  private int jj_gen;
4970  final private int[] jj_la1 = new int[109];
4971  static private int[] jj_la1_0;
4972  static private int[] jj_la1_1;
4973  static private int[] jj_la1_2;
4974  static {
4975      jj_la1_init_0();
4976      jj_la1_init_1();
4977      jj_la1_init_2();
4978   }
4979   private static void jj_la1_init_0() {
4980      jj_la1_0 = new int[] {0x20,0x20,0x0,0x0,0x20,0x0,0x20,0x0,0x100,0x18000600,0xa0,0x0,0x20,0x20,0x0,0x20,0x0,0x0,0x0,0x0,0x400,0x18000600,0x18000600,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x20000000,0x0,0x20,0xc14dd800,0x20,0x20,0x20,0x20,0x800000,0x800000,0x0,0x0,0x800000,0x0,0x800000,0x0,0x200000,0x300000,0x20,0x20,0x20,0x1000000,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xc14dd820,0x0,0x0,0x20,0x0,0x0,0x20,0x20,0x0,0x18000,0x18000,0x18000,0x18000,0x20,0x1000000,0x0,0x20,0x0,0x20,0x0,0x20,0x0,0x20,0x0,0x20,0x20,0x0,0x20,0x20,0x20,0x0,0x20,0x1000000,0x0,0x0,0x1000,0x800000,0x800000,};
4981   }
4982   private static void jj_la1_init_1() {
4983      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80200000,0x0,0x7003,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x0,0x1003,0x7003,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x0,0x1000,0x0,0x800,0x0,0x9fff8200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9fff8000,0x200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9fffe200,0x0,0x0,0x0,0x0,0x8fff8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9fff8200,0x0,0x0,0x0,0x0,0x0,0x0,0x6000,0x0,0x0,0x0,0x0,0x6000,0x0,0x0,0x0,0x0,0x0,0x9fff8200,0x800,0x800,0x0,0x0,0x0,};
4984   }
4985   private static void jj_la1_init_2() {
4986      jj_la1_2 = new int[] {0x8,0x8,0x100,0x200,0x8,0x200,0x8,0x0,0x0,0x40,0x48,0x40,0x8,0x8,0x200,0x8,0x100,0x400,0x40,0x0,0x0,0x0,0x40,0x40,0x200,0x40,0x200,0x1000,0x41,0x40,0x40,0x0,0x2000,0x0,0x8,0x66001,0x8,0x8,0x8,0x8,0x0,0x0,0x4001,0x10000,0x0,0x10000,0x0,0x4001,0x0,0x0,0x8,0x8,0x8,0x66000,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x66009,0x10000,0x20000,0x8,0x42000,0x0,0x8,0x8,0x200,0x0,0x0,0x80200,0x80200,0x8,0x66001,0x10000,0x8,0x10000,0x8,0x10000,0x8,0x1,0x8,0x200,0x8,0x8,0x0,0x8,0x8,0x8,0x200,0x8,0x66001,0x0,0x0,0x2000,0x0,0x0,};
4987   }
4988  final private JJCalls[] jj_2_rtns = new JJCalls[25];
4989  private boolean jj_rescan = false;
4990  private int jj_gc = 0;
4991
4992  /** Constructor with InputStream. */
4993  public GoloParser(java.io.InputStream stream) {
4994     this(stream, null);
4995  }
4996  /** Constructor with InputStream and supplied encoding */
4997  public GoloParser(java.io.InputStream stream, String encoding) {
4998    try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
4999    token_source = new GoloParserTokenManager(jj_input_stream);
5000    token = new Token();
5001    jj_ntk = -1;
5002    jj_gen = 0;
5003    for (int i = 0; i < 109; i++) jj_la1[i] = -1;
5004    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
5005  }
5006
5007  /** Reinitialise. */
5008  public void ReInit(java.io.InputStream stream) {
5009     ReInit(stream, null);
5010  }
5011  /** Reinitialise. */
5012  public void ReInit(java.io.InputStream stream, String encoding) {
5013    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
5014    token_source.ReInit(jj_input_stream);
5015    token = new Token();
5016    jj_ntk = -1;
5017    jjtree.reset();
5018    jj_gen = 0;
5019    for (int i = 0; i < 109; i++) jj_la1[i] = -1;
5020    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
5021  }
5022
5023  /** Constructor. */
5024  public GoloParser(java.io.Reader stream) {
5025    jj_input_stream = new JavaCharStream(stream, 1, 1);
5026    token_source = new GoloParserTokenManager(jj_input_stream);
5027    token = new Token();
5028    jj_ntk = -1;
5029    jj_gen = 0;
5030    for (int i = 0; i < 109; i++) jj_la1[i] = -1;
5031    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
5032  }
5033
5034  /** Reinitialise. */
5035  public void ReInit(java.io.Reader stream) {
5036        if (jj_input_stream == null) {
5037      jj_input_stream = new JavaCharStream(stream, 1, 1);
5038   } else {
5039      jj_input_stream.ReInit(stream, 1, 1);
5040   }
5041   if (token_source == null) {
5042      token_source = new GoloParserTokenManager(jj_input_stream);
5043   }
5044
5045    token_source.ReInit(jj_input_stream);
5046    token = new Token();
5047    jj_ntk = -1;
5048    jjtree.reset();
5049    jj_gen = 0;
5050    for (int i = 0; i < 109; i++) jj_la1[i] = -1;
5051    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
5052  }
5053
5054  /** Constructor with generated Token Manager. */
5055  public GoloParser(GoloParserTokenManager tm) {
5056    token_source = tm;
5057    token = new Token();
5058    jj_ntk = -1;
5059    jj_gen = 0;
5060    for (int i = 0; i < 109; i++) jj_la1[i] = -1;
5061    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
5062  }
5063
5064  /** Reinitialise. */
5065  public void ReInit(GoloParserTokenManager tm) {
5066    token_source = tm;
5067    token = new Token();
5068    jj_ntk = -1;
5069    jjtree.reset();
5070    jj_gen = 0;
5071    for (int i = 0; i < 109; i++) jj_la1[i] = -1;
5072    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
5073  }
5074
5075  private Token jj_consume_token(int kind) throws ParseException {
5076    Token oldToken;
5077    if ((oldToken = token).next != null) token = token.next;
5078    else token = token.next = token_source.getNextToken();
5079    jj_ntk = -1;
5080    if (token.kind == kind) {
5081      jj_gen++;
5082      if (++jj_gc > 100) {
5083        jj_gc = 0;
5084        for (int i = 0; i < jj_2_rtns.length; i++) {
5085          JJCalls c = jj_2_rtns[i];
5086          while (c != null) {
5087            if (c.gen < jj_gen) c.first = null;
5088            c = c.next;
5089          }
5090        }
5091      }
5092      return token;
5093    }
5094    token = oldToken;
5095    jj_kind = kind;
5096    throw generateParseException();
5097  }
5098
5099  @SuppressWarnings("serial")
5100  static private final class LookaheadSuccess extends java.lang.Error { }
5101  final private LookaheadSuccess jj_ls = new LookaheadSuccess();
5102  private boolean jj_scan_token(int kind) {
5103    if (jj_scanpos == jj_lastpos) {
5104      jj_la--;
5105      if (jj_scanpos.next == null) {
5106        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
5107      } else {
5108        jj_lastpos = jj_scanpos = jj_scanpos.next;
5109      }
5110    } else {
5111      jj_scanpos = jj_scanpos.next;
5112    }
5113    if (jj_rescan) {
5114      int i = 0; Token tok = token;
5115      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
5116      if (tok != null) jj_add_error_token(kind, i);
5117    }
5118    if (jj_scanpos.kind != kind) return true;
5119    if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
5120    return false;
5121  }
5122
5123
5124/** Get the next Token. */
5125  final public Token getNextToken() {
5126    if (token.next != null) token = token.next;
5127    else token = token.next = token_source.getNextToken();
5128    jj_ntk = -1;
5129    jj_gen++;
5130    return token;
5131  }
5132
5133/** Get the specific Token. */
5134  final public Token getToken(int index) {
5135    Token t = token;
5136    for (int i = 0; i < index; i++) {
5137      if (t.next != null) t = t.next;
5138      else t = t.next = token_source.getNextToken();
5139    }
5140    return t;
5141  }
5142
5143  private int jj_ntk_f() {
5144    if ((jj_nt=token.next) == null)
5145      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
5146    else
5147      return (jj_ntk = jj_nt.kind);
5148  }
5149
5150  private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
5151  private int[] jj_expentry;
5152  private int jj_kind = -1;
5153  private int[] jj_lasttokens = new int[100];
5154  private int jj_endpos;
5155
5156  private void jj_add_error_token(int kind, int pos) {
5157    if (pos >= 100) {
5158       return;
5159    }
5160
5161    if (pos == jj_endpos + 1) {
5162      jj_lasttokens[jj_endpos++] = kind;
5163    } else if (jj_endpos != 0) {
5164      jj_expentry = new int[jj_endpos];
5165
5166      for (int i = 0; i < jj_endpos; i++) {
5167        jj_expentry[i] = jj_lasttokens[i];
5168      }
5169
5170      for (int[] oldentry : jj_expentries) {
5171        if (oldentry.length == jj_expentry.length) {
5172          boolean isMatched = true;
5173
5174          for (int i = 0; i < jj_expentry.length; i++) {
5175            if (oldentry[i] != jj_expentry[i]) {
5176              isMatched = false;
5177              break;
5178            }
5179
5180          }
5181          if (isMatched) {
5182            jj_expentries.add(jj_expentry);
5183            break;
5184          }
5185        }
5186      }
5187
5188      if (pos != 0) {
5189        jj_lasttokens[(jj_endpos = pos) - 1] = kind;
5190      }
5191    }
5192  }
5193
5194  /** Generate ParseException. */
5195  public ParseException generateParseException() {
5196    jj_expentries.clear();
5197    boolean[] la1tokens = new boolean[85];
5198    if (jj_kind >= 0) {
5199      la1tokens[jj_kind] = true;
5200      jj_kind = -1;
5201    }
5202    for (int i = 0; i < 109; i++) {
5203      if (jj_la1[i] == jj_gen) {
5204        for (int j = 0; j < 32; j++) {
5205          if ((jj_la1_0[i] & (1<<j)) != 0) {
5206            la1tokens[j] = true;
5207          }
5208          if ((jj_la1_1[i] & (1<<j)) != 0) {
5209            la1tokens[32+j] = true;
5210          }
5211          if ((jj_la1_2[i] & (1<<j)) != 0) {
5212            la1tokens[64+j] = true;
5213          }
5214        }
5215      }
5216    }
5217    for (int i = 0; i < 85; i++) {
5218      if (la1tokens[i]) {
5219        jj_expentry = new int[1];
5220        jj_expentry[0] = i;
5221        jj_expentries.add(jj_expentry);
5222      }
5223    }
5224    jj_endpos = 0;
5225    jj_rescan_token();
5226    jj_add_error_token(0, 0);
5227    int[][] exptokseq = new int[jj_expentries.size()][];
5228    for (int i = 0; i < jj_expentries.size(); i++) {
5229      exptokseq[i] = jj_expentries.get(i);
5230    }
5231    return new ParseException(token, exptokseq, tokenImage);
5232  }
5233
5234  /** Enable tracing. */
5235  final public void enable_tracing() {
5236  }
5237
5238  /** Disable tracing. */
5239  final public void disable_tracing() {
5240  }
5241
5242  private void jj_rescan_token() {
5243    jj_rescan = true;
5244    for (int i = 0; i < 25; i++) {
5245      try {
5246        JJCalls p = jj_2_rtns[i];
5247
5248        do {
5249          if (p.gen > jj_gen) {
5250            jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
5251            switch (i) {
5252              case 0: jj_3_1(); break;
5253              case 1: jj_3_2(); break;
5254              case 2: jj_3_3(); break;
5255              case 3: jj_3_4(); break;
5256              case 4: jj_3_5(); break;
5257              case 5: jj_3_6(); break;
5258              case 6: jj_3_7(); break;
5259              case 7: jj_3_8(); break;
5260              case 8: jj_3_9(); break;
5261              case 9: jj_3_10(); break;
5262              case 10: jj_3_11(); break;
5263              case 11: jj_3_12(); break;
5264              case 12: jj_3_13(); break;
5265              case 13: jj_3_14(); break;
5266              case 14: jj_3_15(); break;
5267              case 15: jj_3_16(); break;
5268              case 16: jj_3_17(); break;
5269              case 17: jj_3_18(); break;
5270              case 18: jj_3_19(); break;
5271              case 19: jj_3_20(); break;
5272              case 20: jj_3_21(); break;
5273              case 21: jj_3_22(); break;
5274              case 22: jj_3_23(); break;
5275              case 23: jj_3_24(); break;
5276              case 24: jj_3_25(); break;
5277            }
5278          }
5279          p = p.next;
5280        } while (p != null);
5281
5282        } catch(LookaheadSuccess ls) { }
5283    }
5284    jj_rescan = false;
5285  }
5286
5287  private void jj_save(int index, int xla) {
5288    JJCalls p = jj_2_rtns[index];
5289    while (p.gen > jj_gen) {
5290      if (p.next == null) { p = p.next = new JJCalls(); break; }
5291      p = p.next;
5292    }
5293
5294    p.gen = jj_gen + xla - jj_la; 
5295    p.first = token;
5296    p.arg = xla;
5297  }
5298
5299  static final class JJCalls {
5300    int gen;
5301    Token first;
5302    int arg;
5303    JJCalls next;
5304  }
5305
5306}