1/* Generated By:JavaCC: Do not edit this line. ASTParser.java */
2/*
3 *
4 * This file is part of Java 1.8 parser and Abstract Syntax Tree.
5 *
6 * Java 1.8 parser and Abstract Syntax Tree is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Lesser General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * You should have received a copy of the GNU Lesser General Public License
12 * along with Java 1.8 parser and Abstract Syntax Tree.  If not, see <http://www.gnu.org/licenses/>.
13 */
14package com.github.javaparser;
15
16import java.io.*;
17import java.util.*;
18import com.github.javaparser.ast.*;
19import com.github.javaparser.ast.body.*;
20import com.github.javaparser.ast.comments.*;
21import com.github.javaparser.ast.expr.*;
22import com.github.javaparser.ast.stmt.*;
23import com.github.javaparser.ast.type.*;
24
25/**
26 * <p>This class was generated automatically by javacc, do not edit.</p>
27 */
28final class ASTParser implements ASTParserConstants {
29
30    void reset(InputStream in, String encoding) {
31        ReInit(in, encoding);
32    }
33
34    private List add(List list, Object obj) {
35        if (list == null) {
36                list = new LinkedList();
37        }
38        list.add(obj);
39        return list;
40    }
41
42    private List add(int pos, List list, Object obj) {
43        if (list == null) {
44                list = new LinkedList();
45        }
46        list.add(pos, obj);
47        return list;
48    }
49
50        private class Modifier {
51
52                final int modifiers;
53                final List annotations;
54                final int beginLine;
55                final int beginColumn;
56
57                public Modifier(int beginLine, int beginColumn, int modifiers, List annotations) {
58                        this.beginLine = beginLine;
59                        this.beginColumn = beginColumn;
60                        this.modifiers = modifiers;
61                        this.annotations = annotations;
62                }
63        }
64
65    public int addModifier(int modifiers, int mod, Token token) {
66        if ((ModifierSet.hasModifier(modifiers, mod))) {
67            throwParseException(token, "Duplicated modifier");
68        }
69        return ModifierSet.addModifier(modifiers, mod);
70    }
71
72    private void throwParseException(Token token, String message) {
73        StringBuilder buf = new StringBuilder();
74        buf.append(message);
75        buf.append(": \"");
76        buf.append(token.image);
77        buf.append("\" at line ");
78        buf.append(token.beginLine);
79        buf.append(", column ");
80        buf.append(token.beginColumn);
81        ParseException e = new ParseException(buf.toString());
82        e.currentToken = token;
83        throw e;
84    }
85
86    private Expression generateLambda(Expression ret, Statement lambdaBody) {
87            if (ret instanceof EnclosedExpr) {
88                Expression inner = ((EnclosedExpr) ret).getInner();
89                if (inner != null && inner instanceof NameExpr) {
90                    VariableDeclaratorId id = new VariableDeclaratorId(inner.getBeginLine(), inner.getBeginColumn(), inner.getEndLine(), inner.getEndColumn(), ((NameExpr)inner).getName(), 0);
91                    List params = add(null, new Parameter(ret.getBeginLine(), ret.getBeginColumn(), ret.getEndLine(), ret.getEndColumn(), 0, null, new UnknownType(), false, id));
92                    ret = new LambdaExpr(ret.getBeginLine(), ret.getBeginColumn(), lambdaBody.getEndLine(), lambdaBody.getEndColumn(), params, lambdaBody, true);
93                } else {
94                    ret = new LambdaExpr(ret.getBeginLine(), ret.getBeginColumn(), lambdaBody.getEndLine(), lambdaBody.getEndColumn(), null, lambdaBody, true);
95                }
96            } else if (ret instanceof NameExpr) {
97                    VariableDeclaratorId id = new VariableDeclaratorId(ret.getBeginLine(), ret.getBeginColumn(), ret.getEndLine(), ret.getEndColumn(), ((NameExpr)ret).getName(), 0);
98                List params = add(null, new Parameter(ret.getBeginLine(), ret.getBeginColumn(), ret.getEndLine(), ret.getEndColumn(), 0, null, new UnknownType(), false, id));
99                ret = new LambdaExpr(ret.getBeginLine(), ret.getBeginColumn(), ret.getEndLine(), ret.getEndColumn(), params, lambdaBody, false);
100            } else if (ret instanceof LambdaExpr) {
101                ((LambdaExpr) ret).setBody(lambdaBody);
102                ret.setEndLine(lambdaBody.getEndLine());
103                ret.setEndColumn(lambdaBody.getEndColumn());
104            } else {
105                throw new ParseException("Failed to parse lambda expression! Please create an issue at https://github.com/javaparser/javaparser/issues");
106            }
107            return ret;
108    }
109
110    static final class GTToken extends Token {
111
112        int realKind = ASTParserConstants.GT;
113
114        GTToken(int kind, String image) {
115            this.kind = kind;
116            this.image = image;
117        }
118
119        public static Token newToken(int kind, String image) {
120            return new GTToken(kind, image);
121        }
122    }
123
124    private Token last_special_token = null;
125
126/*****************************************
127 * THE JAVA LANGUAGE GRAMMAR STARTS HERE *
128 *****************************************/
129
130/*
131 * Program structuring syntax follows.
132 */
133  final public CompilationUnit CompilationUnit() {
134        PackageDeclaration pakage = null;
135        List imports = null;
136        ImportDeclaration in = null;
137        List types = null;
138        TypeDeclaration tn = null;
139        int line = -1;
140        int column = 0;
141    if (jj_2_1(2147483647)) {
142      pakage = PackageDeclaration();
143                                                                   line = pakage.getBeginLine(); column = pakage.getBeginColumn();
144    } else {
145      ;
146    }
147    label_1:
148    while (true) {
149      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
150      case IMPORT:
151        ;
152        break;
153      default:
154        jj_la1[0] = jj_gen;
155        break label_1;
156      }
157      in = ImportDeclaration();
158                               if(line==-1){line = in.getBeginLine(); column = in.getBeginColumn();} imports = add(imports, in);
159    }
160    label_2:
161    while (true) {
162      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
163      case ABSTRACT:
164      case CLASS:
165      case ENUM:
166      case FINAL:
167      case INTERFACE:
168      case NATIVE:
169      case PRIVATE:
170      case PROTECTED:
171      case PUBLIC:
172      case STATIC:
173      case STRICTFP:
174      case SYNCHRONIZED:
175      case TRANSIENT:
176      case VOLATILE:
177      case SEMICOLON:
178      case AT:
179        ;
180        break;
181      default:
182        jj_la1[1] = jj_gen;
183        break label_2;
184      }
185      tn = TypeDeclaration();
186                             if(line==-1){line = tn.getBeginLine(); column = tn.getBeginColumn();} types = add(types, tn);
187    }
188    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
189    case 0:
190      jj_consume_token(0);
191      break;
192    case 131:
193      jj_consume_token(131);
194      break;
195    default:
196      jj_la1[2] = jj_gen;
197      jj_consume_token(-1);
198      throw new ParseException();
199    }
200    {if (true) return new CompilationUnit(line == -1 ? 0 : line, column, token.endLine, token.endColumn,pakage, imports, types);}
201    throw new Error("Missing return statement in function");
202  }
203
204  final public PackageDeclaration PackageDeclaration() {
205        List annotations = null;
206        AnnotationExpr ann;
207        NameExpr name;
208        int line;
209        int column;
210    label_3:
211    while (true) {
212      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
213      case AT:
214        ;
215        break;
216      default:
217        jj_la1[3] = jj_gen;
218        break label_3;
219      }
220      ann = Annotation();
221                       annotations = add(annotations, ann);
222    }
223    jj_consume_token(PACKAGE);
224             line=token.beginLine; column=token.beginColumn;
225    name = Name();
226    jj_consume_token(SEMICOLON);
227    {if (true) return new PackageDeclaration(line, column, token.endLine, token.endColumn,annotations, name);}
228    throw new Error("Missing return statement in function");
229  }
230
231  final public ImportDeclaration ImportDeclaration() {
232        NameExpr name;
233        boolean isStatic = false;
234        boolean isAsterisk = false;
235        int line;
236        int column;
237    jj_consume_token(IMPORT);
238            line=token.beginLine; column=token.beginColumn;
239    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
240    case STATIC:
241      jj_consume_token(STATIC);
242                                                                          isStatic = true;
243      break;
244    default:
245      jj_la1[4] = jj_gen;
246      ;
247    }
248    name = Name();
249    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
250    case DOT:
251      jj_consume_token(DOT);
252      jj_consume_token(STAR);
253                                                                                                                         isAsterisk = true;
254      break;
255    default:
256      jj_la1[5] = jj_gen;
257      ;
258    }
259    jj_consume_token(SEMICOLON);
260    {if (true) return new ImportDeclaration(line, column, token.endLine, token.endColumn,name, isStatic, isAsterisk);}
261    throw new Error("Missing return statement in function");
262  }
263
264/*
265 * Modifiers. We match all modifiers in a single rule to reduce the chances of
266 * syntax errors for simple modifier mistakes. It will also enable us to give
267 * better error messages.
268 */
269  final public Modifier Modifiers() {
270    int beginLine = -1;
271    int beginColumn = -1;
272    int modifiers = 0;
273    List annotations = null;
274    AnnotationExpr ann;
275    label_4:
276    while (true) {
277      if (jj_2_2(2)) {
278        ;
279      } else {
280        break label_4;
281      }
282      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
283      case PUBLIC:
284        jj_consume_token(PUBLIC);
285              modifiers = addModifier(modifiers, ModifierSet.PUBLIC, token); if(beginLine==-1) {beginLine=token.beginLine; beginColumn=token.beginColumn;}
286        break;
287      case STATIC:
288        jj_consume_token(STATIC);
289              modifiers = addModifier(modifiers, ModifierSet.STATIC, token); if(beginLine==-1) {beginLine=token.beginLine; beginColumn=token.beginColumn;}
290        break;
291      case PROTECTED:
292        jj_consume_token(PROTECTED);
293                 modifiers = addModifier(modifiers, ModifierSet.PROTECTED, token); if(beginLine==-1) {beginLine=token.beginLine; beginColumn=token.beginColumn;}
294        break;
295      case PRIVATE:
296        jj_consume_token(PRIVATE);
297               modifiers = addModifier(modifiers, ModifierSet.PRIVATE, token); if(beginLine==-1) {beginLine=token.beginLine; beginColumn=token.beginColumn;}
298        break;
299      case FINAL:
300        jj_consume_token(FINAL);
301             modifiers = addModifier(modifiers, ModifierSet.FINAL, token); if(beginLine==-1) {beginLine=token.beginLine; beginColumn=token.beginColumn;}
302        break;
303      case ABSTRACT:
304        jj_consume_token(ABSTRACT);
305                modifiers = addModifier(modifiers, ModifierSet.ABSTRACT, token); if(beginLine==-1) {beginLine=token.beginLine; beginColumn=token.beginColumn;}
306        break;
307      case SYNCHRONIZED:
308        jj_consume_token(SYNCHRONIZED);
309                    modifiers = addModifier(modifiers, ModifierSet.SYNCHRONIZED, token); if(beginLine==-1) {beginLine=token.beginLine; beginColumn=token.beginColumn;}
310        break;
311      case NATIVE:
312        jj_consume_token(NATIVE);
313              modifiers = addModifier(modifiers, ModifierSet.NATIVE, token); if(beginLine==-1) {beginLine=token.beginLine; beginColumn=token.beginColumn;}
314        break;
315      case TRANSIENT:
316        jj_consume_token(TRANSIENT);
317                 modifiers = addModifier(modifiers, ModifierSet.TRANSIENT, token); if(beginLine==-1) {beginLine=token.beginLine; beginColumn=token.beginColumn;}
318        break;
319      case VOLATILE:
320        jj_consume_token(VOLATILE);
321                modifiers = addModifier(modifiers, ModifierSet.VOLATILE, token); if(beginLine==-1) {beginLine=token.beginLine; beginColumn=token.beginColumn;}
322        break;
323      case STRICTFP:
324        jj_consume_token(STRICTFP);
325                modifiers = addModifier(modifiers, ModifierSet.STRICTFP, token);  if(beginLine==-1) {beginLine=token.beginLine; beginColumn=token.beginColumn;}
326        break;
327      case AT:
328        ann = Annotation();
329                        annotations = add(annotations, ann); if(beginLine==-1) {beginLine=ann.getBeginLine(); beginColumn=ann.getBeginColumn();}
330        break;
331      default:
332        jj_la1[6] = jj_gen;
333        jj_consume_token(-1);
334        throw new ParseException();
335      }
336    }
337    {if (true) return new Modifier(beginLine, beginColumn, modifiers, annotations);}
338    throw new Error("Missing return statement in function");
339  }
340
341/*
342 * Declaration syntax follows.
343 */
344  final public TypeDeclaration TypeDeclaration() {
345   Modifier modifier;
346   TypeDeclaration ret;
347
348    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
349    case SEMICOLON:
350      jj_consume_token(SEMICOLON);
351          ret = new EmptyTypeDeclaration(token.beginLine, token.beginColumn, token.endLine, token.endColumn);
352      break;
353    case ABSTRACT:
354    case CLASS:
355    case ENUM:
356    case FINAL:
357    case INTERFACE:
358    case NATIVE:
359    case PRIVATE:
360    case PROTECTED:
361    case PUBLIC:
362    case STATIC:
363    case STRICTFP:
364    case SYNCHRONIZED:
365    case TRANSIENT:
366    case VOLATILE:
367    case AT:
368      modifier = Modifiers();
369      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
370      case CLASS:
371      case INTERFACE:
372        ret = ClassOrInterfaceDeclaration(modifier);
373        break;
374      case ENUM:
375        ret = EnumDeclaration(modifier);
376        break;
377      case AT:
378        ret = AnnotationTypeDeclaration(modifier);
379        break;
380      default:
381        jj_la1[7] = jj_gen;
382        jj_consume_token(-1);
383        throw new ParseException();
384      }
385      break;
386    default:
387      jj_la1[8] = jj_gen;
388      jj_consume_token(-1);
389      throw new ParseException();
390    }
391    {if (true) return ret;}
392    throw new Error("Missing return statement in function");
393  }
394
395  final public ClassOrInterfaceDeclaration ClassOrInterfaceDeclaration(Modifier modifier) {
396   boolean isInterface = false;
397   NameExpr name;
398   List typePar = null;
399   List extList = null;
400   List impList = null;
401   List members;
402   int line = modifier.beginLine;
403   int column = modifier.beginColumn;
404    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
405    case CLASS:
406      jj_consume_token(CLASS);
407      break;
408    case INTERFACE:
409      jj_consume_token(INTERFACE);
410                            isInterface = true;
411      break;
412    default:
413      jj_la1[9] = jj_gen;
414      jj_consume_token(-1);
415      throw new ParseException();
416    }
417                                                      if (line == -1) {line=token.beginLine; column=token.beginColumn;}
418    name = Name();
419    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
420    case LT:
421      typePar = TypeParameters();
422                                typePar.remove(0);
423      break;
424    default:
425      jj_la1[10] = jj_gen;
426      ;
427    }
428    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
429    case EXTENDS:
430      extList = ExtendsList(isInterface);
431      break;
432    default:
433      jj_la1[11] = jj_gen;
434      ;
435    }
436    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
437    case IMPLEMENTS:
438      impList = ImplementsList(isInterface);
439      break;
440    default:
441      jj_la1[12] = jj_gen;
442      ;
443    }
444    members = ClassOrInterfaceBody(isInterface);
445    ClassOrInterfaceDeclaration tmp = new ClassOrInterfaceDeclaration(line, column, token.endLine, token.endColumn, modifier.modifiers, modifier.annotations, isInterface, null, typePar, extList, impList, members);
446    tmp.setNameExpr(name);
447    {if (true) return tmp;}
448    throw new Error("Missing return statement in function");
449  }
450
451  final public List ExtendsList(boolean isInterface) {
452   boolean extendsMoreThanOne = false;
453   List ret = new LinkedList();
454   ClassOrInterfaceType cit;
455    AnnotationExpr ann;
456   List annotations = null;
457    jj_consume_token(EXTENDS);
458    label_5:
459    while (true) {
460      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
461      case AT:
462        ;
463        break;
464      default:
465        jj_la1[13] = jj_gen;
466        break label_5;
467      }
468      ann = Annotation();
469                                     annotations = add(annotations, ann);
470    }
471    cit = ClassOrInterfaceType();
472                                                                                                            cit.setAnnotations(annotations); ret.add(cit);
473    label_6:
474    while (true) {
475      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
476      case COMMA:
477        ;
478        break;
479      default:
480        jj_la1[14] = jj_gen;
481        break label_6;
482      }
483      jj_consume_token(COMMA);
484      cit = ClassOrInterfaceType();
485                                        ret.add(cit); extendsMoreThanOne = true;
486    }
487      if (extendsMoreThanOne && !isInterface)
488         throwParseException(token, "A class cannot extend more than one other class");
489     {if (true) return ret;}
490    throw new Error("Missing return statement in function");
491  }
492
493  final public List ImplementsList(boolean isInterface) {
494   List ret = new LinkedList();
495   ClassOrInterfaceType cit;
496   AnnotationExpr ann;
497   List annotations = null;
498    jj_consume_token(IMPLEMENTS);
499    label_7:
500    while (true) {
501      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
502      case AT:
503        ;
504        break;
505      default:
506        jj_la1[15] = jj_gen;
507        break label_7;
508      }
509      ann = Annotation();
510                                        annotations = add(annotations, ann);
511    }
512    cit = ClassOrInterfaceType();
513                                                                                                               cit.setAnnotations(annotations); ret.add(cit);
514    label_8:
515    while (true) {
516      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
517      case COMMA:
518        ;
519        break;
520      default:
521        jj_la1[16] = jj_gen;
522        break label_8;
523      }
524      jj_consume_token(COMMA);
525      cit = ClassOrInterfaceType();
526                                        ret.add(cit);
527    }
528      if (isInterface)
529         throwParseException(token, "An interface cannot implement other interfaces");
530     {if (true) return ret;}
531    throw new Error("Missing return statement in function");
532  }
533
534  final public EnumDeclaration EnumDeclaration(Modifier modifier) {
535        NameExpr name;
536        List impList = null;
537        EnumConstantDeclaration entry;
538        List entries = null;
539        BodyDeclaration member;
540        List members = null;
541        int line = modifier.beginLine;
542        int column = modifier.beginColumn;
543    jj_consume_token(ENUM);
544           if (line == -1) {line=token.beginLine; column=token.beginColumn;}
545    name = Name();
546    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
547    case IMPLEMENTS:
548      impList = ImplementsList(false);
549      break;
550    default:
551      jj_la1[17] = jj_gen;
552      ;
553    }
554    jj_consume_token(LBRACE);
555    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
556    case IDENTIFIER:
557    case AT:
558          entries = new LinkedList();
559      entry = EnumConstantDeclaration();
560                                            entries.add(entry);
561      label_9:
562      while (true) {
563        if (jj_2_3(2)) {
564          ;
565        } else {
566          break label_9;
567        }
568        jj_consume_token(COMMA);
569        entry = EnumConstantDeclaration();
570                                                                                                                         entries.add(entry);
571      }
572      break;
573    default:
574      jj_la1[18] = jj_gen;
575      ;
576    }
577    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
578    case COMMA:
579      jj_consume_token(COMMA);
580      break;
581    default:
582      jj_la1[19] = jj_gen;
583      ;
584    }
585    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
586    case SEMICOLON:
587      jj_consume_token(SEMICOLON);
588      label_10:
589      while (true) {
590        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
591        case ABSTRACT:
592        case BOOLEAN:
593        case BYTE:
594        case CHAR:
595        case CLASS:
596        case _DEFAULT:
597        case DOUBLE:
598        case ENUM:
599        case FINAL:
600        case FLOAT:
601        case INT:
602        case INTERFACE:
603        case LONG:
604        case NATIVE:
605        case PRIVATE:
606        case PROTECTED:
607        case PUBLIC:
608        case SHORT:
609        case STATIC:
610        case STRICTFP:
611        case SYNCHRONIZED:
612        case TRANSIENT:
613        case VOID:
614        case VOLATILE:
615        case IDENTIFIER:
616        case LBRACE:
617        case SEMICOLON:
618        case AT:
619        case LT:
620          ;
621          break;
622        default:
623          jj_la1[20] = jj_gen;
624          break label_10;
625        }
626        member = ClassOrInterfaceBodyDeclaration(false);
627                                                                          members = add(members, member);
628      }
629      break;
630    default:
631      jj_la1[21] = jj_gen;
632      ;
633    }
634    jj_consume_token(RBRACE);
635      EnumDeclaration tmp = new EnumDeclaration(line, column, token.endLine, token.endColumn, modifier.modifiers, modifier.annotations, null, impList, entries, members);
636      tmp.setNameExpr(name);
637      {if (true) return tmp;}
638    throw new Error("Missing return statement in function");
639  }
640
641  final public EnumConstantDeclaration EnumConstantDeclaration() {
642        List annotations = null;
643        AnnotationExpr ann;
644        String name;
645        List args = null;
646        List classBody = null;
647        int line = -1;
648        int column = -1;
649
650    label_11:
651    while (true) {
652      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
653      case AT:
654        ;
655        break;
656      default:
657        jj_la1[22] = jj_gen;
658        break label_11;
659      }
660      ann = Annotation();
661                         annotations = add(annotations, ann); if(line==-1){line=ann.getBeginLine(); column=ann.getBeginColumn();}
662    }
663    jj_consume_token(IDENTIFIER);
664                 name = token.image; if(line==-1){line=token.beginLine; column=token.beginColumn;}
665    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
666    case LPAREN:
667      args = Arguments();
668      break;
669    default:
670      jj_la1[23] = jj_gen;
671      ;
672    }
673    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
674    case LBRACE:
675      classBody = ClassOrInterfaceBody(false);
676      break;
677    default:
678      jj_la1[24] = jj_gen;
679      ;
680    }
681      EnumConstantDeclaration tmp = new EnumConstantDeclaration(line, column, token.endLine, token.endColumn, annotations, name, args, classBody);
682
683      {if (true) return tmp;}
684    throw new Error("Missing return statement in function");
685  }
686
687  final public List TypeParameters() {
688        List ret = new LinkedList();
689        TypeParameter tp;
690        List annotations = null;
691        AnnotationExpr ann;
692    jj_consume_token(LT);
693         ret.add(new int[]{token.beginLine, token.beginColumn});
694    label_12:
695    while (true) {
696      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
697      case AT:
698        ;
699        break;
700      default:
701        jj_la1[25] = jj_gen;
702        break label_12;
703      }
704      ann = Annotation();
705                           annotations = add(annotations, ann);
706    }
707    tp = TypeParameter();
708                          ret.add(tp); tp.setAnnotations(annotations); annotations = null;
709    label_13:
710    while (true) {
711      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
712      case COMMA:
713        ;
714        break;
715      default:
716        jj_la1[26] = jj_gen;
717        break label_13;
718      }
719      jj_consume_token(COMMA);
720      label_14:
721      while (true) {
722        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
723        case AT:
724          ;
725          break;
726        default:
727          jj_la1[27] = jj_gen;
728          break label_14;
729        }
730        ann = Annotation();
731                                 annotations = add(annotations, ann);
732      }
733      tp = TypeParameter();
734                                                                                                ret.add(tp); tp.setAnnotations(annotations); annotations = null;
735    }
736    jj_consume_token(GT);
737     {if (true) return ret;}
738    throw new Error("Missing return statement in function");
739  }
740
741  final public TypeParameter TypeParameter() {
742        String name;
743        List typeBound = null;
744        int line;
745        int column;
746    jj_consume_token(IDENTIFIER);
747                  name = token.image; line=token.beginLine; column=token.beginColumn;
748    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
749    case EXTENDS:
750      typeBound = TypeBound();
751      break;
752    default:
753      jj_la1[28] = jj_gen;
754      ;
755    }
756     {if (true) return new TypeParameter(line, column, token.endLine, token.endColumn,name, typeBound);}
757    throw new Error("Missing return statement in function");
758  }
759
760  final public List TypeBound() {
761        List ret = new LinkedList();
762        ClassOrInterfaceType cit;
763        AnnotationExpr ann;
764        List annotations = null;
765    jj_consume_token(EXTENDS);
766    label_15:
767    while (true) {
768      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
769      case AT:
770        ;
771        break;
772      default:
773        jj_la1[29] = jj_gen;
774        break label_15;
775      }
776      ann = Annotation();
777                                     annotations = add(annotations, ann);
778    }
779    cit = ClassOrInterfaceType();
780                                                                                                            cit.setAnnotations(annotations); ret.add(cit); annotations=null;
781    label_16:
782    while (true) {
783      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
784      case BIT_AND:
785        ;
786        break;
787      default:
788        jj_la1[30] = jj_gen;
789        break label_16;
790      }
791      jj_consume_token(BIT_AND);
792      label_17:
793      while (true) {
794        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
795        case AT:
796          ;
797          break;
798        default:
799          jj_la1[31] = jj_gen;
800          break label_17;
801        }
802        ann = Annotation();
803                                   annotations = add(annotations, ann);
804      }
805      cit = ClassOrInterfaceType();
806                                                                                                           cit.setAnnotations(annotations); ret.add(cit); annotations=null;
807    }
808     {if (true) return ret;}
809    throw new Error("Missing return statement in function");
810  }
811
812  final public List ClassOrInterfaceBody(boolean isInterface) {
813        List ret = new LinkedList();
814        BodyDeclaration member;
815    jj_consume_token(LBRACE);
816    label_18:
817    while (true) {
818      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
819      case ABSTRACT:
820      case BOOLEAN:
821      case BYTE:
822      case CHAR:
823      case CLASS:
824      case _DEFAULT:
825      case DOUBLE:
826      case ENUM:
827      case FINAL:
828      case FLOAT:
829      case INT:
830      case INTERFACE:
831      case LONG:
832      case NATIVE:
833      case PRIVATE:
834      case PROTECTED:
835      case PUBLIC:
836      case SHORT:
837      case STATIC:
838      case STRICTFP:
839      case SYNCHRONIZED:
840      case TRANSIENT:
841      case VOID:
842      case VOLATILE:
843      case IDENTIFIER:
844      case LBRACE:
845      case SEMICOLON:
846      case AT:
847      case LT:
848        ;
849        break;
850      default:
851        jj_la1[32] = jj_gen;
852        break label_18;
853      }
854      member = ClassOrInterfaceBodyDeclaration(isInterface);
855                                                                ret.add(member);
856    }
857    jj_consume_token(RBRACE);
858    {if (true) return ret;}
859    throw new Error("Missing return statement in function");
860  }
861
862  final public BodyDeclaration ClassOrInterfaceBodyDeclaration(boolean isInterface) {
863   boolean isNestedInterface = false;
864   Modifier modifier;
865   Modifier modifier2 = null;
866   int aux = 0;
867   BodyDeclaration ret;
868   boolean isDefault = false;
869
870    if (jj_2_6(2)) {
871      ret = InitializerDeclaration();
872             if (isInterface)
873                throwParseException(token, "An interface cannot have initializers");
874    } else {
875      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
876      case ABSTRACT:
877      case BOOLEAN:
878      case BYTE:
879      case CHAR:
880      case CLASS:
881      case _DEFAULT:
882      case DOUBLE:
883      case ENUM:
884      case FINAL:
885      case FLOAT:
886      case INT:
887      case INTERFACE:
888      case LONG:
889      case NATIVE:
890      case PRIVATE:
891      case PROTECTED:
892      case PUBLIC:
893      case SHORT:
894      case STATIC:
895      case STRICTFP:
896      case SYNCHRONIZED:
897      case TRANSIENT:
898      case VOID:
899      case VOLATILE:
900      case IDENTIFIER:
901      case AT:
902      case LT:
903        modifier = Modifiers();
904        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
905        case _DEFAULT:
906          jj_consume_token(_DEFAULT);
907          modifier2 = Modifiers();
908            if(!isInterface)
909            {
910              throwParseException(token, "An interface cannot have default members");
911            }
912            isDefault = true;
913          break;
914        default:
915          jj_la1[33] = jj_gen;
916          ;
917        }
918        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
919        case CLASS:
920        case INTERFACE:
921          ret = ClassOrInterfaceDeclaration(modifier);
922          break;
923        case ENUM:
924          ret = EnumDeclaration(modifier);
925          break;
926        case AT:
927          ret = AnnotationTypeDeclaration(modifier);
928          break;
929        default:
930          jj_la1[34] = jj_gen;
931          if (jj_2_4(2147483647)) {
932            ret = ConstructorDeclaration(modifier);
933          } else if (jj_2_5(2147483647)) {
934            ret = FieldDeclaration(modifier);
935          } else {
936            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
937            case BOOLEAN:
938            case BYTE:
939            case CHAR:
940            case DOUBLE:
941            case FLOAT:
942            case INT:
943            case LONG:
944            case SHORT:
945            case VOID:
946            case IDENTIFIER:
947            case LT:
948              ret = MethodDeclaration(modifier);
949                if(isDefault && ret!= null && ((MethodDeclaration)ret).getBody() == null)
950                {
951                  throwParseException(token, "\"default\" methods must have a body");
952                }
953                ((MethodDeclaration)ret).setDefault(isDefault);
954                if(modifier2!= null)
955                {
956                  aux = modifier2.modifiers;
957                }
958                ((MethodDeclaration)ret).setModifiers(addModifier(modifier.modifiers, aux, token));
959              break;
960            default:
961              jj_la1[35] = jj_gen;
962              jj_consume_token(-1);
963              throw new ParseException();
964            }
965          }
966        }
967            if(isDefault && ! (ret instanceof MethodDeclaration))
968            {
969              throwParseException(token, "Just methods can have the keyword \"default\".");
970            }
971        break;
972      case SEMICOLON:
973        jj_consume_token(SEMICOLON);
974                ret = new EmptyMemberDeclaration(token.beginLine, token.beginColumn, token.endLine, token.endColumn);
975        break;
976      default:
977        jj_la1[36] = jj_gen;
978        jj_consume_token(-1);
979        throw new ParseException();
980      }
981    }
982    {if (true) return ret;}
983    throw new Error("Missing return statement in function");
984  }
985
986  final public FieldDeclaration FieldDeclaration(Modifier modifier) {
987        Type type;
988        List variables = new LinkedList();
989        VariableDeclarator val;
990    // Modifiers are already matched in the caller
991      type = Type();
992    val = VariableDeclarator();
993                                     variables.add(val);
994    label_19:
995    while (true) {
996      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
997      case COMMA:
998        ;
999        break;
1000      default:
1001        jj_la1[37] = jj_gen;
1002        break label_19;
1003      }
1004      jj_consume_token(COMMA);
1005      val = VariableDeclarator();
1006                                     variables.add(val);
1007    }
1008    jj_consume_token(SEMICOLON);
1009        int line = modifier.beginLine;
1010        int column = modifier.beginColumn;
1011        if (line == -1) { line=type.getBeginLine(); column=type.getBeginColumn(); }
1012        {if (true) return new FieldDeclaration(line, column, token.endLine, token.endColumn, modifier.modifiers, modifier.annotations, type, variables);}
1013    throw new Error("Missing return statement in function");
1014  }
1015
1016  final public VariableDeclarator VariableDeclarator() {
1017        VariableDeclaratorId id;
1018        Expression init = null;
1019    id = VariableDeclaratorId();
1020    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1021    case ASSIGN:
1022      jj_consume_token(ASSIGN);
1023      init = VariableInitializer();
1024      break;
1025    default:
1026      jj_la1[38] = jj_gen;
1027      ;
1028    }
1029    {if (true) return new  VariableDeclarator(id.getBeginLine(), id.getBeginColumn(), token.endLine, token.endColumn, id, init);}
1030    throw new Error("Missing return statement in function");
1031  }
1032
1033  final public VariableDeclaratorId VariableDeclaratorId() {
1034        String name;
1035        int arrayCount = 0;
1036        int line;
1037        int column;
1038    jj_consume_token(IDENTIFIER);
1039                 name = token.image; line=token.beginLine; column=token.beginColumn;
1040    label_20:
1041    while (true) {
1042      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1043      case LBRACKET:
1044        ;
1045        break;
1046      default:
1047        jj_la1[39] = jj_gen;
1048        break label_20;
1049      }
1050      jj_consume_token(LBRACKET);
1051      jj_consume_token(RBRACKET);
1052                                                                                                   arrayCount++;
1053    }
1054    {if (true) return new VariableDeclaratorId(line, column, token.endLine, token.endColumn,name, arrayCount);}
1055    throw new Error("Missing return statement in function");
1056  }
1057
1058  final public Expression VariableInitializer() {
1059        Expression ret;
1060    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1061    case LBRACE:
1062      ret = ArrayInitializer();
1063      break;
1064    case BOOLEAN:
1065    case BYTE:
1066    case CHAR:
1067    case DOUBLE:
1068    case FALSE:
1069    case FLOAT:
1070    case INT:
1071    case LONG:
1072    case NEW:
1073    case NULL:
1074    case SHORT:
1075    case SUPER:
1076    case THIS:
1077    case TRUE:
1078    case VOID:
1079    case LONG_LITERAL:
1080    case INTEGER_LITERAL:
1081    case FLOATING_POINT_LITERAL:
1082    case CHARACTER_LITERAL:
1083    case STRING_LITERAL:
1084    case IDENTIFIER:
1085    case LPAREN:
1086    case BANG:
1087    case TILDE:
1088    case INCR:
1089    case DECR:
1090    case PLUS:
1091    case MINUS:
1092      ret = Expression();
1093      break;
1094    default:
1095      jj_la1[40] = jj_gen;
1096      jj_consume_token(-1);
1097      throw new ParseException();
1098    }
1099    {if (true) return ret;}
1100    throw new Error("Missing return statement in function");
1101  }
1102
1103  final public ArrayInitializerExpr ArrayInitializer() {
1104        List values = null;
1105        Expression val;
1106        int line;
1107        int column;
1108    jj_consume_token(LBRACE);
1109       line=token.beginLine; column=token.beginColumn;
1110    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1111    case BOOLEAN:
1112    case BYTE:
1113    case CHAR:
1114    case DOUBLE:
1115    case FALSE:
1116    case FLOAT:
1117    case INT:
1118    case LONG:
1119    case NEW:
1120    case NULL:
1121    case SHORT:
1122    case SUPER:
1123    case THIS:
1124    case TRUE:
1125    case VOID:
1126    case LONG_LITERAL:
1127    case INTEGER_LITERAL:
1128    case FLOATING_POINT_LITERAL:
1129    case CHARACTER_LITERAL:
1130    case STRING_LITERAL:
1131    case IDENTIFIER:
1132    case LPAREN:
1133    case LBRACE:
1134    case BANG:
1135    case TILDE:
1136    case INCR:
1137    case DECR:
1138    case PLUS:
1139    case MINUS:
1140      val = VariableInitializer();
1141                                                                                        values = add(values, val);
1142      label_21:
1143      while (true) {
1144        if (jj_2_7(2)) {
1145          ;
1146        } else {
1147          break label_21;
1148        }
1149        jj_consume_token(COMMA);
1150        val = VariableInitializer();
1151                                                                                                                                                                      values = add(values, val);
1152      }
1153      break;
1154    default:
1155      jj_la1[41] = jj_gen;
1156      ;
1157    }
1158    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1159    case COMMA:
1160      jj_consume_token(COMMA);
1161      break;
1162    default:
1163      jj_la1[42] = jj_gen;
1164      ;
1165    }
1166    jj_consume_token(RBRACE);
1167    {if (true) return new ArrayInitializerExpr(line, column, token.endLine, token.endColumn,values);}
1168    throw new Error("Missing return statement in function");
1169  }
1170
1171  final public MethodDeclaration MethodDeclaration(Modifier modifier) {
1172        List typeParameters = null;
1173        Type type;
1174        NameExpr name;
1175        List parameters;
1176        int arrayCount = 0;
1177        List throws_ = null;
1178        BlockStmt block = null;
1179        int line = modifier.beginLine;
1180        int column = modifier.beginColumn;
1181    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1182    case LT:
1183      typeParameters = TypeParameters();
1184                                        int[] lineCol=(int[])typeParameters.remove(0); if(line==-1){ line=lineCol[0]; column=lineCol[1];}
1185      break;
1186    default:
1187      jj_la1[43] = jj_gen;
1188      ;
1189    }
1190    type = ResultType();
1191                        if(line==-1){line=type.getBeginLine(); column=type.getBeginColumn();}
1192    name = Name();
1193    parameters = FormalParameters();
1194    label_22:
1195    while (true) {
1196      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1197      case LBRACKET:
1198        ;
1199        break;
1200      default:
1201        jj_la1[44] = jj_gen;
1202        break label_22;
1203      }
1204      jj_consume_token(LBRACKET);
1205      jj_consume_token(RBRACKET);
1206                                                            arrayCount++;
1207    }
1208    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1209    case THROWS:
1210      jj_consume_token(THROWS);
1211      throws_ = NameList();
1212      break;
1213    default:
1214      jj_la1[45] = jj_gen;
1215      ;
1216    }
1217    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1218    case LBRACE:
1219      block = Block();
1220      break;
1221    case SEMICOLON:
1222      jj_consume_token(SEMICOLON);
1223      break;
1224    default:
1225      jj_la1[46] = jj_gen;
1226      jj_consume_token(-1);
1227      throw new ParseException();
1228    }
1229      MethodDeclaration tmp = new MethodDeclaration(line, column, token.endLine, token.endColumn, modifier.modifiers, modifier.annotations, typeParameters, type, null, parameters, arrayCount, throws_, block);
1230      tmp.setNameExpr(name);
1231      {if (true) return tmp;}
1232    throw new Error("Missing return statement in function");
1233  }
1234
1235  final public List FormalParameters() {
1236        List ret = null;
1237        Parameter par;
1238    jj_consume_token(LPAREN);
1239    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1240    case ABSTRACT:
1241    case BOOLEAN:
1242    case BYTE:
1243    case CHAR:
1244    case DOUBLE:
1245    case FINAL:
1246    case FLOAT:
1247    case INT:
1248    case LONG:
1249    case NATIVE:
1250    case PRIVATE:
1251    case PROTECTED:
1252    case PUBLIC:
1253    case SHORT:
1254    case STATIC:
1255    case STRICTFP:
1256    case SYNCHRONIZED:
1257    case TRANSIENT:
1258    case VOLATILE:
1259    case IDENTIFIER:
1260    case AT:
1261      par = FormalParameter();
1262                                  ret = add(ret, par);
1263      label_23:
1264      while (true) {
1265        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1266        case COMMA:
1267          ;
1268          break;
1269        default:
1270          jj_la1[47] = jj_gen;
1271          break label_23;
1272        }
1273        jj_consume_token(COMMA);
1274        par = FormalParameter();
1275                                                                                         ret = add(ret, par);
1276      }
1277      break;
1278    default:
1279      jj_la1[48] = jj_gen;
1280      ;
1281    }
1282    jj_consume_token(RPAREN);
1283    {if (true) return ret;}
1284    throw new Error("Missing return statement in function");
1285  }
1286
1287  final public List FormalLambdaParameters() {
1288  List ret = null;
1289  Parameter par;
1290    jj_consume_token(COMMA);
1291    par = FormalParameter();
1292                                   ret = add(ret, par);
1293    label_24:
1294    while (true) {
1295      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1296      case COMMA:
1297        ;
1298        break;
1299      default:
1300        jj_la1[49] = jj_gen;
1301        break label_24;
1302      }
1303      jj_consume_token(COMMA);
1304      par = FormalParameter();
1305                                                                                           ret = add(ret, par);
1306    }
1307    {if (true) return ret;}
1308    throw new Error("Missing return statement in function");
1309  }
1310
1311  final public List InferredLambdaParameters() {
1312  List ret = null;
1313  VariableDeclaratorId id;
1314    jj_consume_token(COMMA);
1315    id = VariableDeclaratorId();
1316                                          ret = add(ret, new Parameter(id.getBeginLine(), id.getBeginColumn(), id.getEndLine(), id.getEndColumn(), 0, null, new UnknownType(), false, id));
1317    label_25:
1318    while (true) {
1319      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1320      case COMMA:
1321        ;
1322        break;
1323      default:
1324        jj_la1[50] = jj_gen;
1325        break label_25;
1326      }
1327      jj_consume_token(COMMA);
1328      id = VariableDeclaratorId();
1329                                       ret = add(ret, new Parameter(id.getBeginLine(), id.getBeginColumn(), id.getEndLine(), id.getEndColumn(), 0, null, new UnknownType(), false, id));
1330    }
1331    {if (true) return ret;}
1332    throw new Error("Missing return statement in function");
1333  }
1334
1335  final public Parameter FormalParameter() {
1336        Modifier modifier;
1337        Type type;
1338        boolean isVarArg = false;
1339        VariableDeclaratorId id;
1340    modifier = Modifiers();
1341    type = Type();
1342    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1343    case ELLIPSIS:
1344      jj_consume_token(ELLIPSIS);
1345                                                 isVarArg = true;
1346      break;
1347    default:
1348      jj_la1[51] = jj_gen;
1349      ;
1350    }
1351    id = VariableDeclaratorId();
1352    int line = modifier.beginLine;
1353    int column = modifier.beginColumn;
1354    if(line==-1){ line=type.getBeginLine(); column=type.getBeginColumn(); }
1355    {if (true) return new Parameter(line, column, token.endLine, token.endColumn, modifier.modifiers, modifier.annotations, type, isVarArg, id);}
1356    throw new Error("Missing return statement in function");
1357  }
1358
1359  final public ConstructorDeclaration ConstructorDeclaration(Modifier modifier) {
1360        List typeParameters = null;
1361        NameExpr name;
1362        List parameters;
1363        List throws_ = null;
1364        ExplicitConstructorInvocationStmt exConsInv = null;
1365        List stmts;
1366        int line = modifier.beginLine;
1367        int column = modifier.beginColumn;
1368        int bbLine = 0;
1369        int bbColumn = 0;
1370        int beLine = 0;
1371        int beColumn = 0;
1372    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1373    case LT:
1374      typeParameters = TypeParameters();
1375                                        int[] lineCol=(int[])typeParameters.remove(0); if(line==-1){ line=lineCol[0]; column=lineCol[1];}
1376      break;
1377    default:
1378      jj_la1[52] = jj_gen;
1379      ;
1380    }
1381    // Modifiers matched in the caller
1382      name = SimpleName();
1383                        if(line==-1){line=token.beginLine; column=token.beginColumn;}
1384    parameters = FormalParameters();
1385    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1386    case THROWS:
1387      jj_consume_token(THROWS);
1388      throws_ = NameList();
1389      break;
1390    default:
1391      jj_la1[53] = jj_gen;
1392      ;
1393    }
1394    jj_consume_token(LBRACE);
1395        bbLine=token.beginLine; bbColumn=token.beginColumn;
1396    if (jj_2_8(2147483647)) {
1397      exConsInv = ExplicitConstructorInvocation();
1398    } else {
1399      ;
1400    }
1401    stmts = Statements();
1402    jj_consume_token(RBRACE);
1403        if (exConsInv != null) {
1404                stmts = add(0, stmts, exConsInv);
1405        }
1406        ConstructorDeclaration tmp = new ConstructorDeclaration(line, column, token.endLine, token.endColumn, modifier.modifiers, modifier.annotations, typeParameters, null, parameters, throws_, new BlockStmt(bbLine, bbColumn, token.endLine, token.endColumn, stmts));
1407    tmp.setNameExpr(name);
1408    {if (true) return tmp;}
1409    throw new Error("Missing return statement in function");
1410  }
1411
1412  final public ExplicitConstructorInvocationStmt ExplicitConstructorInvocation() {
1413        boolean isThis = false;
1414        List args;
1415        Expression expr = null;
1416        List typeArgs = null;
1417        int line = -1;
1418        int column = 0;
1419    if (jj_2_10(2147483647)) {
1420      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1421      case LT:
1422      case 132:
1423        typeArgs = TypeArguments();
1424                                         int[] lineCol=(int[])typeArgs.remove(0); line=lineCol[0]; column=lineCol[1];
1425        break;
1426      default:
1427        jj_la1[54] = jj_gen;
1428        ;
1429      }
1430      jj_consume_token(THIS);
1431                   if (line == -1) {line=token.beginLine; column=token.beginColumn;} isThis = true;
1432      args = Arguments();
1433      jj_consume_token(SEMICOLON);
1434    } else {
1435      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1436      case BOOLEAN:
1437      case BYTE:
1438      case CHAR:
1439      case DOUBLE:
1440      case FALSE:
1441      case FLOAT:
1442      case INT:
1443      case LONG:
1444      case NEW:
1445      case NULL:
1446      case SHORT:
1447      case SUPER:
1448      case THIS:
1449      case TRUE:
1450      case VOID:
1451      case LONG_LITERAL:
1452      case INTEGER_LITERAL:
1453      case FLOATING_POINT_LITERAL:
1454      case CHARACTER_LITERAL:
1455      case STRING_LITERAL:
1456      case IDENTIFIER:
1457      case LPAREN:
1458      case LT:
1459      case 132:
1460        if (jj_2_9(2147483647)) {
1461          expr = PrimaryExpressionWithoutSuperSuffix();
1462          jj_consume_token(DOT);
1463                  line=expr.getBeginLine(); column=expr.getBeginColumn();
1464        } else {
1465          ;
1466        }
1467        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1468        case LT:
1469        case 132:
1470          typeArgs = TypeArguments();
1471                                        int[] lineCol=(int[])typeArgs.remove(0); if (line == -1) {line=lineCol[0]; column=lineCol[1];}
1472          break;
1473        default:
1474          jj_la1[55] = jj_gen;
1475          ;
1476        }
1477        jj_consume_token(SUPER);
1478                   if (line == -1) {line=token.beginLine; column=token.beginColumn;}
1479        args = Arguments();
1480        jj_consume_token(SEMICOLON);
1481        break;
1482      default:
1483        jj_la1[56] = jj_gen;
1484        jj_consume_token(-1);
1485        throw new ParseException();
1486      }
1487    }
1488    {if (true) return new ExplicitConstructorInvocationStmt(line, column, token.endLine, token.endColumn,typeArgs, isThis, expr, args);}
1489    throw new Error("Missing return statement in function");
1490  }
1491
1492  final public List Statements() {
1493        List ret = null;
1494        Statement stmt;
1495    label_26:
1496    while (true) {
1497      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1498      case ABSTRACT:
1499      case ASSERT:
1500      case BOOLEAN:
1501      case BREAK:
1502      case BYTE:
1503      case CHAR:
1504      case CLASS:
1505      case CONTINUE:
1506      case DO:
1507      case DOUBLE:
1508      case FALSE:
1509      case FINAL:
1510      case FLOAT:
1511      case FOR:
1512      case IF:
1513      case INT:
1514      case INTERFACE:
1515      case LONG:
1516      case NATIVE:
1517      case NEW:
1518      case NULL:
1519      case PRIVATE:
1520      case PROTECTED:
1521      case PUBLIC:
1522      case RETURN:
1523      case SHORT:
1524      case STATIC:
1525      case STRICTFP:
1526      case SUPER:
1527      case SWITCH:
1528      case SYNCHRONIZED:
1529      case THIS:
1530      case THROW:
1531      case TRANSIENT:
1532      case TRUE:
1533      case TRY:
1534      case VOID:
1535      case VOLATILE:
1536      case WHILE:
1537      case LONG_LITERAL:
1538      case INTEGER_LITERAL:
1539      case FLOATING_POINT_LITERAL:
1540      case CHARACTER_LITERAL:
1541      case STRING_LITERAL:
1542      case IDENTIFIER:
1543      case LPAREN:
1544      case LBRACE:
1545      case SEMICOLON:
1546      case AT:
1547      case INCR:
1548      case DECR:
1549        ;
1550        break;
1551      default:
1552        jj_la1[57] = jj_gen;
1553        break label_26;
1554      }
1555      stmt = BlockStatement();
1556                                    ret = add(ret, stmt);
1557    }
1558          {if (true) return ret;}
1559    throw new Error("Missing return statement in function");
1560  }
1561
1562  final public InitializerDeclaration InitializerDeclaration() {
1563        BlockStmt block;
1564        int line = -1;
1565        int column = 0;
1566        boolean isStatic = false;
1567    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1568    case STATIC:
1569      jj_consume_token(STATIC);
1570               isStatic = true; line=token.beginLine; column=token.beginColumn;
1571      break;
1572    default:
1573      jj_la1[58] = jj_gen;
1574      ;
1575    }
1576    block = Block();
1577                                                                                                    if(line==-1){line=block.getBeginLine(); column=block.getBeginColumn();}
1578    {if (true) return new InitializerDeclaration(line, column, token.endLine, token.endColumn, isStatic, block);}
1579    throw new Error("Missing return statement in function");
1580  }
1581
1582/*
1583 * Type, name and expression syntax follows.
1584 */
1585  final public Type Type() {
1586        Type ret;
1587    if (jj_2_11(2)) {
1588      ret = ReferenceType();
1589    } else {
1590      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1591      case BOOLEAN:
1592      case BYTE:
1593      case CHAR:
1594      case DOUBLE:
1595      case FLOAT:
1596      case INT:
1597      case LONG:
1598      case SHORT:
1599        ret = PrimitiveType();
1600        break;
1601      default:
1602        jj_la1[59] = jj_gen;
1603        jj_consume_token(-1);
1604        throw new ParseException();
1605      }
1606    }
1607   {if (true) return ret;}
1608    throw new Error("Missing return statement in function");
1609  }
1610
1611  final public ReferenceType ReferenceType() {
1612        Type type;
1613        int arrayCount = 0;
1614        List annotations = null;
1615        List accum= null;
1616        AnnotationExpr ann;
1617    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1618    case BOOLEAN:
1619    case BYTE:
1620    case CHAR:
1621    case DOUBLE:
1622    case FLOAT:
1623    case INT:
1624    case LONG:
1625    case SHORT:
1626      type = PrimitiveType();
1627      label_27:
1628      while (true) {
1629        label_28:
1630        while (true) {
1631          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1632          case AT:
1633            ;
1634            break;
1635          default:
1636            jj_la1[60] = jj_gen;
1637            break label_28;
1638          }
1639          ann = Annotation();
1640                                                                  annotations = add(annotations, ann);
1641        }
1642        jj_consume_token(LBRACKET);
1643        jj_consume_token(RBRACKET);
1644                                                                                                                      arrayCount++; accum = add(accum, annotations); annotations= null;
1645        if (jj_2_12(2)) {
1646          ;
1647        } else {
1648          break label_27;
1649        }
1650      }
1651      break;
1652    case IDENTIFIER:
1653      type = ClassOrInterfaceType();
1654      label_29:
1655      while (true) {
1656        if (jj_2_13(2)) {
1657          ;
1658        } else {
1659          break label_29;
1660        }
1661        label_30:
1662        while (true) {
1663          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1664          case AT:
1665            ;
1666            break;
1667          default:
1668            jj_la1[61] = jj_gen;
1669            break label_30;
1670          }
1671          ann = Annotation();
1672                                                                         annotations = add(annotations, ann);
1673        }
1674        jj_consume_token(LBRACKET);
1675        jj_consume_token(RBRACKET);
1676                                                                                                                             arrayCount++; accum = add(accum, annotations); annotations= null;
1677      }
1678      break;
1679    default:
1680      jj_la1[62] = jj_gen;
1681      jj_consume_token(-1);
1682      throw new ParseException();
1683    }
1684    {if (true) return new ReferenceType(type.getBeginLine(), type.getBeginColumn(), token.endLine, token.endColumn, type, arrayCount, null, accum);}
1685    throw new Error("Missing return statement in function");
1686  }
1687
1688  final public ClassOrInterfaceType ClassOrInterfaceType() {
1689        ClassOrInterfaceType ret;
1690        String name;
1691        List typeArgs = null;
1692        int line;
1693        int column;
1694        List annotations = null;
1695        AnnotationExpr ann;
1696    jj_consume_token(IDENTIFIER);
1697                line=token.beginLine; column=token.beginColumn;
1698                                                                   name = token.image;
1699    if (jj_2_14(2)) {
1700      typeArgs = TypeArguments();
1701                                             typeArgs.remove(0);
1702    } else {
1703      ;
1704    }
1705    ret = new ClassOrInterfaceType(line, column, token.endLine, token.endColumn,null, name, typeArgs);
1706    label_31:
1707    while (true) {
1708      if (jj_2_15(2)) {
1709        ;
1710      } else {
1711        break label_31;
1712      }
1713      jj_consume_token(DOT);
1714      label_32:
1715      while (true) {
1716        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1717        case AT:
1718          ;
1719          break;
1720        default:
1721          jj_la1[63] = jj_gen;
1722          break label_32;
1723        }
1724        ann = Annotation();
1725                                                   annotations = add(annotations, ann);
1726      }
1727      jj_consume_token(IDENTIFIER);
1728                                                                                                           name = token.image;
1729      if (jj_2_16(2)) {
1730        typeArgs = TypeArguments();
1731                                                     typeArgs.remove(0);
1732      } else {
1733        ;
1734      }
1735                                                                              ret = new ClassOrInterfaceType(line, column, token.endLine, token.endColumn,ret, name, typeArgs); ret.setAnnotations(annotations); annotations = null;
1736    }
1737    {if (true) return ret;}
1738    throw new Error("Missing return statement in function");
1739  }
1740
1741  final public List TypeArguments() {
1742        List ret = new LinkedList();
1743        Type type;
1744    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1745    case LT:
1746      jj_consume_token(LT);
1747           ret.add(new int[]{token.beginLine, token.beginColumn});
1748      type = TypeArgument();
1749                             ret.add(type);
1750      label_33:
1751      while (true) {
1752        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1753        case COMMA:
1754          ;
1755          break;
1756        default:
1757          jj_la1[64] = jj_gen;
1758          break label_33;
1759        }
1760        jj_consume_token(COMMA);
1761        type = TypeArgument();
1762                                                                            ret.add(type);
1763      }
1764      jj_consume_token(GT);
1765     {if (true) return ret;}
1766      break;
1767    case 132:
1768      jj_consume_token(132);
1769          ret.add(null);
1770     {if (true) return ret;}
1771      break;
1772    default:
1773      jj_la1[65] = jj_gen;
1774      jj_consume_token(-1);
1775      throw new ParseException();
1776    }
1777    throw new Error("Missing return statement in function");
1778  }
1779
1780  final public Type TypeArgument() {
1781        Type ret;
1782        List annotations = null;
1783        AnnotationExpr ann;
1784    label_34:
1785    while (true) {
1786      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1787      case AT:
1788        ;
1789        break;
1790      default:
1791        jj_la1[66] = jj_gen;
1792        break label_34;
1793      }
1794      ann = Annotation();
1795                          annotations = add(annotations, ann);
1796    }
1797    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1798    case BOOLEAN:
1799    case BYTE:
1800    case CHAR:
1801    case DOUBLE:
1802    case FLOAT:
1803    case INT:
1804    case LONG:
1805    case SHORT:
1806    case IDENTIFIER:
1807      ret = ReferenceType();
1808      break;
1809    case HOOK:
1810      ret = Wildcard();
1811      break;
1812    default:
1813      jj_la1[67] = jj_gen;
1814      jj_consume_token(-1);
1815      throw new ParseException();
1816    }
1817   ret.setAnnotations(annotations); {if (true) return ret;}
1818    throw new Error("Missing return statement in function");
1819  }
1820
1821  final public WildcardType Wildcard() {
1822        ReferenceType ext = null;
1823        ReferenceType sup = null;
1824        int line;
1825        int column;
1826        AnnotationExpr ann;
1827        List annotations = null;
1828    jj_consume_token(HOOK);
1829        line=token.beginLine; column=token.beginColumn;
1830    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1831    case EXTENDS:
1832    case SUPER:
1833      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1834      case EXTENDS:
1835        jj_consume_token(EXTENDS);
1836        label_35:
1837        while (true) {
1838          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1839          case AT:
1840            ;
1841            break;
1842          default:
1843            jj_la1[68] = jj_gen;
1844            break label_35;
1845          }
1846          ann = Annotation();
1847                                                  annotations = add(annotations, ann);
1848        }
1849        ext = ReferenceType();
1850                  ext.setAnnotations(annotations);
1851        break;
1852      case SUPER:
1853        jj_consume_token(SUPER);
1854        label_36:
1855        while (true) {
1856          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1857          case AT:
1858            ;
1859            break;
1860          default:
1861            jj_la1[69] = jj_gen;
1862            break label_36;
1863          }
1864          ann = Annotation();
1865                                                annotations = add(annotations, ann);
1866        }
1867        sup = ReferenceType();
1868                  sup.setAnnotations(annotations);
1869        break;
1870      default:
1871        jj_la1[70] = jj_gen;
1872        jj_consume_token(-1);
1873        throw new ParseException();
1874      }
1875      break;
1876    default:
1877      jj_la1[71] = jj_gen;
1878      ;
1879    }
1880     {if (true) return new WildcardType(line, column, token.endLine, token.endColumn,ext, sup);}
1881    throw new Error("Missing return statement in function");
1882  }
1883
1884  final public PrimitiveType PrimitiveType() {
1885        PrimitiveType ret;
1886    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1887    case BOOLEAN:
1888      jj_consume_token(BOOLEAN);
1889              ret = new PrimitiveType(token.beginLine, token.beginColumn, token.endLine, token.endColumn, PrimitiveType.Primitive.Boolean);
1890      break;
1891    case CHAR:
1892      jj_consume_token(CHAR);
1893           ret = new PrimitiveType(token.beginLine, token.beginColumn, token.endLine, token.endColumn, PrimitiveType.Primitive.Char);
1894      break;
1895    case BYTE:
1896      jj_consume_token(BYTE);
1897           ret = new PrimitiveType(token.beginLine, token.beginColumn, token.endLine, token.endColumn, PrimitiveType.Primitive.Byte);
1898      break;
1899    case SHORT:
1900      jj_consume_token(SHORT);
1901            ret = new PrimitiveType(token.beginLine, token.beginColumn, token.endLine, token.endColumn, PrimitiveType.Primitive.Short);
1902      break;
1903    case INT:
1904      jj_consume_token(INT);
1905          ret = new PrimitiveType(token.beginLine, token.beginColumn, token.endLine, token.endColumn, PrimitiveType.Primitive.Int);
1906      break;
1907    case LONG:
1908      jj_consume_token(LONG);
1909           ret = new PrimitiveType(token.beginLine, token.beginColumn, token.endLine, token.endColumn, PrimitiveType.Primitive.Long);
1910      break;
1911    case FLOAT:
1912      jj_consume_token(FLOAT);
1913            ret = new PrimitiveType(token.beginLine, token.beginColumn, token.endLine, token.endColumn, PrimitiveType.Primitive.Float);
1914      break;
1915    case DOUBLE:
1916      jj_consume_token(DOUBLE);
1917             ret = new PrimitiveType(token.beginLine, token.beginColumn, token.endLine, token.endColumn, PrimitiveType.Primitive.Double);
1918      break;
1919    default:
1920      jj_la1[72] = jj_gen;
1921      jj_consume_token(-1);
1922      throw new ParseException();
1923    }
1924  {if (true) return ret;}
1925    throw new Error("Missing return statement in function");
1926  }
1927
1928  final public Type ResultType() {
1929        Type ret;
1930    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1931    case VOID:
1932      jj_consume_token(VOID);
1933                   ret = new VoidType(token.beginLine, token.beginColumn, token.endLine, token.endColumn);
1934      break;
1935    case BOOLEAN:
1936    case BYTE:
1937    case CHAR:
1938    case DOUBLE:
1939    case FLOAT:
1940    case INT:
1941    case LONG:
1942    case SHORT:
1943    case IDENTIFIER:
1944      ret = Type();
1945      break;
1946    default:
1947      jj_la1[73] = jj_gen;
1948      jj_consume_token(-1);
1949      throw new ParseException();
1950    }
1951    {if (true) return ret;}
1952    throw new Error("Missing return statement in function");
1953  }
1954
1955  final public NameExpr Name() {
1956        NameExpr ret;
1957    jj_consume_token(IDENTIFIER);
1958                 ret = new NameExpr(token.beginLine, token.beginColumn, token.endLine, token.endColumn, token.image);
1959    label_37:
1960    while (true) {
1961      if (jj_2_17(2)) {
1962        ;
1963      } else {
1964        break label_37;
1965      }
1966      jj_consume_token(DOT);
1967      jj_consume_token(IDENTIFIER);
1968                                    ret = new QualifiedNameExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, token.image);
1969    }
1970    {if (true) return ret;}
1971    throw new Error("Missing return statement in function");
1972  }
1973
1974  final public List ClassOrInterfaceTypeList() {
1975        List ret = new LinkedList();
1976        ClassOrInterfaceType type;
1977        List annotations= null;
1978        AnnotationExpr ann;
1979    label_38:
1980    while (true) {
1981      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1982      case AT:
1983        ;
1984        break;
1985      default:
1986        jj_la1[74] = jj_gen;
1987        break label_38;
1988      }
1989      ann = Annotation();
1990                          annotations = add(annotations, ann);
1991    }
1992    type = ClassOrInterfaceType();
1993                                                                                                    type.setAnnotations(annotations); ret.add(type); annotations=null;
1994    label_39:
1995    while (true) {
1996      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1997      case COMMA:
1998        ;
1999        break;
2000      default:
2001        jj_la1[75] = jj_gen;
2002        break label_39;
2003      }
2004      jj_consume_token(COMMA);
2005      label_40:
2006      while (true) {
2007        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2008        case AT:
2009          ;
2010          break;
2011        default:
2012          jj_la1[76] = jj_gen;
2013          break label_40;
2014        }
2015        ann = Annotation();
2016                                                                                                                                                                                                       annotations = add(annotations, ann);
2017      }
2018      type = ClassOrInterfaceType();
2019                                                                                                                                                                                                                                                                                 type.setAnnotations(annotations); ret.add(type); annotations=null;
2020    }
2021    {if (true) return ret;}
2022    throw new Error("Missing return statement in function");
2023  }
2024
2025  final public NameExpr SimpleName() {
2026    NameExpr ret;
2027    jj_consume_token(IDENTIFIER);
2028                 ret = new NameExpr(token.beginLine, token.beginColumn, token.endLine, token.endColumn, token.image);
2029    {if (true) return ret;}
2030    throw new Error("Missing return statement in function");
2031  }
2032
2033  final public List NameList() {
2034        List ret = new LinkedList();
2035        NameExpr name;
2036    name = Name();
2037                  ret.add(name);
2038    label_41:
2039    while (true) {
2040      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2041      case COMMA:
2042        ;
2043        break;
2044      default:
2045        jj_la1[77] = jj_gen;
2046        break label_41;
2047      }
2048      jj_consume_token(COMMA);
2049      name = Name();
2050                                                          ret.add(name);
2051    }
2052    {if (true) return ret;}
2053    throw new Error("Missing return statement in function");
2054  }
2055
2056/*
2057 * Expression syntax follows.
2058 */
2059  final public Expression Expression() {
2060        Expression ret;
2061        AssignExpr.Operator op;
2062        Expression value;
2063        Statement lambdaBody = null;
2064        List params = null;
2065        List typeArgs = null;
2066        VariableDeclaratorId id = null;
2067        Expression inner = null;
2068    ret = ConditionalExpression();
2069    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2070    case ASSIGN:
2071    case PLUSASSIGN:
2072    case MINUSASSIGN:
2073    case STARASSIGN:
2074    case SLASHASSIGN:
2075    case ANDASSIGN:
2076    case ORASSIGN:
2077    case XORASSIGN:
2078    case REMASSIGN:
2079    case LSHIFTASSIGN:
2080    case RSIGNEDSHIFTASSIGN:
2081    case RUNSIGNEDSHIFTASSIGN:
2082    case ARROW:
2083    case DOUBLECOLON:
2084      if (jj_2_18(2)) {
2085        op = AssignmentOperator();
2086        value = Expression();
2087                                                     ret = new AssignExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, value, op);
2088      } else {
2089        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2090        case ARROW:
2091          jj_consume_token(ARROW);
2092          lambdaBody = LambdaBody();
2093     if (ret instanceof CastExpr)
2094     {
2095       inner = generateLambda(((CastExpr)ret).getExpr(), lambdaBody);
2096       ((CastExpr)ret).setExpr(inner);
2097     }
2098     else if (ret instanceof ConditionalExpr){
2099         ConditionalExpr ce = (ConditionalExpr) ret;
2100         if(ce.getElseExpr() != null){
2101            ce.setElseExpr(generateLambda(ce.getElseExpr(), lambdaBody));
2102         }
2103     }
2104     else
2105     {
2106       ret = generateLambda(ret, lambdaBody);
2107     }
2108          break;
2109        case DOUBLECOLON:
2110          jj_consume_token(DOUBLECOLON);
2111          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2112          case LT:
2113            typeArgs = TypeParameters();
2114                                        typeArgs.remove(0);
2115            break;
2116          default:
2117            jj_la1[78] = jj_gen;
2118            ;
2119          }
2120          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2121          case IDENTIFIER:
2122            jj_consume_token(IDENTIFIER);
2123            break;
2124          case NEW:
2125            jj_consume_token(NEW);
2126            break;
2127          default:
2128            jj_la1[79] = jj_gen;
2129            jj_consume_token(-1);
2130            throw new ParseException();
2131          }
2132   ret = new MethodReferenceExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, typeArgs, token.image);
2133          break;
2134        default:
2135          jj_la1[80] = jj_gen;
2136          jj_consume_token(-1);
2137          throw new ParseException();
2138        }
2139      }
2140      break;
2141    default:
2142      jj_la1[81] = jj_gen;
2143      ;
2144    }
2145    {if (true) return ret;}
2146    throw new Error("Missing return statement in function");
2147  }
2148
2149  final public AssignExpr.Operator AssignmentOperator() {
2150        AssignExpr.Operator ret;
2151    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2152    case ASSIGN:
2153      jj_consume_token(ASSIGN);
2154               ret = AssignExpr.Operator.assign;
2155      break;
2156    case STARASSIGN:
2157      jj_consume_token(STARASSIGN);
2158               ret = AssignExpr.Operator.star;
2159      break;
2160    case SLASHASSIGN:
2161      jj_consume_token(SLASHASSIGN);
2162               ret = AssignExpr.Operator.slash;
2163      break;
2164    case REMASSIGN:
2165      jj_consume_token(REMASSIGN);
2166               ret = AssignExpr.Operator.rem;
2167      break;
2168    case PLUSASSIGN:
2169      jj_consume_token(PLUSASSIGN);
2170               ret = AssignExpr.Operator.plus;
2171      break;
2172    case MINUSASSIGN:
2173      jj_consume_token(MINUSASSIGN);
2174               ret = AssignExpr.Operator.minus;
2175      break;
2176    case LSHIFTASSIGN:
2177      jj_consume_token(LSHIFTASSIGN);
2178               ret = AssignExpr.Operator.lShift;
2179      break;
2180    case RSIGNEDSHIFTASSIGN:
2181      jj_consume_token(RSIGNEDSHIFTASSIGN);
2182               ret = AssignExpr.Operator.rSignedShift;
2183      break;
2184    case RUNSIGNEDSHIFTASSIGN:
2185      jj_consume_token(RUNSIGNEDSHIFTASSIGN);
2186               ret = AssignExpr.Operator.rUnsignedShift;
2187      break;
2188    case ANDASSIGN:
2189      jj_consume_token(ANDASSIGN);
2190               ret = AssignExpr.Operator.and;
2191      break;
2192    case XORASSIGN:
2193      jj_consume_token(XORASSIGN);
2194               ret = AssignExpr.Operator.xor;
2195      break;
2196    case ORASSIGN:
2197      jj_consume_token(ORASSIGN);
2198               ret = AssignExpr.Operator.or;
2199      break;
2200    default:
2201      jj_la1[82] = jj_gen;
2202      jj_consume_token(-1);
2203      throw new ParseException();
2204    }
2205    {if (true) return ret;}
2206    throw new Error("Missing return statement in function");
2207  }
2208
2209  final public Expression ConditionalExpression() {
2210        Expression ret;
2211        Expression left;
2212        Expression right;
2213    ret = ConditionalOrExpression();
2214    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2215    case HOOK:
2216      jj_consume_token(HOOK);
2217      left = Expression();
2218      jj_consume_token(COLON);
2219      right = ConditionalExpression();
2220                                                                  ret = new ConditionalExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, left, right);
2221      break;
2222    default:
2223      jj_la1[83] = jj_gen;
2224      ;
2225    }
2226    {if (true) return ret;}
2227    throw new Error("Missing return statement in function");
2228  }
2229
2230  final public Expression ConditionalOrExpression() {
2231        Expression ret;
2232        Expression right;
2233    ret = ConditionalAndExpression();
2234    label_42:
2235    while (true) {
2236      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2237      case SC_OR:
2238        ;
2239        break;
2240      default:
2241        jj_la1[84] = jj_gen;
2242        break label_42;
2243      }
2244      jj_consume_token(SC_OR);
2245      right = ConditionalAndExpression();
2246                                                                               ret = new BinaryExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, right, BinaryExpr.Operator.or);
2247    }
2248    {if (true) return ret;}
2249    throw new Error("Missing return statement in function");
2250  }
2251
2252  final public Expression ConditionalAndExpression() {
2253        Expression ret;
2254        Expression right;
2255    ret = InclusiveOrExpression();
2256    label_43:
2257    while (true) {
2258      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2259      case SC_AND:
2260        ;
2261        break;
2262      default:
2263        jj_la1[85] = jj_gen;
2264        break label_43;
2265      }
2266      jj_consume_token(SC_AND);
2267      right = InclusiveOrExpression();
2268                                                                         ret = new BinaryExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, right, BinaryExpr.Operator.and);
2269    }
2270    {if (true) return ret;}
2271    throw new Error("Missing return statement in function");
2272  }
2273
2274  final public Expression InclusiveOrExpression() {
2275        Expression ret;
2276        Expression right;
2277    ret = ExclusiveOrExpression();
2278    label_44:
2279    while (true) {
2280      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2281      case BIT_OR:
2282        ;
2283        break;
2284      default:
2285        jj_la1[86] = jj_gen;
2286        break label_44;
2287      }
2288      jj_consume_token(BIT_OR);
2289      right = ExclusiveOrExpression();
2290                                                                        ret = new BinaryExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, right, BinaryExpr.Operator.binOr);
2291    }
2292    {if (true) return ret;}
2293    throw new Error("Missing return statement in function");
2294  }
2295
2296  final public Expression ExclusiveOrExpression() {
2297        Expression ret;
2298        Expression right;
2299    ret = AndExpression();
2300    label_45:
2301    while (true) {
2302      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2303      case XOR:
2304        ;
2305        break;
2306      default:
2307        jj_la1[87] = jj_gen;
2308        break label_45;
2309      }
2310      jj_consume_token(XOR);
2311      right = AndExpression();
2312                                                        ret = new BinaryExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, right, BinaryExpr.Operator.xor);
2313    }
2314    {if (true) return ret;}
2315    throw new Error("Missing return statement in function");
2316  }
2317
2318  final public Expression AndExpression() {
2319        Expression ret;
2320        Expression right;
2321    ret = EqualityExpression();
2322    label_46:
2323    while (true) {
2324      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2325      case BIT_AND:
2326        ;
2327        break;
2328      default:
2329        jj_la1[88] = jj_gen;
2330        break label_46;
2331      }
2332      jj_consume_token(BIT_AND);
2333      right = EqualityExpression();
2334                                                                  ret = new BinaryExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, right, BinaryExpr.Operator.binAnd);
2335    }
2336    {if (true) return ret;}
2337    throw new Error("Missing return statement in function");
2338  }
2339
2340  final public Expression EqualityExpression() {
2341        Expression ret;
2342        Expression right;
2343        BinaryExpr.Operator op;
2344    ret = InstanceOfExpression();
2345    label_47:
2346    while (true) {
2347      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2348      case EQ:
2349      case NE:
2350        ;
2351        break;
2352      default:
2353        jj_la1[89] = jj_gen;
2354        break label_47;
2355      }
2356      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2357      case EQ:
2358        jj_consume_token(EQ);
2359             op = BinaryExpr.Operator.equals;
2360        break;
2361      case NE:
2362        jj_consume_token(NE);
2363             op = BinaryExpr.Operator.notEquals;
2364        break;
2365      default:
2366        jj_la1[90] = jj_gen;
2367        jj_consume_token(-1);
2368        throw new ParseException();
2369      }
2370      right = InstanceOfExpression();
2371                                       ret = new BinaryExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, right, op);
2372    }
2373    {if (true) return ret;}
2374    throw new Error("Missing return statement in function");
2375  }
2376
2377  final public Expression InstanceOfExpression() {
2378        Expression ret;
2379        Type type;
2380    ret = RelationalExpression();
2381    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2382    case INSTANCEOF:
2383      jj_consume_token(INSTANCEOF);
2384      type = Type();
2385                                                              ret = new InstanceOfExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, type);
2386      break;
2387    default:
2388      jj_la1[91] = jj_gen;
2389      ;
2390    }
2391    {if (true) return ret;}
2392    throw new Error("Missing return statement in function");
2393  }
2394
2395  final public Expression RelationalExpression() {
2396        Expression ret;
2397        Expression right;
2398        BinaryExpr.Operator op;
2399    ret = ShiftExpression();
2400    label_48:
2401    while (true) {
2402      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2403      case LT:
2404      case LE:
2405      case GE:
2406      case GT:
2407        ;
2408        break;
2409      default:
2410        jj_la1[92] = jj_gen;
2411        break label_48;
2412      }
2413      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2414      case LT:
2415        jj_consume_token(LT);
2416                 op = BinaryExpr.Operator.less;
2417        break;
2418      case GT:
2419        jj_consume_token(GT);
2420                 op = BinaryExpr.Operator.greater;
2421        break;
2422      case LE:
2423        jj_consume_token(LE);
2424                 op = BinaryExpr.Operator.lessEquals;
2425        break;
2426      case GE:
2427        jj_consume_token(GE);
2428                 op = BinaryExpr.Operator.greaterEquals;
2429        break;
2430      default:
2431        jj_la1[93] = jj_gen;
2432        jj_consume_token(-1);
2433        throw new ParseException();
2434      }
2435      right = ShiftExpression();
2436                                      ret = new BinaryExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, right, op);
2437    }
2438    {if (true) return ret;}
2439    throw new Error("Missing return statement in function");
2440  }
2441
2442  final public Expression ShiftExpression() {
2443        Expression ret;
2444        Expression right;
2445        BinaryExpr.Operator op;
2446    ret = AdditiveExpression();
2447    label_49:
2448    while (true) {
2449      if (jj_2_19(1)) {
2450        ;
2451      } else {
2452        break label_49;
2453      }
2454      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2455      case LSHIFT:
2456        jj_consume_token(LSHIFT);
2457                             op = BinaryExpr.Operator.lShift;
2458        break;
2459      default:
2460        jj_la1[94] = jj_gen;
2461        if (jj_2_20(1)) {
2462          RSIGNEDSHIFT();
2463                             op = BinaryExpr.Operator.rSignedShift;
2464        } else if (jj_2_21(1)) {
2465          RUNSIGNEDSHIFT();
2466                             op = BinaryExpr.Operator.rUnsignedShift;
2467        } else {
2468          jj_consume_token(-1);
2469          throw new ParseException();
2470        }
2471      }
2472      right = AdditiveExpression();
2473                                         ret = new BinaryExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, right, op);
2474    }
2475    {if (true) return ret;}
2476    throw new Error("Missing return statement in function");
2477  }
2478
2479  final public Expression AdditiveExpression() {
2480        Expression ret;
2481        Expression right;
2482        BinaryExpr.Operator op;
2483    ret = MultiplicativeExpression();
2484    label_50:
2485    while (true) {
2486      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2487      case PLUS:
2488      case MINUS:
2489        ;
2490        break;
2491      default:
2492        jj_la1[95] = jj_gen;
2493        break label_50;
2494      }
2495      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2496      case PLUS:
2497        jj_consume_token(PLUS);
2498                op = BinaryExpr.Operator.plus;
2499        break;
2500      case MINUS:
2501        jj_consume_token(MINUS);
2502                op = BinaryExpr.Operator.minus;
2503        break;
2504      default:
2505        jj_la1[96] = jj_gen;
2506        jj_consume_token(-1);
2507        throw new ParseException();
2508      }
2509      right = MultiplicativeExpression();
2510                                               ret = new BinaryExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, right, op);
2511    }
2512    {if (true) return ret;}
2513    throw new Error("Missing return statement in function");
2514  }
2515
2516  final public Expression MultiplicativeExpression() {
2517        Expression ret;
2518        Expression right;
2519        BinaryExpr.Operator op;
2520    ret = UnaryExpression();
2521    label_51:
2522    while (true) {
2523      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2524      case STAR:
2525      case SLASH:
2526      case REM:
2527        ;
2528        break;
2529      default:
2530        jj_la1[97] = jj_gen;
2531        break label_51;
2532      }
2533      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2534      case STAR:
2535        jj_consume_token(STAR);
2536                op = BinaryExpr.Operator.times;
2537        break;
2538      case SLASH:
2539        jj_consume_token(SLASH);
2540                op = BinaryExpr.Operator.divide;
2541        break;
2542      case REM:
2543        jj_consume_token(REM);
2544                op = BinaryExpr.Operator.remainder;
2545        break;
2546      default:
2547        jj_la1[98] = jj_gen;
2548        jj_consume_token(-1);
2549        throw new ParseException();
2550      }
2551      right = UnaryExpression();
2552                                      ret = new BinaryExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, right, op);
2553    }
2554    {if (true) return ret;}
2555    throw new Error("Missing return statement in function");
2556  }
2557
2558  final public Expression UnaryExpression() {
2559        Expression ret;
2560        UnaryExpr.Operator op;
2561        int line = 0;
2562        int column = 0;
2563    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2564    case INCR:
2565      ret = PreIncrementExpression();
2566      break;
2567    case DECR:
2568      ret = PreDecrementExpression();
2569      break;
2570    case PLUS:
2571    case MINUS:
2572      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2573      case PLUS:
2574        jj_consume_token(PLUS);
2575                  op = UnaryExpr.Operator.positive; line=token.beginLine; column=token.beginColumn;
2576        break;
2577      case MINUS:
2578        jj_consume_token(MINUS);
2579                  op = UnaryExpr.Operator.negative; line=token.beginLine; column=token.beginColumn;
2580        break;
2581      default:
2582        jj_la1[99] = jj_gen;
2583        jj_consume_token(-1);
2584        throw new ParseException();
2585      }
2586      ret = UnaryExpression();
2587                 if(op == UnaryExpr.Operator.negative) {
2588                        if (ret instanceof IntegerLiteralExpr && ((IntegerLiteralExpr)ret).isMinValue()) {
2589                                ret = new IntegerLiteralMinValueExpr(line, column, token.endLine, token.endColumn);
2590                        } else if (ret instanceof LongLiteralExpr && ((LongLiteralExpr)ret).isMinValue()) {
2591                                ret = new LongLiteralMinValueExpr(line, column, token.endLine, token.endColumn);
2592                        } else {
2593                                ret = new UnaryExpr(line, column, token.endLine, token.endColumn,ret, op);
2594                        }
2595                 } else {
2596                        ret = new UnaryExpr(line, column, token.endLine, token.endColumn,ret, op);
2597                 }
2598      break;
2599    case BOOLEAN:
2600    case BYTE:
2601    case CHAR:
2602    case DOUBLE:
2603    case FALSE:
2604    case FLOAT:
2605    case INT:
2606    case LONG:
2607    case NEW:
2608    case NULL:
2609    case SHORT:
2610    case SUPER:
2611    case THIS:
2612    case TRUE:
2613    case VOID:
2614    case LONG_LITERAL:
2615    case INTEGER_LITERAL:
2616    case FLOATING_POINT_LITERAL:
2617    case CHARACTER_LITERAL:
2618    case STRING_LITERAL:
2619    case IDENTIFIER:
2620    case LPAREN:
2621    case BANG:
2622    case TILDE:
2623      ret = UnaryExpressionNotPlusMinus();
2624      break;
2625    default:
2626      jj_la1[100] = jj_gen;
2627      jj_consume_token(-1);
2628      throw new ParseException();
2629    }
2630    {if (true) return ret;}
2631    throw new Error("Missing return statement in function");
2632  }
2633
2634  final public Expression PreIncrementExpression() {
2635        Expression ret;
2636        int line;
2637        int column;
2638    jj_consume_token(INCR);
2639        line=token.beginLine; column=token.beginColumn;
2640    ret = UnaryExpression();
2641                                                                                   ret = new UnaryExpr(line, column, token.endLine, token.endColumn,ret, UnaryExpr.Operator.preIncrement);
2642    {if (true) return ret;}
2643    throw new Error("Missing return statement in function");
2644  }
2645
2646  final public Expression PreDecrementExpression() {
2647        Expression ret;
2648        int line;
2649        int column;
2650    jj_consume_token(DECR);
2651        line=token.beginLine; column=token.beginColumn;
2652    ret = UnaryExpression();
2653                                                                                   ret = new UnaryExpr(line, column, token.endLine, token.endColumn,ret, UnaryExpr.Operator.preDecrement);
2654    {if (true) return ret;}
2655    throw new Error("Missing return statement in function");
2656  }
2657
2658  final public Expression UnaryExpressionNotPlusMinus() {
2659        Expression ret;
2660        UnaryExpr.Operator op;
2661        int line = 0;
2662        int column = 0;
2663    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2664    case BANG:
2665    case TILDE:
2666      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2667      case TILDE:
2668        jj_consume_token(TILDE);
2669                  op = UnaryExpr.Operator.inverse; line=token.beginLine; column=token.beginColumn;
2670        break;
2671      case BANG:
2672        jj_consume_token(BANG);
2673                  op = UnaryExpr.Operator.not;     line=token.beginLine; column=token.beginColumn;
2674        break;
2675      default:
2676        jj_la1[101] = jj_gen;
2677        jj_consume_token(-1);
2678        throw new ParseException();
2679      }
2680      ret = UnaryExpression();
2681                                      ret = new UnaryExpr(line, column, token.endLine, token.endColumn,ret, op);
2682      break;
2683    default:
2684      jj_la1[102] = jj_gen;
2685      if (jj_2_22(2147483647)) {
2686        ret = CastExpression();
2687      } else {
2688        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2689        case BOOLEAN:
2690        case BYTE:
2691        case CHAR:
2692        case DOUBLE:
2693        case FALSE:
2694        case FLOAT:
2695        case INT:
2696        case LONG:
2697        case NEW:
2698        case NULL:
2699        case SHORT:
2700        case SUPER:
2701        case THIS:
2702        case TRUE:
2703        case VOID:
2704        case LONG_LITERAL:
2705        case INTEGER_LITERAL:
2706        case FLOATING_POINT_LITERAL:
2707        case CHARACTER_LITERAL:
2708        case STRING_LITERAL:
2709        case IDENTIFIER:
2710        case LPAREN:
2711          ret = PostfixExpression();
2712          break;
2713        default:
2714          jj_la1[103] = jj_gen;
2715          jj_consume_token(-1);
2716          throw new ParseException();
2717        }
2718      }
2719    }
2720    {if (true) return ret;}
2721    throw new Error("Missing return statement in function");
2722  }
2723
2724  final public Expression PostfixExpression() {
2725        Expression ret;
2726        UnaryExpr.Operator op;
2727    ret = PrimaryExpression();
2728    if (jj_2_23(2)) {
2729      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2730      case INCR:
2731        jj_consume_token(INCR);
2732             op = UnaryExpr.Operator.posIncrement;
2733        break;
2734      case DECR:
2735        jj_consume_token(DECR);
2736             op = UnaryExpr.Operator.posDecrement;
2737        break;
2738      default:
2739        jj_la1[104] = jj_gen;
2740        jj_consume_token(-1);
2741        throw new ParseException();
2742      }
2743        ret = new UnaryExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, op);
2744    } else {
2745      ;
2746    }
2747    {if (true) return ret;}
2748    throw new Error("Missing return statement in function");
2749  }
2750
2751  final public Expression CastExpression() {
2752        Expression ret;
2753        Type type;
2754        int line;
2755        int column;
2756        AnnotationExpr ann;
2757        List annotations = null;
2758    jj_consume_token(LPAREN);
2759       line=token.beginLine; column=token.beginColumn;
2760    label_52:
2761    while (true) {
2762      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2763      case AT:
2764        ;
2765        break;
2766      default:
2767        jj_la1[105] = jj_gen;
2768        break label_52;
2769      }
2770      ann = Annotation();
2771                           annotations = add(annotations, ann);
2772    }
2773    if (jj_2_24(2)) {
2774      type = PrimitiveType();
2775      jj_consume_token(RPAREN);
2776      ret = UnaryExpression();
2777                                                               type.setAnnotations(annotations); ret = new CastExpr(line, column, token.endLine, token.endColumn,type, ret);
2778    } else {
2779      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2780      case BOOLEAN:
2781      case BYTE:
2782      case CHAR:
2783      case DOUBLE:
2784      case FLOAT:
2785      case INT:
2786      case LONG:
2787      case SHORT:
2788      case IDENTIFIER:
2789        type = ReferenceType();
2790        jj_consume_token(RPAREN);
2791        ret = UnaryExpressionNotPlusMinus();
2792                                                                           type.setAnnotations(annotations); ret = new CastExpr(line, column, token.endLine, token.endColumn,type, ret);
2793        break;
2794      default:
2795        jj_la1[106] = jj_gen;
2796        jj_consume_token(-1);
2797        throw new ParseException();
2798      }
2799    }
2800    {if (true) return ret;}
2801    throw new Error("Missing return statement in function");
2802  }
2803
2804  final public Expression PrimaryExpression() {
2805        Expression ret;
2806        Expression inner;
2807    ret = PrimaryPrefix();
2808    label_53:
2809    while (true) {
2810      if (jj_2_25(2)) {
2811        ;
2812      } else {
2813        break label_53;
2814      }
2815      ret = PrimarySuffix(ret);
2816    }
2817    {if (true) return ret;}
2818    throw new Error("Missing return statement in function");
2819  }
2820
2821  final public Expression PrimaryExpressionWithoutSuperSuffix() {
2822        Expression ret;
2823        Expression inner;
2824    ret = PrimaryPrefix();
2825    label_54:
2826    while (true) {
2827      if (jj_2_26(2147483647)) {
2828        ;
2829      } else {
2830        break label_54;
2831      }
2832      ret = PrimarySuffixWithoutSuper(ret);
2833    }
2834    {if (true) return ret;}
2835    throw new Error("Missing return statement in function");
2836  }
2837
2838  final public Expression PrimaryPrefix() {
2839        Expression ret = null;
2840        NameExpr name;
2841        List typeArgs = null;
2842        List args = null;
2843        boolean hasArgs = false;
2844        boolean isLambda = false;
2845        Type type;
2846        int line;
2847        int column;
2848        Parameter p = null;
2849        VariableDeclaratorId id = null;
2850    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2851    case FALSE:
2852    case NULL:
2853    case TRUE:
2854    case LONG_LITERAL:
2855    case INTEGER_LITERAL:
2856    case FLOATING_POINT_LITERAL:
2857    case CHARACTER_LITERAL:
2858    case STRING_LITERAL:
2859      ret = Literal();
2860      break;
2861    case THIS:
2862      jj_consume_token(THIS);
2863                   ret = new ThisExpr(token.beginLine, token.beginColumn, token.endLine, token.endColumn, null);
2864      break;
2865    case SUPER:
2866      jj_consume_token(SUPER);
2867                    ret = new SuperExpr(token.beginLine, token.beginColumn, token.endLine, token.endColumn, null);
2868      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2869      case DOT:
2870        jj_consume_token(DOT);
2871        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2872        case LT:
2873        case 132:
2874          typeArgs = TypeArguments();
2875                                        typeArgs.remove(0);
2876          break;
2877        default:
2878          jj_la1[107] = jj_gen;
2879          ;
2880        }
2881        name = SimpleName();
2882        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2883        case LPAREN:
2884          args = Arguments();
2885                                hasArgs=true;
2886          break;
2887        default:
2888          jj_la1[108] = jj_gen;
2889          ;
2890        }
2891                        if (hasArgs) {
2892                                MethodCallExpr m = new MethodCallExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, typeArgs, null, args);
2893                                m.setNameExpr(name);
2894                                ret = m;
2895                        } else {
2896                                FieldAccessExpr f = new FieldAccessExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, null, null);
2897                                f.setFieldExpr(name);
2898                                ret = f;
2899                        }
2900        break;
2901      case DOUBLECOLON:
2902        jj_consume_token(DOUBLECOLON);
2903        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2904        case LT:
2905          typeArgs = TypeParameters();
2906                                                    typeArgs.remove(0);
2907          break;
2908        default:
2909          jj_la1[109] = jj_gen;
2910          ;
2911        }
2912        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2913        case IDENTIFIER:
2914          jj_consume_token(IDENTIFIER);
2915          break;
2916        case NEW:
2917          jj_consume_token(NEW);
2918          break;
2919        default:
2920          jj_la1[110] = jj_gen;
2921          jj_consume_token(-1);
2922          throw new ParseException();
2923        }
2924                  ret = new MethodReferenceExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, typeArgs, token.image);
2925        break;
2926      case LPAREN:
2927        args = Arguments();
2928                             new MethodCallExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, typeArgs, null, args);
2929        break;
2930      default:
2931        jj_la1[111] = jj_gen;
2932        jj_consume_token(-1);
2933        throw new ParseException();
2934      }
2935      break;
2936    case LPAREN:
2937      jj_consume_token(LPAREN);
2938               line=token.beginLine; column=token.beginColumn;
2939      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2940      case ABSTRACT:
2941      case BOOLEAN:
2942      case BYTE:
2943      case CHAR:
2944      case DOUBLE:
2945      case FALSE:
2946      case FINAL:
2947      case FLOAT:
2948      case INT:
2949      case LONG:
2950      case NATIVE:
2951      case NEW:
2952      case NULL:
2953      case PRIVATE:
2954      case PROTECTED:
2955      case PUBLIC:
2956      case SHORT:
2957      case STATIC:
2958      case STRICTFP:
2959      case SUPER:
2960      case SYNCHRONIZED:
2961      case THIS:
2962      case TRANSIENT:
2963      case TRUE:
2964      case VOID:
2965      case VOLATILE:
2966      case LONG_LITERAL:
2967      case INTEGER_LITERAL:
2968      case FLOATING_POINT_LITERAL:
2969      case CHARACTER_LITERAL:
2970      case STRING_LITERAL:
2971      case IDENTIFIER:
2972      case LPAREN:
2973      case AT:
2974      case BANG:
2975      case TILDE:
2976      case INCR:
2977      case DECR:
2978      case PLUS:
2979      case MINUS:
2980        if (jj_2_27(2147483647)) {
2981          p = FormalParameter();
2982                                                                       isLambda = true;
2983          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2984          case COMMA:
2985            args = FormalLambdaParameters();
2986            break;
2987          default:
2988            jj_la1[112] = jj_gen;
2989            ;
2990          }
2991        } else {
2992          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2993          case BOOLEAN:
2994          case BYTE:
2995          case CHAR:
2996          case DOUBLE:
2997          case FALSE:
2998          case FLOAT:
2999          case INT:
3000          case LONG:
3001          case NEW:
3002          case NULL:
3003          case SHORT:
3004          case SUPER:
3005          case THIS:
3006          case TRUE:
3007          case VOID:
3008          case LONG_LITERAL:
3009          case INTEGER_LITERAL:
3010          case FLOATING_POINT_LITERAL:
3011          case CHARACTER_LITERAL:
3012          case STRING_LITERAL:
3013          case IDENTIFIER:
3014          case LPAREN:
3015          case BANG:
3016          case TILDE:
3017          case INCR:
3018          case DECR:
3019          case PLUS:
3020          case MINUS:
3021            ret = Expression();
3022            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3023            case COMMA:
3024              args = InferredLambdaParameters();
3025                                                                          isLambda = true;
3026              break;
3027            default:
3028              jj_la1[113] = jj_gen;
3029              ;
3030            }
3031            break;
3032          default:
3033            jj_la1[114] = jj_gen;
3034            jj_consume_token(-1);
3035            throw new ParseException();
3036          }
3037        }
3038        break;
3039      default:
3040        jj_la1[115] = jj_gen;
3041        ;
3042      }
3043      jj_consume_token(RPAREN);
3044                           if(!isLambda) { ret = new EnclosedExpr(line, column, token.endLine, token.endColumn,ret);}
3045                           else{
3046                                  if(ret != null){
3047                                          if(ret instanceof NameExpr)
3048                                          {
3049                                            id = new VariableDeclaratorId(ret.getBeginLine(), ret.getBeginColumn(), ret.getEndLine(), ret.getEndColumn(), ((NameExpr)ret).getName(), 0);
3050                                            p = new Parameter(ret.getBeginLine(), ret.getBeginColumn(), ret.getEndLine(), ret.getEndColumn(), 0, null, new UnknownType(), false, id);
3051                                          }
3052
3053                                        }
3054                                        args = add(0, args, p);
3055                                        ret = new LambdaExpr(p.getBeginLine(), p.getBeginColumn(), token.endLine, token.endColumn, args, null, true);
3056                                }
3057      break;
3058    case NEW:
3059      ret = AllocationExpression(null);
3060      break;
3061    default:
3062      jj_la1[119] = jj_gen;
3063      if (jj_2_28(2147483647)) {
3064        type = ResultType();
3065        jj_consume_token(DOT);
3066        jj_consume_token(CLASS);
3067                                             ret = new ClassExpr(type.getBeginLine(), type.getBeginColumn(), token.endLine, token.endColumn, type);
3068      } else if (jj_2_29(2147483647)) {
3069        type = ResultType();
3070        jj_consume_token(DOUBLECOLON);
3071        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3072        case LT:
3073          typeArgs = TypeParameters();
3074                                                                  typeArgs.remove(0);
3075          break;
3076        default:
3077          jj_la1[116] = jj_gen;
3078          ;
3079        }
3080        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3081        case IDENTIFIER:
3082          jj_consume_token(IDENTIFIER);
3083          break;
3084        case NEW:
3085          jj_consume_token(NEW);
3086          break;
3087        default:
3088          jj_la1[117] = jj_gen;
3089          jj_consume_token(-1);
3090          throw new ParseException();
3091        }
3092                  ret = new TypeExpr(type.getBeginLine(), type.getBeginColumn(), type.getEndLine(), type.getEndColumn(), type);
3093                  ret = new MethodReferenceExpr(ret.getBeginLine(), ret.getBeginColumn(), token.endLine, token.endColumn, ret, typeArgs, token.image);
3094      } else {
3095        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3096        case IDENTIFIER:
3097          name = SimpleName();
3098                                      line=token.beginLine; column=token.beginColumn;
3099          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3100          case LPAREN:
3101            args = Arguments();
3102                                      hasArgs=true;
3103            break;
3104          default:
3105            jj_la1[118] = jj_gen;
3106            ;
3107          }
3108                        if (hasArgs) {
3109                                MethodCallExpr m = new MethodCallExpr(line, column, token.endLine, token.endColumn, null, null, null, args);
3110                                m.setNameExpr(name);
3111                                ret = m;
3112                        } else {
3113                                ret = name;
3114                        }
3115          break;
3116        default:
3117          jj_la1[120] = jj_gen;
3118          jj_consume_token(-1);
3119          throw new ParseException();
3120        }
3121      }
3122    }
3123    {if (true) return ret;}
3124    throw new Error("Missing return statement in function");
3125  }
3126
3127  final public Expression PrimarySuffix(Expression scope) {
3128        Expression ret;
3129    if (jj_2_30(2)) {
3130      ret = PrimarySuffixWithoutSuper(scope);
3131    } else {
3132      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3133      case DOT:
3134        jj_consume_token(DOT);
3135        jj_consume_token(SUPER);
3136                      ret = new SuperExpr(scope.getBeginLine(), scope.getBeginColumn(), token.endLine, token.endColumn, scope);
3137        break;
3138      default:
3139        jj_la1[121] = jj_gen;
3140        jj_consume_token(-1);
3141        throw new ParseException();
3142      }
3143    }
3144    {if (true) return ret;}
3145    throw new Error("Missing return statement in function");
3146  }
3147
3148  final public Expression PrimarySuffixWithoutSuper(Expression scope) {
3149        Expression ret;
3150        List typeArgs = null;
3151        List args = null;
3152        boolean hasArgs = false;
3153        NameExpr name;
3154    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3155    case DOT:
3156      jj_consume_token(DOT);
3157      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3158      case THIS:
3159        jj_consume_token(THIS);
3160                         ret = new ThisExpr(scope.getBeginLine(), scope.getBeginColumn(), token.endLine, token.endColumn, scope);
3161        break;
3162      case NEW:
3163        ret = AllocationExpression(scope);
3164        break;
3165      default:
3166        jj_la1[124] = jj_gen;
3167        if (jj_2_31(2147483647)) {
3168          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3169          case LT:
3170          case 132:
3171            typeArgs = TypeArguments();
3172                                              typeArgs.remove(0);
3173            break;
3174          default:
3175            jj_la1[122] = jj_gen;
3176            ;
3177          }
3178          name = SimpleName();
3179          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3180          case LPAREN:
3181            args = Arguments();
3182                                      hasArgs=true;
3183            break;
3184          default:
3185            jj_la1[123] = jj_gen;
3186            ;
3187          }
3188                        if (hasArgs) {
3189                                MethodCallExpr m = new MethodCallExpr(scope.getBeginLine(), scope.getBeginColumn(), token.endLine, token.endColumn, scope, typeArgs, null, args);
3190                                m.setNameExpr(name);
3191                                ret = m;
3192                        } else {
3193                                FieldAccessExpr f =  new FieldAccessExpr(scope.getBeginLine(), scope.getBeginColumn(), token.endLine, token.endColumn, scope, typeArgs, null);
3194                                f.setFieldExpr(name);
3195                                ret = f;
3196                        }
3197        } else {
3198          jj_consume_token(-1);
3199          throw new ParseException();
3200        }
3201      }
3202      break;
3203    case LBRACKET:
3204      jj_consume_token(LBRACKET);
3205      ret = Expression();
3206      jj_consume_token(RBRACKET);
3207                                      ret = new ArrayAccessExpr(scope.getBeginLine(), scope.getBeginColumn(), token.endLine, token.endColumn, scope, ret);
3208      break;
3209    default:
3210      jj_la1[125] = jj_gen;
3211      jj_consume_token(-1);
3212      throw new ParseException();
3213    }
3214    {if (true) return ret;}
3215    throw new Error("Missing return statement in function");
3216  }
3217
3218  final public Expression Literal() {
3219        Expression ret;
3220    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3221    case INTEGER_LITERAL:
3222      jj_consume_token(INTEGER_LITERAL);
3223                        ret = new IntegerLiteralExpr(token.beginLine, token.beginColumn, token.endLine, token.endColumn, token.image);
3224      break;
3225    case LONG_LITERAL:
3226      jj_consume_token(LONG_LITERAL);
3227                        ret = new LongLiteralExpr(token.beginLine, token.beginColumn, token.endLine, token.endColumn, token.image);
3228      break;
3229    case FLOATING_POINT_LITERAL:
3230      jj_consume_token(FLOATING_POINT_LITERAL);
3231                        ret = new DoubleLiteralExpr(token.beginLine, token.beginColumn, token.endLine, token.endColumn, token.image);
3232      break;
3233    case CHARACTER_LITERAL:
3234      jj_consume_token(CHARACTER_LITERAL);
3235                ret = new CharLiteralExpr(token.beginLine, token.beginColumn, token.endLine, token.endColumn, token.image.substring(1, token.image.length()-1));
3236      break;
3237    case STRING_LITERAL:
3238      jj_consume_token(STRING_LITERAL);
3239                ret = new StringLiteralExpr(token.beginLine, token.beginColumn, token.endLine, token.endColumn, token.image.substring(1, token.image.length()-1));
3240      break;
3241    case FALSE:
3242    case TRUE:
3243      ret = BooleanLiteral();
3244      break;
3245    case NULL:
3246      ret = NullLiteral();
3247      break;
3248    default:
3249      jj_la1[126] = jj_gen;
3250      jj_consume_token(-1);
3251      throw new ParseException();
3252    }
3253    {if (true) return ret;}
3254    throw new Error("Missing return statement in function");
3255  }
3256
3257  final public Expression BooleanLiteral() {
3258        Expression ret;
3259    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3260    case TRUE:
3261      jj_consume_token(TRUE);
3262                   ret = new BooleanLiteralExpr(token.beginLine, token.beginColumn, token.endLine, token.endColumn, true);
3263      break;
3264    case FALSE:
3265      jj_consume_token(FALSE);
3266                    ret = new BooleanLiteralExpr(token.beginLine, token.beginColumn, token.endLine, token.endColumn, false);
3267      break;
3268    default:
3269      jj_la1[127] = jj_gen;
3270      jj_consume_token(-1);
3271      throw new ParseException();
3272    }
3273    {if (true) return ret;}
3274    throw new Error("Missing return statement in function");
3275  }
3276
3277  final public Expression NullLiteral() {
3278    jj_consume_token(NULL);
3279    {if (true) return new NullLiteralExpr(token.beginLine, token.beginColumn, token.endLine, token.endColumn);}
3280    throw new Error("Missing return statement in function");
3281  }
3282
3283  final public List Arguments() {
3284        List ret = null;
3285    jj_consume_token(LPAREN);
3286    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3287    case BOOLEAN:
3288    case BYTE:
3289    case CHAR:
3290    case DOUBLE:
3291    case FALSE:
3292    case FLOAT:
3293    case INT:
3294    case LONG:
3295    case NEW:
3296    case NULL:
3297    case SHORT:
3298    case SUPER:
3299    case THIS:
3300    case TRUE:
3301    case VOID:
3302    case LONG_LITERAL:
3303    case INTEGER_LITERAL:
3304    case FLOATING_POINT_LITERAL:
3305    case CHARACTER_LITERAL:
3306    case STRING_LITERAL:
3307    case IDENTIFIER:
3308    case LPAREN:
3309    case BANG:
3310    case TILDE:
3311    case INCR:
3312    case DECR:
3313    case PLUS:
3314    case MINUS:
3315      ret = ArgumentList();
3316      break;
3317    default:
3318      jj_la1[128] = jj_gen;
3319      ;
3320    }
3321    jj_consume_token(RPAREN);
3322    {if (true) return ret;}
3323    throw new Error("Missing return statement in function");
3324  }
3325
3326  final public List ArgumentList() {
3327        List ret = new LinkedList();
3328        Expression expr;
3329    expr = Expression();
3330                        ret.add(expr);
3331    label_55:
3332    while (true) {
3333      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3334      case COMMA:
3335        ;
3336        break;
3337      default:
3338        jj_la1[129] = jj_gen;
3339        break label_55;
3340      }
3341      jj_consume_token(COMMA);
3342      expr = Expression();
3343                                                                     ret.add(expr);
3344    }
3345    {if (true) return ret;}
3346    throw new Error("Missing return statement in function");
3347  }
3348
3349  final public Expression AllocationExpression(Expression scope) {
3350        Expression ret;
3351        ArrayCreationExpr arrayExpr;
3352        Type type;
3353        Object[] arr = null;
3354        List typeArgs = null;
3355        List anonymousBody = null;
3356        List args;
3357        int line;
3358        int column;
3359        List annotations = null;
3360        AnnotationExpr ann;
3361    jj_consume_token(NEW);
3362          if(scope==null) {line=token.beginLine; column=token.beginColumn;} else {line=scope.getBeginLine(); column=scope.getBeginColumn();}
3363    label_56:
3364    while (true) {
3365      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3366      case AT:
3367        ;
3368        break;
3369      default:
3370        jj_la1[130] = jj_gen;
3371        break label_56;
3372      }
3373      ann = Annotation();
3374                          annotations = add(annotations, ann);
3375    }
3376    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3377    case BOOLEAN:
3378    case BYTE:
3379    case CHAR:
3380    case DOUBLE:
3381    case FLOAT:
3382    case INT:
3383    case LONG:
3384    case SHORT:
3385      type = PrimitiveType();
3386                                  type.setAnnotations(annotations);
3387      arr = ArrayDimsAndInits();
3388            arrayExpr = new ArrayCreationExpr(line, column, token.endLine, token.endColumn, type, null, 0);
3389            arrayExpr.setArraysAnnotations((List)arr[2]);
3390                if (arr[0] instanceof Integer) {
3391                    arrayExpr.setArrayCount(((Integer)arr[0]).intValue());
3392                    arrayExpr.setInitializer((ArrayInitializerExpr)arr[1]);
3393                } else {
3394                    arrayExpr.setArrayCount(((Integer)arr[1]).intValue());
3395                    arrayExpr.setDimensions((List)arr[0]);
3396                }
3397                ret = arrayExpr;
3398      break;
3399    case IDENTIFIER:
3400    case LT:
3401    case 132:
3402      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3403      case LT:
3404      case 132:
3405        typeArgs = TypeArguments();
3406        label_57:
3407        while (true) {
3408          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3409          case AT:
3410            ;
3411            break;
3412          default:
3413            jj_la1[131] = jj_gen;
3414            break label_57;
3415          }
3416          ann = Annotation();
3417                                                               annotations = add(annotations, ann);
3418        }
3419                                                                                                        typeArgs.remove(0);
3420        break;
3421      default:
3422        jj_la1[132] = jj_gen;
3423        ;
3424      }
3425      type = ClassOrInterfaceType();
3426      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3427      case LBRACKET:
3428      case AT:
3429        arr = ArrayDimsAndInits();
3430                                         type.setAnnotations(annotations); arrayExpr = new ArrayCreationExpr(line, column, token.endLine, token.endColumn, type, null, 0);
3431                    arrayExpr.setArraysAnnotations((List)arr[2]);
3432                        if (arr[0] instanceof Integer) {
3433                                arrayExpr.setArrayCount(((Integer)arr[0]).intValue());
3434                            arrayExpr.setInitializer((ArrayInitializerExpr)arr[1]);
3435                        } else {
3436                                arrayExpr.setArrayCount(((Integer)arr[1]).intValue());
3437                            arrayExpr.setDimensions((List)arr[0]);
3438                        }
3439                        ret = arrayExpr;
3440        break;
3441      case LPAREN:
3442        args = Arguments();
3443        if (jj_2_32(2)) {
3444          anonymousBody = ClassOrInterfaceBody(false);
3445        } else {
3446          ;
3447        }
3448                type.setAnnotations(annotations); ret = new ObjectCreationExpr(line, column, token.endLine, token.endColumn, scope, (ClassOrInterfaceType) type, typeArgs, args, anonymousBody);
3449        break;
3450      default:
3451        jj_la1[133] = jj_gen;
3452        jj_consume_token(-1);
3453        throw new ParseException();
3454      }
3455      break;
3456    default:
3457      jj_la1[134] = jj_gen;
3458      jj_consume_token(-1);
3459      throw new ParseException();
3460    }
3461    {if (true) return ret;}
3462    throw new Error("Missing return statement in function");
3463  }
3464
3465/*
3466 * The third LOOKAHEAD specification below is to parse to PrimarySuffix
3467 * if there is an expression between the "[...]".
3468 */
3469  final public Object[] ArrayDimsAndInits() {
3470        Object[] ret = new Object[3];
3471        Expression expr;
3472        List inits = null;
3473        int i = 0;
3474        List accum = null;
3475        List annotations = null;
3476        AnnotationExpr ann;
3477    label_58:
3478    while (true) {
3479      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3480      case AT:
3481        ;
3482        break;
3483      default:
3484        jj_la1[135] = jj_gen;
3485        break label_58;
3486      }
3487      ann = Annotation();
3488                          annotations = add(annotations, ann);
3489    }
3490    if (jj_2_35(2)) {
3491      label_59:
3492      while (true) {
3493        jj_consume_token(LBRACKET);
3494        expr = Expression();
3495                                                   accum = add(accum, annotations); annotations=null; inits = add(inits, expr);
3496        jj_consume_token(RBRACKET);
3497        if (jj_2_33(2)) {
3498          ;
3499        } else {
3500          break label_59;
3501        }
3502      }
3503      label_60:
3504      while (true) {
3505        if (jj_2_34(2)) {
3506          ;
3507        } else {
3508          break label_60;
3509        }
3510        label_61:
3511        while (true) {
3512          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3513          case AT:
3514            ;
3515            break;
3516          default:
3517            jj_la1[136] = jj_gen;
3518            break label_61;
3519          }
3520          ann = Annotation();
3521                                                                                                                                                                                annotations = add(annotations, ann);
3522        }
3523        jj_consume_token(LBRACKET);
3524        jj_consume_token(RBRACKET);
3525                                                                                                                                                                                                                                    i++;
3526      }
3527                                                                                                                                                                                                                                                 accum = add(accum, annotations); annotations=null; ret[0] = inits; ret[1] = new Integer(i);
3528    } else {
3529      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3530      case LBRACKET:
3531        label_62:
3532        while (true) {
3533          jj_consume_token(LBRACKET);
3534          jj_consume_token(RBRACKET);
3535                      i++;
3536          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3537          case LBRACKET:
3538            ;
3539            break;
3540          default:
3541            jj_la1[137] = jj_gen;
3542            break label_62;
3543          }
3544        }
3545        expr = ArrayInitializer();
3546                                                            accum = add(accum, annotations);annotations=null;  ret[0] = new Integer(i); ret[1] = expr;
3547        break;
3548      default:
3549        jj_la1[138] = jj_gen;
3550        jj_consume_token(-1);
3551        throw new ParseException();
3552      }
3553    }
3554    ret[2]=accum; {if (true) return ret;}
3555    throw new Error("Missing return statement in function");
3556  }
3557
3558/*
3559 * Statement syntax follows.
3560 */
3561  final public Statement Statement() {
3562        Statement ret;
3563    if (jj_2_36(2)) {
3564      ret = LabeledStatement();
3565    } else {
3566      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3567      case ASSERT:
3568        ret = AssertStatement();
3569        break;
3570      case LBRACE:
3571        ret = Block();
3572        break;
3573      case SEMICOLON:
3574        ret = EmptyStatement();
3575        break;
3576      case BOOLEAN:
3577      case BYTE:
3578      case CHAR:
3579      case DOUBLE:
3580      case FALSE:
3581      case FLOAT:
3582      case INT:
3583      case LONG:
3584      case NEW:
3585      case NULL:
3586      case SHORT:
3587      case SUPER:
3588      case THIS:
3589      case TRUE:
3590      case VOID:
3591      case LONG_LITERAL:
3592      case INTEGER_LITERAL:
3593      case FLOATING_POINT_LITERAL:
3594      case CHARACTER_LITERAL:
3595      case STRING_LITERAL:
3596      case IDENTIFIER:
3597      case LPAREN:
3598      case INCR:
3599      case DECR:
3600        ret = StatementExpression();
3601        break;
3602      case SWITCH:
3603        ret = SwitchStatement();
3604        break;
3605      case IF:
3606        ret = IfStatement();
3607        break;
3608      case WHILE:
3609        ret = WhileStatement();
3610        break;
3611      case DO:
3612        ret = DoStatement();
3613        break;
3614      case FOR:
3615        ret = ForStatement();
3616        break;
3617      case BREAK:
3618        ret = BreakStatement();
3619        break;
3620      case CONTINUE:
3621        ret = ContinueStatement();
3622        break;
3623      case RETURN:
3624        ret = ReturnStatement();
3625        break;
3626      case THROW:
3627        ret = ThrowStatement();
3628        break;
3629      case SYNCHRONIZED:
3630        ret = SynchronizedStatement();
3631        break;
3632      case TRY:
3633        ret = TryStatement();
3634        break;
3635      default:
3636        jj_la1[139] = jj_gen;
3637        jj_consume_token(-1);
3638        throw new ParseException();
3639      }
3640    }
3641    {if (true) return ret;}
3642    throw new Error("Missing return statement in function");
3643  }
3644
3645  final public AssertStmt AssertStatement() {
3646        Expression check;
3647        Expression msg = null;
3648        int line;
3649        int column;
3650    jj_consume_token(ASSERT);
3651            line=token.beginLine; column=token.beginColumn;
3652    check = Expression();
3653    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3654    case COLON:
3655      jj_consume_token(COLON);
3656      msg = Expression();
3657      break;
3658    default:
3659      jj_la1[140] = jj_gen;
3660      ;
3661    }
3662    jj_consume_token(SEMICOLON);
3663    {if (true) return new AssertStmt(line, column, token.endLine, token.endColumn,check, msg);}
3664    throw new Error("Missing return statement in function");
3665  }
3666
3667  final public LabeledStmt LabeledStatement() {
3668        String label;
3669        Statement stmt;
3670        int line;
3671        int column;
3672    jj_consume_token(IDENTIFIER);
3673                line=token.beginLine; column=token.beginColumn;
3674                                                                   label = token.image;
3675    jj_consume_token(COLON);
3676    stmt = Statement();
3677    {if (true) return new LabeledStmt(line, column, token.endLine, token.endColumn,label, stmt);}
3678    throw new Error("Missing return statement in function");
3679  }
3680
3681  final public BlockStmt Block() {
3682        List stmts;
3683        int beginLine;
3684        int beginColumn;
3685    jj_consume_token(LBRACE);
3686       beginLine=token.beginLine; beginColumn=token.beginColumn;
3687    stmts = Statements();
3688    jj_consume_token(RBRACE);
3689    {if (true) return new BlockStmt(beginLine, beginColumn, token.endLine, token.endColumn, stmts);}
3690    throw new Error("Missing return statement in function");
3691  }
3692
3693/*
3694 * Classes inside block stametents can only be abstract or final. The semantic must check it.
3695 */
3696  final public Statement BlockStatement() {
3697        Statement ret;
3698        Expression expr;
3699        ClassOrInterfaceDeclaration typeDecl;
3700        Modifier modifier;
3701    if (jj_2_37(2147483647)) {
3702
3703      modifier = Modifiers();
3704      typeDecl = ClassOrInterfaceDeclaration(modifier);
3705                                                             ret = new TypeDeclarationStmt(typeDecl.getBeginLine(), typeDecl.getBeginColumn(), token.endLine, token.endColumn, typeDecl);
3706    } else if (jj_2_38(2147483647)) {
3707      expr = VariableDeclarationExpression();
3708      jj_consume_token(SEMICOLON);
3709            ret = new ExpressionStmt(expr.getBeginLine(), expr.getBeginColumn(), token.endLine, token.endColumn, expr);
3710    } else {
3711      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3712      case ASSERT:
3713      case BOOLEAN:
3714      case BREAK:
3715      case BYTE:
3716      case CHAR:
3717      case CONTINUE:
3718      case DO:
3719      case DOUBLE:
3720      case FALSE:
3721      case FLOAT:
3722      case FOR:
3723      case IF:
3724      case INT:
3725      case LONG:
3726      case NEW:
3727      case NULL:
3728      case RETURN:
3729      case SHORT:
3730      case SUPER:
3731      case SWITCH:
3732      case SYNCHRONIZED:
3733      case THIS:
3734      case THROW:
3735      case TRUE:
3736      case TRY:
3737      case VOID:
3738      case WHILE:
3739      case LONG_LITERAL:
3740      case INTEGER_LITERAL:
3741      case FLOATING_POINT_LITERAL:
3742      case CHARACTER_LITERAL:
3743      case STRING_LITERAL:
3744      case IDENTIFIER:
3745      case LPAREN:
3746      case LBRACE:
3747      case SEMICOLON:
3748      case INCR:
3749      case DECR:
3750        ret = Statement();
3751        break;
3752      default:
3753        jj_la1[141] = jj_gen;
3754        jj_consume_token(-1);
3755        throw new ParseException();
3756      }
3757    }
3758    {if (true) return ret;}
3759    throw new Error("Missing return statement in function");
3760  }
3761
3762  final public VariableDeclarationExpr VariableDeclarationExpression() {
3763        Modifier modifier;
3764        Type type;
3765        List vars = new LinkedList();
3766        VariableDeclarator var;
3767    modifier = Modifiers();
3768    type = Type();
3769    var = VariableDeclarator();
3770                                                                    vars.add(var);
3771    label_63:
3772    while (true) {
3773      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3774      case COMMA:
3775        ;
3776        break;
3777      default:
3778        jj_la1[142] = jj_gen;
3779        break label_63;
3780      }
3781      jj_consume_token(COMMA);
3782      var = VariableDeclarator();
3783                                                                                                                        vars.add(var);
3784    }
3785    int line = modifier.beginLine;
3786    int column = modifier.beginColumn;
3787    if(line==-1) {line=type.getBeginLine(); column=type.getBeginColumn(); }
3788    {if (true) return new VariableDeclarationExpr(line, column, token.endLine, token.endColumn, modifier.modifiers, modifier.annotations, type, vars);}
3789    throw new Error("Missing return statement in function");
3790  }
3791
3792  final public EmptyStmt EmptyStatement() {
3793    jj_consume_token(SEMICOLON);
3794    {if (true) return new EmptyStmt(token.beginLine, token.beginColumn, token.endLine, token.endColumn);}
3795    throw new Error("Missing return statement in function");
3796  }
3797
3798  final public Statement LambdaBody() {
3799  Expression expr;
3800  Statement n = null;
3801    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3802    case BOOLEAN:
3803    case BYTE:
3804    case CHAR:
3805    case DOUBLE:
3806    case FALSE:
3807    case FLOAT:
3808    case INT:
3809    case LONG:
3810    case NEW:
3811    case NULL:
3812    case SHORT:
3813    case SUPER:
3814    case THIS:
3815    case TRUE:
3816    case VOID:
3817    case LONG_LITERAL:
3818    case INTEGER_LITERAL:
3819    case FLOATING_POINT_LITERAL:
3820    case CHARACTER_LITERAL:
3821    case STRING_LITERAL:
3822    case IDENTIFIER:
3823    case LPAREN:
3824    case BANG:
3825    case TILDE:
3826    case INCR:
3827    case DECR:
3828    case PLUS:
3829    case MINUS:
3830      expr = Expression();
3831          n = new ExpressionStmt(expr.getBeginLine(), expr.getBeginColumn(), token.endLine, token.endColumn, expr);
3832      break;
3833    case LBRACE:
3834      n = Block();
3835      break;
3836    default:
3837      jj_la1[143] = jj_gen;
3838      jj_consume_token(-1);
3839      throw new ParseException();
3840    }
3841        {if (true) return n;}
3842    throw new Error("Missing return statement in function");
3843  }
3844
3845  final public ExpressionStmt StatementExpression() {
3846        Expression expr;
3847        AssignExpr.Operator op;
3848        Expression value;
3849        Type type;
3850        List typeArgs = null;
3851        Statement lambdaBody = null;
3852        VariableDeclaratorId id = null;
3853        List params = null;
3854        Expression inner = null;
3855    if (jj_2_39(2)) {
3856      expr = PreIncrementExpression();
3857    } else {
3858      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3859      case DECR:
3860        expr = PreDecrementExpression();
3861        break;
3862      case BOOLEAN:
3863      case BYTE:
3864      case CHAR:
3865      case DOUBLE:
3866      case FALSE:
3867      case FLOAT:
3868      case INT:
3869      case LONG:
3870      case NEW:
3871      case NULL:
3872      case SHORT:
3873      case SUPER:
3874      case THIS:
3875      case TRUE:
3876      case VOID:
3877      case LONG_LITERAL:
3878      case INTEGER_LITERAL:
3879      case FLOATING_POINT_LITERAL:
3880      case CHARACTER_LITERAL:
3881      case STRING_LITERAL:
3882      case IDENTIFIER:
3883      case LPAREN:
3884        expr = PrimaryExpression();
3885        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3886        case ASSIGN:
3887        case INCR:
3888        case DECR:
3889        case PLUSASSIGN:
3890        case MINUSASSIGN:
3891        case STARASSIGN:
3892        case SLASHASSIGN:
3893        case ANDASSIGN:
3894        case ORASSIGN:
3895        case XORASSIGN:
3896        case REMASSIGN:
3897        case LSHIFTASSIGN:
3898        case RSIGNEDSHIFTASSIGN:
3899        case RUNSIGNEDSHIFTASSIGN:
3900        case ARROW:
3901        case DOUBLECOLON:
3902          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3903          case INCR:
3904            jj_consume_token(INCR);
3905                   expr = new UnaryExpr(expr.getBeginLine(), expr.getBeginColumn(), token.endLine, token.endColumn, expr, UnaryExpr.Operator.posIncrement);
3906            break;
3907          case DECR:
3908            jj_consume_token(DECR);
3909                   expr = new UnaryExpr(expr.getBeginLine(), expr.getBeginColumn(), token.endLine, token.endColumn, expr, UnaryExpr.Operator.posDecrement);
3910            break;
3911          case ASSIGN:
3912          case PLUSASSIGN:
3913          case MINUSASSIGN:
3914          case STARASSIGN:
3915          case SLASHASSIGN:
3916          case ANDASSIGN:
3917          case ORASSIGN:
3918          case XORASSIGN:
3919          case REMASSIGN:
3920          case LSHIFTASSIGN:
3921          case RSIGNEDSHIFTASSIGN:
3922          case RUNSIGNEDSHIFTASSIGN:
3923            op = AssignmentOperator();
3924            value = Expression();
3925                                                             expr = new AssignExpr(expr.getBeginLine(), expr.getBeginColumn(), token.endLine, token.endColumn, expr, value, op);
3926            break;
3927          case DOUBLECOLON:
3928            jj_consume_token(DOUBLECOLON);
3929            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3930            case LT:
3931              typeArgs = TypeParameters();
3932                                                 typeArgs.remove(0);
3933              break;
3934            default:
3935              jj_la1[144] = jj_gen;
3936              ;
3937            }
3938            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3939            case IDENTIFIER:
3940              jj_consume_token(IDENTIFIER);
3941              break;
3942            case NEW:
3943              jj_consume_token(NEW);
3944              break;
3945            default:
3946              jj_la1[145] = jj_gen;
3947              jj_consume_token(-1);
3948              throw new ParseException();
3949            }
3950                                                                                                 expr = new MethodReferenceExpr(expr.getBeginLine(), expr.getBeginColumn(), token.endLine, token.endColumn, expr, typeArgs, token.image);
3951            break;
3952          case ARROW:
3953            jj_consume_token(ARROW);
3954            lambdaBody = LambdaBody();
3955             if (expr instanceof CastExpr)
3956             {
3957           inner = generateLambda(((CastExpr)expr).getExpr(), lambdaBody);
3958           ((CastExpr)expr).setExpr(inner);
3959             }
3960             else
3961             {
3962               expr = generateLambda(expr, lambdaBody);
3963             }
3964            break;
3965          default:
3966            jj_la1[146] = jj_gen;
3967            jj_consume_token(-1);
3968            throw new ParseException();
3969          }
3970          break;
3971        default:
3972          jj_la1[147] = jj_gen;
3973          ;
3974        }
3975        break;
3976      default:
3977        jj_la1[148] = jj_gen;
3978        jj_consume_token(-1);
3979        throw new ParseException();
3980      }
3981    }
3982    jj_consume_token(SEMICOLON);
3983    {if (true) return new ExpressionStmt(expr.getBeginLine(), expr.getBeginColumn(), token.endLine, token.endColumn, expr);}
3984    throw new Error("Missing return statement in function");
3985  }
3986
3987  final public SwitchStmt SwitchStatement() {
3988        Expression selector;
3989        SwitchEntryStmt entry;
3990        List entries = null;
3991        int line;
3992        int column;
3993    jj_consume_token(SWITCH);
3994            line=token.beginLine; column=token.beginColumn;
3995    jj_consume_token(LPAREN);
3996    selector = Expression();
3997    jj_consume_token(RPAREN);
3998    jj_consume_token(LBRACE);
3999    label_64:
4000    while (true) {
4001      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4002      case CASE:
4003      case _DEFAULT:
4004        ;
4005        break;
4006      default:
4007        jj_la1[149] = jj_gen;
4008        break label_64;
4009      }
4010      entry = SwitchEntry();
4011                              entries = add(entries, entry);
4012    }
4013    jj_consume_token(RBRACE);
4014    {if (true) return new SwitchStmt(line, column, token.endLine, token.endColumn,selector, entries);}
4015    throw new Error("Missing return statement in function");
4016  }
4017
4018  final public SwitchEntryStmt SwitchEntry() {
4019        Expression label = null;
4020        List stmts;
4021        int line;
4022        int column;
4023    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4024    case CASE:
4025      jj_consume_token(CASE);
4026                  line=token.beginLine; column=token.beginColumn;
4027      label = Expression();
4028      break;
4029    case _DEFAULT:
4030      jj_consume_token(_DEFAULT);
4031                     line=token.beginLine; column=token.beginColumn;
4032      break;
4033    default:
4034      jj_la1[150] = jj_gen;
4035      jj_consume_token(-1);
4036      throw new ParseException();
4037    }
4038    jj_consume_token(COLON);
4039    stmts = Statements();
4040    {if (true) return new SwitchEntryStmt(line, column, token.endLine, token.endColumn,label, stmts);}
4041    throw new Error("Missing return statement in function");
4042  }
4043
4044  final public IfStmt IfStatement() {
4045        Expression condition;
4046        Statement thenStmt;
4047        Statement elseStmt = null;
4048        int line;
4049        int column;
4050    Comment thenCmmt = null;
4051    Comment elseCmmt = null;
4052    jj_consume_token(IF);
4053        line=token.beginLine; column=token.beginColumn;
4054    jj_consume_token(LPAREN);
4055    condition = Expression();
4056    jj_consume_token(RPAREN);
4057
4058    thenStmt = Statement();
4059    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4060    case ELSE:
4061      jj_consume_token(ELSE);
4062
4063      elseStmt = Statement();
4064      break;
4065    default:
4066      jj_la1[151] = jj_gen;
4067      ;
4068    }
4069      IfStmt tmp = new IfStmt(line, column, token.endLine, token.endColumn,condition, thenStmt, elseStmt);
4070
4071      thenStmt.setComment(thenCmmt);
4072      if (elseStmt != null)
4073          elseStmt.setComment(elseCmmt);
4074      {if (true) return tmp;}
4075    throw new Error("Missing return statement in function");
4076  }
4077
4078  final public WhileStmt WhileStatement() {
4079        Expression condition;
4080        Statement body;
4081        int line;
4082        int column;
4083    jj_consume_token(WHILE);
4084           line=token.beginLine; column=token.beginColumn;
4085    jj_consume_token(LPAREN);
4086    condition = Expression();
4087    jj_consume_token(RPAREN);
4088    body = Statement();
4089    {if (true) return new WhileStmt(line, column, token.endLine, token.endColumn,condition, body);}
4090    throw new Error("Missing return statement in function");
4091  }
4092
4093  final public DoStmt DoStatement() {
4094        Expression condition;
4095        Statement body;
4096        int line;
4097        int column;
4098    jj_consume_token(DO);
4099        line=token.beginLine; column=token.beginColumn;
4100    body = Statement();
4101    jj_consume_token(WHILE);
4102    jj_consume_token(LPAREN);
4103    condition = Expression();
4104    jj_consume_token(RPAREN);
4105    jj_consume_token(SEMICOLON);
4106    {if (true) return new DoStmt(line, column, token.endLine, token.endColumn,body, condition);}
4107    throw new Error("Missing return statement in function");
4108  }
4109
4110  final public Statement ForStatement() {
4111        String id = null;
4112        VariableDeclarationExpr varExpr = null;
4113        Expression expr = null;
4114        List init = null;
4115        List update = null;
4116        Statement body;
4117        int line;
4118        int column;
4119    jj_consume_token(FOR);
4120         line=token.beginLine; column=token.beginColumn;
4121    jj_consume_token(LPAREN);
4122    if (jj_2_40(2147483647)) {
4123      varExpr = VariableDeclarationExpression();
4124      jj_consume_token(COLON);
4125      expr = Expression();
4126    } else {
4127      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4128      case ABSTRACT:
4129      case BOOLEAN:
4130      case BYTE:
4131      case CHAR:
4132      case DOUBLE:
4133      case FALSE:
4134      case FINAL:
4135      case FLOAT:
4136      case INT:
4137      case LONG:
4138      case NATIVE:
4139      case NEW:
4140      case NULL:
4141      case PRIVATE:
4142      case PROTECTED:
4143      case PUBLIC:
4144      case SHORT:
4145      case STATIC:
4146      case STRICTFP:
4147      case SUPER:
4148      case SYNCHRONIZED:
4149      case THIS:
4150      case TRANSIENT:
4151      case TRUE:
4152      case VOID:
4153      case VOLATILE:
4154      case LONG_LITERAL:
4155      case INTEGER_LITERAL:
4156      case FLOATING_POINT_LITERAL:
4157      case CHARACTER_LITERAL:
4158      case STRING_LITERAL:
4159      case IDENTIFIER:
4160      case LPAREN:
4161      case SEMICOLON:
4162      case AT:
4163      case BANG:
4164      case TILDE:
4165      case INCR:
4166      case DECR:
4167      case PLUS:
4168      case MINUS:
4169        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4170        case ABSTRACT:
4171        case BOOLEAN:
4172        case BYTE:
4173        case CHAR:
4174        case DOUBLE:
4175        case FALSE:
4176        case FINAL:
4177        case FLOAT:
4178        case INT:
4179        case LONG:
4180        case NATIVE:
4181        case NEW:
4182        case NULL:
4183        case PRIVATE:
4184        case PROTECTED:
4185        case PUBLIC:
4186        case SHORT:
4187        case STATIC:
4188        case STRICTFP:
4189        case SUPER:
4190        case SYNCHRONIZED:
4191        case THIS:
4192        case TRANSIENT:
4193        case TRUE:
4194        case VOID:
4195        case VOLATILE:
4196        case LONG_LITERAL:
4197        case INTEGER_LITERAL:
4198        case FLOATING_POINT_LITERAL:
4199        case CHARACTER_LITERAL:
4200        case STRING_LITERAL:
4201        case IDENTIFIER:
4202        case LPAREN:
4203        case AT:
4204        case BANG:
4205        case TILDE:
4206        case INCR:
4207        case DECR:
4208        case PLUS:
4209        case MINUS:
4210          init = ForInit();
4211          break;
4212        default:
4213          jj_la1[152] = jj_gen;
4214          ;
4215        }
4216        jj_consume_token(SEMICOLON);
4217        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4218        case BOOLEAN:
4219        case BYTE:
4220        case CHAR:
4221        case DOUBLE:
4222        case FALSE:
4223        case FLOAT:
4224        case INT:
4225        case LONG:
4226        case NEW:
4227        case NULL:
4228        case SHORT:
4229        case SUPER:
4230        case THIS:
4231        case TRUE:
4232        case VOID:
4233        case LONG_LITERAL:
4234        case INTEGER_LITERAL:
4235        case FLOATING_POINT_LITERAL:
4236        case CHARACTER_LITERAL:
4237        case STRING_LITERAL:
4238        case IDENTIFIER:
4239        case LPAREN:
4240        case BANG:
4241        case TILDE:
4242        case INCR:
4243        case DECR:
4244        case PLUS:
4245        case MINUS:
4246          expr = Expression();
4247          break;
4248        default:
4249          jj_la1[153] = jj_gen;
4250          ;
4251        }
4252        jj_consume_token(SEMICOLON);
4253        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4254        case BOOLEAN:
4255        case BYTE:
4256        case CHAR:
4257        case DOUBLE:
4258        case FALSE:
4259        case FLOAT:
4260        case INT:
4261        case LONG:
4262        case NEW:
4263        case NULL:
4264        case SHORT:
4265        case SUPER:
4266        case THIS:
4267        case TRUE:
4268        case VOID:
4269        case LONG_LITERAL:
4270        case INTEGER_LITERAL:
4271        case FLOATING_POINT_LITERAL:
4272        case CHARACTER_LITERAL:
4273        case STRING_LITERAL:
4274        case IDENTIFIER:
4275        case LPAREN:
4276        case BANG:
4277        case TILDE:
4278        case INCR:
4279        case DECR:
4280        case PLUS:
4281        case MINUS:
4282          update = ForUpdate();
4283          break;
4284        default:
4285          jj_la1[154] = jj_gen;
4286          ;
4287        }
4288        break;
4289      default:
4290        jj_la1[155] = jj_gen;
4291        jj_consume_token(-1);
4292        throw new ParseException();
4293      }
4294    }
4295    jj_consume_token(RPAREN);
4296    body = Statement();
4297        if (varExpr != null) {
4298                {if (true) return new ForeachStmt(line, column, token.endLine, token.endColumn,varExpr, expr, body);}
4299        }
4300        {if (true) return new ForStmt(line, column, token.endLine, token.endColumn,init, expr, update, body);}
4301    throw new Error("Missing return statement in function");
4302  }
4303
4304  final public List ForInit() {
4305        List ret;
4306        Expression expr;
4307    if (jj_2_41(2147483647)) {
4308      expr = VariableDeclarationExpression();
4309                                                   ret = new LinkedList(); ret.add(expr);
4310    } else {
4311      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4312      case BOOLEAN:
4313      case BYTE:
4314      case CHAR:
4315      case DOUBLE:
4316      case FALSE:
4317      case FLOAT:
4318      case INT:
4319      case LONG:
4320      case NEW:
4321      case NULL:
4322      case SHORT:
4323      case SUPER:
4324      case THIS:
4325      case TRUE:
4326      case VOID:
4327      case LONG_LITERAL:
4328      case INTEGER_LITERAL:
4329      case FLOATING_POINT_LITERAL:
4330      case CHARACTER_LITERAL:
4331      case STRING_LITERAL:
4332      case IDENTIFIER:
4333      case LPAREN:
4334      case BANG:
4335      case TILDE:
4336      case INCR:
4337      case DECR:
4338      case PLUS:
4339      case MINUS:
4340        ret = ExpressionList();
4341        break;
4342      default:
4343        jj_la1[156] = jj_gen;
4344        jj_consume_token(-1);
4345        throw new ParseException();
4346      }
4347    }
4348    {if (true) return ret;}
4349    throw new Error("Missing return statement in function");
4350  }
4351
4352  final public List ExpressionList() {
4353        List ret = new LinkedList();
4354        Expression expr;
4355    expr = Expression();
4356                        ret.add(expr);
4357    label_65:
4358    while (true) {
4359      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4360      case COMMA:
4361        ;
4362        break;
4363      default:
4364        jj_la1[157] = jj_gen;
4365        break label_65;
4366      }
4367      jj_consume_token(COMMA);
4368      expr = Expression();
4369                                                                      ret.add(expr);
4370    }
4371    {if (true) return ret;}
4372    throw new Error("Missing return statement in function");
4373  }
4374
4375  final public List ForUpdate() {
4376        List ret;
4377    ret = ExpressionList();
4378    {if (true) return ret;}
4379    throw new Error("Missing return statement in function");
4380  }
4381
4382  final public BreakStmt BreakStatement() {
4383        String id = null;
4384        int line;
4385        int column;
4386    jj_consume_token(BREAK);
4387           line=token.beginLine; column=token.beginColumn;
4388    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4389    case IDENTIFIER:
4390      jj_consume_token(IDENTIFIER);
4391                                                                             id = token.image;
4392      break;
4393    default:
4394      jj_la1[158] = jj_gen;
4395      ;
4396    }
4397    jj_consume_token(SEMICOLON);
4398    {if (true) return new BreakStmt(line, column, token.endLine, token.endColumn,id);}
4399    throw new Error("Missing return statement in function");
4400  }
4401
4402  final public ContinueStmt ContinueStatement() {
4403        String id = null;
4404        int line;
4405        int column;
4406    jj_consume_token(CONTINUE);
4407              line=token.beginLine; column=token.beginColumn;
4408    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4409    case IDENTIFIER:
4410      jj_consume_token(IDENTIFIER);
4411                                                                                id = token.image;
4412      break;
4413    default:
4414      jj_la1[159] = jj_gen;
4415      ;
4416    }
4417    jj_consume_token(SEMICOLON);
4418    {if (true) return new ContinueStmt(line, column, token.endLine, token.endColumn,id);}
4419    throw new Error("Missing return statement in function");
4420  }
4421
4422  final public ReturnStmt ReturnStatement() {
4423        Expression expr = null;
4424        int line;
4425        int column;
4426    jj_consume_token(RETURN);
4427            line=token.beginLine; column=token.beginColumn;
4428    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4429    case BOOLEAN:
4430    case BYTE:
4431    case CHAR:
4432    case DOUBLE:
4433    case FALSE:
4434    case FLOAT:
4435    case INT:
4436    case LONG:
4437    case NEW:
4438    case NULL:
4439    case SHORT:
4440    case SUPER:
4441    case THIS:
4442    case TRUE:
4443    case VOID:
4444    case LONG_LITERAL:
4445    case INTEGER_LITERAL:
4446    case FLOATING_POINT_LITERAL:
4447    case CHARACTER_LITERAL:
4448    case STRING_LITERAL:
4449    case IDENTIFIER:
4450    case LPAREN:
4451    case BANG:
4452    case TILDE:
4453    case INCR:
4454    case DECR:
4455    case PLUS:
4456    case MINUS:
4457      expr = Expression();
4458      break;
4459    default:
4460      jj_la1[160] = jj_gen;
4461      ;
4462    }
4463    jj_consume_token(SEMICOLON);
4464    {if (true) return new ReturnStmt(line, column, token.endLine, token.endColumn,expr);}
4465    throw new Error("Missing return statement in function");
4466  }
4467
4468  final public ThrowStmt ThrowStatement() {
4469        Expression expr;
4470        int line;
4471        int column;
4472    jj_consume_token(THROW);
4473           line=token.beginLine; column=token.beginColumn;
4474    expr = Expression();
4475    jj_consume_token(SEMICOLON);
4476    {if (true) return new ThrowStmt(line, column, token.endLine, token.endColumn,expr);}
4477    throw new Error("Missing return statement in function");
4478  }
4479
4480  final public SynchronizedStmt SynchronizedStatement() {
4481        Expression expr;
4482        BlockStmt block;
4483        int line;
4484        int column;
4485    jj_consume_token(SYNCHRONIZED);
4486                  line=token.beginLine; column=token.beginColumn;
4487    jj_consume_token(LPAREN);
4488    expr = Expression();
4489    jj_consume_token(RPAREN);
4490    block = Block();
4491    {if (true) return new SynchronizedStmt(line, column, token.endLine, token.endColumn,expr, block);}
4492    throw new Error("Missing return statement in function");
4493  }
4494
4495  final public TryStmt TryStatement() {
4496        List resources = new LinkedList();
4497        BlockStmt tryBlock;
4498        BlockStmt finallyBlock = null;
4499        List catchs = null;
4500        Parameter except;
4501        BlockStmt catchBlock;
4502        Modifier exceptModifier;
4503        Type exceptType;
4504        List exceptTypes = new LinkedList();
4505        VariableDeclaratorId exceptId;
4506        int line;
4507        int column;
4508        int cLine;
4509        int cColumn;
4510    jj_consume_token(TRY);
4511         line=token.beginLine; column=token.beginColumn;
4512    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4513    case LPAREN:
4514      resources = ResourceSpecification();
4515      break;
4516    default:
4517      jj_la1[161] = jj_gen;
4518      ;
4519    }
4520    tryBlock = Block();
4521    label_66:
4522    while (true) {
4523      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4524      case CATCH:
4525        ;
4526        break;
4527      default:
4528        jj_la1[162] = jj_gen;
4529        break label_66;
4530      }
4531      jj_consume_token(CATCH);
4532                                 cLine=token.beginLine; cColumn=token.beginColumn;
4533      jj_consume_token(LPAREN);
4534      exceptModifier = Modifiers();
4535      exceptType = Type();
4536                                                                           exceptTypes.add(exceptType);
4537      label_67:
4538      while (true) {
4539        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4540        case BIT_OR:
4541          ;
4542          break;
4543        default:
4544          jj_la1[163] = jj_gen;
4545          break label_67;
4546        }
4547        jj_consume_token(BIT_OR);
4548        exceptType = Type();
4549                                                    exceptTypes.add(exceptType);
4550      }
4551      exceptId = VariableDeclaratorId();
4552      jj_consume_token(RPAREN);
4553      catchBlock = Block();
4554                          catchs = add(catchs, new CatchClause(cLine, cColumn, token.endLine, token.endColumn, exceptModifier.modifiers, exceptModifier.annotations, exceptTypes, exceptId, catchBlock)); exceptTypes = new LinkedList();
4555    }
4556    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4557    case FINALLY:
4558      jj_consume_token(FINALLY);
4559      finallyBlock = Block();
4560      break;
4561    default:
4562      jj_la1[164] = jj_gen;
4563      ;
4564    }
4565    {if (true) return new TryStmt(line, column, token.endLine, token.endColumn, resources, tryBlock, catchs, finallyBlock);}
4566    throw new Error("Missing return statement in function");
4567  }
4568
4569  final public List ResourceSpecification() {
4570List vars;
4571    jj_consume_token(LPAREN);
4572    vars = Resources();
4573    if (jj_2_42(2)) {
4574      jj_consume_token(SEMICOLON);
4575    } else {
4576      ;
4577    }
4578    jj_consume_token(RPAREN);
4579    {if (true) return vars;}
4580    throw new Error("Missing return statement in function");
4581  }
4582
4583  final public List Resources() {
4584        List vars = new LinkedList();
4585        VariableDeclarationExpr var;
4586    /*this is a bit more lenient than we need to be, eg allowing access modifiers like private*/
4587      var = VariableDeclarationExpression();
4588                                         vars.add(var);
4589    label_68:
4590    while (true) {
4591      if (jj_2_43(2)) {
4592        ;
4593      } else {
4594        break label_68;
4595      }
4596      jj_consume_token(SEMICOLON);
4597      var = VariableDeclarationExpression();
4598                                                                                                                  vars.add(var);
4599    }
4600    {if (true) return vars;}
4601    throw new Error("Missing return statement in function");
4602  }
4603
4604/* We use productions to match >>>, >> and > so that we can keep the
4605 * type declaration syntax with generics clean
4606 */
4607  final public void RUNSIGNEDSHIFT() {
4608    if (getToken(1).kind == GT &&
4609                    ((GTToken)getToken(1)).realKind == RUNSIGNEDSHIFT) {
4610
4611    } else {
4612      jj_consume_token(-1);
4613      throw new ParseException();
4614    }
4615    jj_consume_token(GT);
4616    jj_consume_token(GT);
4617    jj_consume_token(GT);
4618  }
4619
4620  final public void RSIGNEDSHIFT() {
4621    if (getToken(1).kind == GT &&
4622                    ((GTToken)getToken(1)).realKind == RSIGNEDSHIFT) {
4623
4624    } else {
4625      jj_consume_token(-1);
4626      throw new ParseException();
4627    }
4628    jj_consume_token(GT);
4629    jj_consume_token(GT);
4630  }
4631
4632/* Annotation syntax follows. */
4633  final public AnnotationExpr Annotation() {
4634        AnnotationExpr ret;
4635    if (jj_2_44(2147483647)) {
4636      ret = NormalAnnotation();
4637    } else if (jj_2_45(2147483647)) {
4638      ret = SingleMemberAnnotation();
4639    } else {
4640      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4641      case AT:
4642        ret = MarkerAnnotation();
4643        break;
4644      default:
4645        jj_la1[165] = jj_gen;
4646        jj_consume_token(-1);
4647        throw new ParseException();
4648      }
4649    }
4650    {if (true) return ret;}
4651    throw new Error("Missing return statement in function");
4652  }
4653
4654  final public NormalAnnotationExpr NormalAnnotation() {
4655        NameExpr name;
4656        List pairs = null;
4657        int line;
4658        int column;
4659    jj_consume_token(AT);
4660        line=token.beginLine; column=token.beginColumn;
4661    name = Name();
4662    jj_consume_token(LPAREN);
4663    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4664    case IDENTIFIER:
4665      pairs = MemberValuePairs();
4666      break;
4667    default:
4668      jj_la1[166] = jj_gen;
4669      ;
4670    }
4671    jj_consume_token(RPAREN);
4672     {if (true) return new NormalAnnotationExpr(line, column, token.endLine, token.endColumn,name, pairs);}
4673    throw new Error("Missing return statement in function");
4674  }
4675
4676  final public MarkerAnnotationExpr MarkerAnnotation() {
4677        NameExpr name;
4678        int line;
4679        int column;
4680    jj_consume_token(AT);
4681       line=token.beginLine; column=token.beginColumn;
4682    name = Name();
4683    {if (true) return new MarkerAnnotationExpr(line, column, token.endLine, token.endColumn,name);}
4684    throw new Error("Missing return statement in function");
4685  }
4686
4687  final public SingleMemberAnnotationExpr SingleMemberAnnotation() {
4688        NameExpr name;
4689        Expression memberVal;
4690        int line;
4691        int column;
4692    jj_consume_token(AT);
4693       line=token.beginLine; column=token.beginColumn;
4694    name = Name();
4695    jj_consume_token(LPAREN);
4696    memberVal = MemberValue();
4697    jj_consume_token(RPAREN);
4698    {if (true) return new SingleMemberAnnotationExpr(line, column, token.endLine, token.endColumn,name, memberVal);}
4699    throw new Error("Missing return statement in function");
4700  }
4701
4702  final public List MemberValuePairs() {
4703        List ret = new LinkedList();
4704        MemberValuePair pair;
4705    pair = MemberValuePair();
4706                              ret.add(pair);
4707    label_69:
4708    while (true) {
4709      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4710      case COMMA:
4711        ;
4712        break;
4713      default:
4714        jj_la1[167] = jj_gen;
4715        break label_69;
4716      }
4717      jj_consume_token(COMMA);
4718      pair = MemberValuePair();
4719                                                                                ret.add(pair);
4720    }
4721     {if (true) return ret;}
4722    throw new Error("Missing return statement in function");
4723  }
4724
4725  final public MemberValuePair MemberValuePair() {
4726        String name;
4727        Expression value;
4728        int line;
4729        int column;
4730    jj_consume_token(IDENTIFIER);
4731                   name = token.image; line=token.beginLine; column=token.beginColumn;
4732    jj_consume_token(ASSIGN);
4733    value = MemberValue();
4734      {if (true) return new MemberValuePair(line, column, token.endLine, token.endColumn,name, value);}
4735    throw new Error("Missing return statement in function");
4736  }
4737
4738  final public Expression MemberValue() {
4739        Expression ret;
4740    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4741    case AT:
4742      ret = Annotation();
4743      break;
4744    case LBRACE:
4745      ret = MemberValueArrayInitializer();
4746      break;
4747    case BOOLEAN:
4748    case BYTE:
4749    case CHAR:
4750    case DOUBLE:
4751    case FALSE:
4752    case FLOAT:
4753    case INT:
4754    case LONG:
4755    case NEW:
4756    case NULL:
4757    case SHORT:
4758    case SUPER:
4759    case THIS:
4760    case TRUE:
4761    case VOID:
4762    case LONG_LITERAL:
4763    case INTEGER_LITERAL:
4764    case FLOATING_POINT_LITERAL:
4765    case CHARACTER_LITERAL:
4766    case STRING_LITERAL:
4767    case IDENTIFIER:
4768    case LPAREN:
4769    case BANG:
4770    case TILDE:
4771    case INCR:
4772    case DECR:
4773    case PLUS:
4774    case MINUS:
4775      ret = ConditionalExpression();
4776      break;
4777    default:
4778      jj_la1[168] = jj_gen;
4779      jj_consume_token(-1);
4780      throw new ParseException();
4781    }
4782    {if (true) return ret;}
4783    throw new Error("Missing return statement in function");
4784  }
4785
4786  final public Expression MemberValueArrayInitializer() {
4787        List ret = new LinkedList();
4788        Expression member;
4789        int line;
4790        int column;
4791    jj_consume_token(LBRACE);
4792       line=token.beginLine; column=token.beginColumn;
4793    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4794    case BOOLEAN:
4795    case BYTE:
4796    case CHAR:
4797    case DOUBLE:
4798    case FALSE:
4799    case FLOAT:
4800    case INT:
4801    case LONG:
4802    case NEW:
4803    case NULL:
4804    case SHORT:
4805    case SUPER:
4806    case THIS:
4807    case TRUE:
4808    case VOID:
4809    case LONG_LITERAL:
4810    case INTEGER_LITERAL:
4811    case FLOATING_POINT_LITERAL:
4812    case CHARACTER_LITERAL:
4813    case STRING_LITERAL:
4814    case IDENTIFIER:
4815    case LPAREN:
4816    case LBRACE:
4817    case AT:
4818    case BANG:
4819    case TILDE:
4820    case INCR:
4821    case DECR:
4822    case PLUS:
4823    case MINUS:
4824      member = MemberValue();
4825                                 ret.add(member);
4826      label_70:
4827      while (true) {
4828        if (jj_2_46(2)) {
4829          ;
4830        } else {
4831          break label_70;
4832        }
4833        jj_consume_token(COMMA);
4834        member = MemberValue();
4835                                                                                                ret.add(member);
4836      }
4837      break;
4838    default:
4839      jj_la1[169] = jj_gen;
4840      ;
4841    }
4842    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4843    case COMMA:
4844      jj_consume_token(COMMA);
4845      break;
4846    default:
4847      jj_la1[170] = jj_gen;
4848      ;
4849    }
4850    jj_consume_token(RBRACE);
4851    {if (true) return new ArrayInitializerExpr(line, column, token.endLine, token.endColumn,ret);}
4852    throw new Error("Missing return statement in function");
4853  }
4854
4855/* Annotation Types. */
4856  final public AnnotationDeclaration AnnotationTypeDeclaration(Modifier modifier) {
4857        NameExpr name;
4858        List members;
4859        int line = modifier.beginLine;
4860        int column = modifier.beginColumn;
4861    jj_consume_token(AT);
4862        if (line == -1) {line=token.beginLine; column=token.beginColumn;}
4863    jj_consume_token(INTERFACE);
4864    name = Name();
4865    members = AnnotationTypeBody();
4866      AnnotationDeclaration tmp = new AnnotationDeclaration(line, column, token.endLine, token.endColumn, modifier.modifiers, modifier.annotations, null, members);
4867      tmp.setNameExpr(name);
4868      {if (true) return tmp;}
4869    throw new Error("Missing return statement in function");
4870  }
4871
4872  final public List AnnotationTypeBody() {
4873        List ret = null;
4874        BodyDeclaration member;
4875    jj_consume_token(LBRACE);
4876    label_71:
4877    while (true) {
4878      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4879      case ABSTRACT:
4880      case BOOLEAN:
4881      case BYTE:
4882      case CHAR:
4883      case CLASS:
4884      case DOUBLE:
4885      case ENUM:
4886      case FINAL:
4887      case FLOAT:
4888      case INT:
4889      case INTERFACE:
4890      case LONG:
4891      case NATIVE:
4892      case PRIVATE:
4893      case PROTECTED:
4894      case PUBLIC:
4895      case SHORT:
4896      case STATIC:
4897      case STRICTFP:
4898      case SYNCHRONIZED:
4899      case TRANSIENT:
4900      case VOLATILE:
4901      case IDENTIFIER:
4902      case SEMICOLON:
4903      case AT:
4904        ;
4905        break;
4906      default:
4907        jj_la1[171] = jj_gen;
4908        break label_71;
4909      }
4910      member = AnnotationBodyDeclaration();
4911                                               ret = add(ret, member);
4912    }
4913    jj_consume_token(RBRACE);
4914    {if (true) return ret;}
4915    throw new Error("Missing return statement in function");
4916  }
4917
4918  final public BodyDeclaration AnnotationBodyDeclaration() {
4919   Modifier modifier;
4920   BodyDeclaration ret;
4921
4922    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4923    case SEMICOLON:
4924      jj_consume_token(SEMICOLON);
4925              ret = new EmptyTypeDeclaration(token.beginLine, token.beginColumn, token.endLine, token.endColumn);
4926      break;
4927    case ABSTRACT:
4928    case BOOLEAN:
4929    case BYTE:
4930    case CHAR:
4931    case CLASS:
4932    case DOUBLE:
4933    case ENUM:
4934    case FINAL:
4935    case FLOAT:
4936    case INT:
4937    case INTERFACE:
4938    case LONG:
4939    case NATIVE:
4940    case PRIVATE:
4941    case PROTECTED:
4942    case PUBLIC:
4943    case SHORT:
4944    case STATIC:
4945    case STRICTFP:
4946    case SYNCHRONIZED:
4947    case TRANSIENT:
4948    case VOLATILE:
4949    case IDENTIFIER:
4950    case AT:
4951      modifier = Modifiers();
4952      if (jj_2_47(2147483647)) {
4953        ret = AnnotationTypeMemberDeclaration(modifier);
4954      } else {
4955        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4956        case CLASS:
4957        case INTERFACE:
4958          ret = ClassOrInterfaceDeclaration(modifier);
4959          break;
4960        case ENUM:
4961          ret = EnumDeclaration(modifier);
4962          break;
4963        case AT:
4964          ret = AnnotationTypeDeclaration(modifier);
4965          break;
4966        case BOOLEAN:
4967        case BYTE:
4968        case CHAR:
4969        case DOUBLE:
4970        case FLOAT:
4971        case INT:
4972        case LONG:
4973        case SHORT:
4974        case IDENTIFIER:
4975          ret = FieldDeclaration(modifier);
4976          break;
4977        default:
4978          jj_la1[172] = jj_gen;
4979          jj_consume_token(-1);
4980          throw new ParseException();
4981        }
4982      }
4983      break;
4984    default:
4985      jj_la1[173] = jj_gen;
4986      jj_consume_token(-1);
4987      throw new ParseException();
4988    }
4989    {if (true) return ret;}
4990    throw new Error("Missing return statement in function");
4991  }
4992
4993  final public AnnotationMemberDeclaration AnnotationTypeMemberDeclaration(Modifier modifier) {
4994        Type type;
4995        String name;
4996        Expression defaultVal = null;
4997    type = Type();
4998    jj_consume_token(IDENTIFIER);
4999                               name = token.image;
5000    jj_consume_token(LPAREN);
5001    jj_consume_token(RPAREN);
5002    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5003    case _DEFAULT:
5004      defaultVal = DefaultValue();
5005      break;
5006    default:
5007      jj_la1[174] = jj_gen;
5008      ;
5009    }
5010    jj_consume_token(SEMICOLON);
5011    int line = modifier.beginLine;
5012    int column = modifier.beginColumn;
5013    { if (line == -1) {line=type.getBeginLine(); column=type.getBeginColumn();} }
5014    {if (true) return new AnnotationMemberDeclaration(line, column, token.endLine, token.endColumn, modifier.modifiers, modifier.annotations, type, name, defaultVal);}
5015    throw new Error("Missing return statement in function");
5016  }
5017
5018  final public Expression DefaultValue() {
5019        Expression ret;
5020    jj_consume_token(_DEFAULT);
5021    ret = MemberValue();
5022    {if (true) return ret;}
5023    throw new Error("Missing return statement in function");
5024  }
5025
5026  private boolean jj_2_1(int xla) {
5027    jj_la = xla; jj_lastpos = jj_scanpos = token;
5028    try { return !jj_3_1(); }
5029    catch(LookaheadSuccess ls) { return true; }
5030    finally { jj_save(0, xla); }
5031  }
5032
5033  private boolean jj_2_2(int xla) {
5034    jj_la = xla; jj_lastpos = jj_scanpos = token;
5035    try { return !jj_3_2(); }
5036    catch(LookaheadSuccess ls) { return true; }
5037    finally { jj_save(1, xla); }
5038  }
5039
5040  private boolean jj_2_3(int xla) {
5041    jj_la = xla; jj_lastpos = jj_scanpos = token;
5042    try { return !jj_3_3(); }
5043    catch(LookaheadSuccess ls) { return true; }
5044    finally { jj_save(2, xla); }
5045  }
5046
5047  private boolean jj_2_4(int xla) {
5048    jj_la = xla; jj_lastpos = jj_scanpos = token;
5049    try { return !jj_3_4(); }
5050    catch(LookaheadSuccess ls) { return true; }
5051    finally { jj_save(3, xla); }
5052  }
5053
5054  private boolean jj_2_5(int xla) {
5055    jj_la = xla; jj_lastpos = jj_scanpos = token;
5056    try { return !jj_3_5(); }
5057    catch(LookaheadSuccess ls) { return true; }
5058    finally { jj_save(4, xla); }
5059  }
5060
5061  private boolean jj_2_6(int xla) {
5062    jj_la = xla; jj_lastpos = jj_scanpos = token;
5063    try { return !jj_3_6(); }
5064    catch(LookaheadSuccess ls) { return true; }
5065    finally { jj_save(5, xla); }
5066  }
5067
5068  private boolean jj_2_7(int xla) {
5069    jj_la = xla; jj_lastpos = jj_scanpos = token;
5070    try { return !jj_3_7(); }
5071    catch(LookaheadSuccess ls) { return true; }
5072    finally { jj_save(6, xla); }
5073  }
5074
5075  private boolean jj_2_8(int xla) {
5076    jj_la = xla; jj_lastpos = jj_scanpos = token;
5077    try { return !jj_3_8(); }
5078    catch(LookaheadSuccess ls) { return true; }
5079    finally { jj_save(7, xla); }
5080  }
5081
5082  private boolean jj_2_9(int xla) {
5083    jj_la = xla; jj_lastpos = jj_scanpos = token;
5084    try { return !jj_3_9(); }
5085    catch(LookaheadSuccess ls) { return true; }
5086    finally { jj_save(8, xla); }
5087  }
5088
5089  private boolean jj_2_10(int xla) {
5090    jj_la = xla; jj_lastpos = jj_scanpos = token;
5091    try { return !jj_3_10(); }
5092    catch(LookaheadSuccess ls) { return true; }
5093    finally { jj_save(9, xla); }
5094  }
5095
5096  private boolean jj_2_11(int xla) {
5097    jj_la = xla; jj_lastpos = jj_scanpos = token;
5098    try { return !jj_3_11(); }
5099    catch(LookaheadSuccess ls) { return true; }
5100    finally { jj_save(10, xla); }
5101  }
5102
5103  private boolean jj_2_12(int xla) {
5104    jj_la = xla; jj_lastpos = jj_scanpos = token;
5105    try { return !jj_3_12(); }
5106    catch(LookaheadSuccess ls) { return true; }
5107    finally { jj_save(11, xla); }
5108  }
5109
5110  private boolean jj_2_13(int xla) {
5111    jj_la = xla; jj_lastpos = jj_scanpos = token;
5112    try { return !jj_3_13(); }
5113    catch(LookaheadSuccess ls) { return true; }
5114    finally { jj_save(12, xla); }
5115  }
5116
5117  private boolean jj_2_14(int xla) {
5118    jj_la = xla; jj_lastpos = jj_scanpos = token;
5119    try { return !jj_3_14(); }
5120    catch(LookaheadSuccess ls) { return true; }
5121    finally { jj_save(13, xla); }
5122  }
5123
5124  private boolean jj_2_15(int xla) {
5125    jj_la = xla; jj_lastpos = jj_scanpos = token;
5126    try { return !jj_3_15(); }
5127    catch(LookaheadSuccess ls) { return true; }
5128    finally { jj_save(14, xla); }
5129  }
5130
5131  private boolean jj_2_16(int xla) {
5132    jj_la = xla; jj_lastpos = jj_scanpos = token;
5133    try { return !jj_3_16(); }
5134    catch(LookaheadSuccess ls) { return true; }
5135    finally { jj_save(15, xla); }
5136  }
5137
5138  private boolean jj_2_17(int xla) {
5139    jj_la = xla; jj_lastpos = jj_scanpos = token;
5140    try { return !jj_3_17(); }
5141    catch(LookaheadSuccess ls) { return true; }
5142    finally { jj_save(16, xla); }
5143  }
5144
5145  private boolean jj_2_18(int xla) {
5146    jj_la = xla; jj_lastpos = jj_scanpos = token;
5147    try { return !jj_3_18(); }
5148    catch(LookaheadSuccess ls) { return true; }
5149    finally { jj_save(17, xla); }
5150  }
5151
5152  private boolean jj_2_19(int xla) {
5153    jj_la = xla; jj_lastpos = jj_scanpos = token;
5154    try { return !jj_3_19(); }
5155    catch(LookaheadSuccess ls) { return true; }
5156    finally { jj_save(18, xla); }
5157  }
5158
5159  private boolean jj_2_20(int xla) {
5160    jj_la = xla; jj_lastpos = jj_scanpos = token;
5161    try { return !jj_3_20(); }
5162    catch(LookaheadSuccess ls) { return true; }
5163    finally { jj_save(19, xla); }
5164  }
5165
5166  private boolean jj_2_21(int xla) {
5167    jj_la = xla; jj_lastpos = jj_scanpos = token;
5168    try { return !jj_3_21(); }
5169    catch(LookaheadSuccess ls) { return true; }
5170    finally { jj_save(20, xla); }
5171  }
5172
5173  private boolean jj_2_22(int xla) {
5174    jj_la = xla; jj_lastpos = jj_scanpos = token;
5175    try { return !jj_3_22(); }
5176    catch(LookaheadSuccess ls) { return true; }
5177    finally { jj_save(21, xla); }
5178  }
5179
5180  private boolean jj_2_23(int xla) {
5181    jj_la = xla; jj_lastpos = jj_scanpos = token;
5182    try { return !jj_3_23(); }
5183    catch(LookaheadSuccess ls) { return true; }
5184    finally { jj_save(22, xla); }
5185  }
5186
5187  private boolean jj_2_24(int xla) {
5188    jj_la = xla; jj_lastpos = jj_scanpos = token;
5189    try { return !jj_3_24(); }
5190    catch(LookaheadSuccess ls) { return true; }
5191    finally { jj_save(23, xla); }
5192  }
5193
5194  private boolean jj_2_25(int xla) {
5195    jj_la = xla; jj_lastpos = jj_scanpos = token;
5196    try { return !jj_3_25(); }
5197    catch(LookaheadSuccess ls) { return true; }
5198    finally { jj_save(24, xla); }
5199  }
5200
5201  private boolean jj_2_26(int xla) {
5202    jj_la = xla; jj_lastpos = jj_scanpos = token;
5203    try { return !jj_3_26(); }
5204    catch(LookaheadSuccess ls) { return true; }
5205    finally { jj_save(25, xla); }
5206  }
5207
5208  private boolean jj_2_27(int xla) {
5209    jj_la = xla; jj_lastpos = jj_scanpos = token;
5210    try { return !jj_3_27(); }
5211    catch(LookaheadSuccess ls) { return true; }
5212    finally { jj_save(26, xla); }
5213  }
5214
5215  private boolean jj_2_28(int xla) {
5216    jj_la = xla; jj_lastpos = jj_scanpos = token;
5217    try { return !jj_3_28(); }
5218    catch(LookaheadSuccess ls) { return true; }
5219    finally { jj_save(27, xla); }
5220  }
5221
5222  private boolean jj_2_29(int xla) {
5223    jj_la = xla; jj_lastpos = jj_scanpos = token;
5224    try { return !jj_3_29(); }
5225    catch(LookaheadSuccess ls) { return true; }
5226    finally { jj_save(28, xla); }
5227  }
5228
5229  private boolean jj_2_30(int xla) {
5230    jj_la = xla; jj_lastpos = jj_scanpos = token;
5231    try { return !jj_3_30(); }
5232    catch(LookaheadSuccess ls) { return true; }
5233    finally { jj_save(29, xla); }
5234  }
5235
5236  private boolean jj_2_31(int xla) {
5237    jj_la = xla; jj_lastpos = jj_scanpos = token;
5238    try { return !jj_3_31(); }
5239    catch(LookaheadSuccess ls) { return true; }
5240    finally { jj_save(30, xla); }
5241  }
5242
5243  private boolean jj_2_32(int xla) {
5244    jj_la = xla; jj_lastpos = jj_scanpos = token;
5245    try { return !jj_3_32(); }
5246    catch(LookaheadSuccess ls) { return true; }
5247    finally { jj_save(31, xla); }
5248  }
5249
5250  private boolean jj_2_33(int xla) {
5251    jj_la = xla; jj_lastpos = jj_scanpos = token;
5252    try { return !jj_3_33(); }
5253    catch(LookaheadSuccess ls) { return true; }
5254    finally { jj_save(32, xla); }
5255  }
5256
5257  private boolean jj_2_34(int xla) {
5258    jj_la = xla; jj_lastpos = jj_scanpos = token;
5259    try { return !jj_3_34(); }
5260    catch(LookaheadSuccess ls) { return true; }
5261    finally { jj_save(33, xla); }
5262  }
5263
5264  private boolean jj_2_35(int xla) {
5265    jj_la = xla; jj_lastpos = jj_scanpos = token;
5266    try { return !jj_3_35(); }
5267    catch(LookaheadSuccess ls) { return true; }
5268    finally { jj_save(34, xla); }
5269  }
5270
5271  private boolean jj_2_36(int xla) {
5272    jj_la = xla; jj_lastpos = jj_scanpos = token;
5273    try { return !jj_3_36(); }
5274    catch(LookaheadSuccess ls) { return true; }
5275    finally { jj_save(35, xla); }
5276  }
5277
5278  private boolean jj_2_37(int xla) {
5279    jj_la = xla; jj_lastpos = jj_scanpos = token;
5280    try { return !jj_3_37(); }
5281    catch(LookaheadSuccess ls) { return true; }
5282    finally { jj_save(36, xla); }
5283  }
5284
5285  private boolean jj_2_38(int xla) {
5286    jj_la = xla; jj_lastpos = jj_scanpos = token;
5287    try { return !jj_3_38(); }
5288    catch(LookaheadSuccess ls) { return true; }
5289    finally { jj_save(37, xla); }
5290  }
5291
5292  private boolean jj_2_39(int xla) {
5293    jj_la = xla; jj_lastpos = jj_scanpos = token;
5294    try { return !jj_3_39(); }
5295    catch(LookaheadSuccess ls) { return true; }
5296    finally { jj_save(38, xla); }
5297  }
5298
5299  private boolean jj_2_40(int xla) {
5300    jj_la = xla; jj_lastpos = jj_scanpos = token;
5301    try { return !jj_3_40(); }
5302    catch(LookaheadSuccess ls) { return true; }
5303    finally { jj_save(39, xla); }
5304  }
5305
5306  private boolean jj_2_41(int xla) {
5307    jj_la = xla; jj_lastpos = jj_scanpos = token;
5308    try { return !jj_3_41(); }
5309    catch(LookaheadSuccess ls) { return true; }
5310    finally { jj_save(40, xla); }
5311  }
5312
5313  private boolean jj_2_42(int xla) {
5314    jj_la = xla; jj_lastpos = jj_scanpos = token;
5315    try { return !jj_3_42(); }
5316    catch(LookaheadSuccess ls) { return true; }
5317    finally { jj_save(41, xla); }
5318  }
5319
5320  private boolean jj_2_43(int xla) {
5321    jj_la = xla; jj_lastpos = jj_scanpos = token;
5322    try { return !jj_3_43(); }
5323    catch(LookaheadSuccess ls) { return true; }
5324    finally { jj_save(42, xla); }
5325  }
5326
5327  private boolean jj_2_44(int xla) {
5328    jj_la = xla; jj_lastpos = jj_scanpos = token;
5329    try { return !jj_3_44(); }
5330    catch(LookaheadSuccess ls) { return true; }
5331    finally { jj_save(43, xla); }
5332  }
5333
5334  private boolean jj_2_45(int xla) {
5335    jj_la = xla; jj_lastpos = jj_scanpos = token;
5336    try { return !jj_3_45(); }
5337    catch(LookaheadSuccess ls) { return true; }
5338    finally { jj_save(44, xla); }
5339  }
5340
5341  private boolean jj_2_46(int xla) {
5342    jj_la = xla; jj_lastpos = jj_scanpos = token;
5343    try { return !jj_3_46(); }
5344    catch(LookaheadSuccess ls) { return true; }
5345    finally { jj_save(45, xla); }
5346  }
5347
5348  private boolean jj_2_47(int xla) {
5349    jj_la = xla; jj_lastpos = jj_scanpos = token;
5350    try { return !jj_3_47(); }
5351    catch(LookaheadSuccess ls) { return true; }
5352    finally { jj_save(46, xla); }
5353  }
5354
5355  private boolean jj_3R_172() {
5356    if (jj_3R_168()) return true;
5357    Token xsp;
5358    xsp = jj_scanpos;
5359    if (jj_3R_207()) jj_scanpos = xsp;
5360    return false;
5361  }
5362
5363  private boolean jj_3R_294() {
5364    if (jj_3R_133()) return true;
5365    Token xsp;
5366    while (true) {
5367      xsp = jj_scanpos;
5368      if (jj_3_25()) { jj_scanpos = xsp; break; }
5369    }
5370    return false;
5371  }
5372
5373  private boolean jj_3R_422() {
5374    if (jj_3R_100()) return true;
5375    return false;
5376  }
5377
5378  private boolean jj_3R_155() {
5379    if (jj_3R_94()) return true;
5380    if (jj_scan_token(RPAREN)) return true;
5381    if (jj_3R_201()) return true;
5382    return false;
5383  }
5384
5385  private boolean jj_3R_424() {
5386    Token xsp;
5387    while (true) {
5388      xsp = jj_scanpos;
5389      if (jj_3R_437()) { jj_scanpos = xsp; break; }
5390    }
5391    xsp = jj_scanpos;
5392    if (jj_3R_438()) jj_scanpos = xsp;
5393    return false;
5394  }
5395
5396  private boolean jj_3_24() {
5397    if (jj_3R_107()) return true;
5398    if (jj_scan_token(RPAREN)) return true;
5399    if (jj_3R_174()) return true;
5400    return false;
5401  }
5402
5403  private boolean jj_3R_88() {
5404    if (jj_scan_token(LBRACKET)) return true;
5405    if (jj_scan_token(RBRACKET)) return true;
5406    return false;
5407  }
5408
5409  private boolean jj_3R_421() {
5410    if (jj_scan_token(IDENTIFIER)) return true;
5411    return false;
5412  }
5413
5414  private boolean jj_3R_423() {
5415    if (jj_3R_436()) return true;
5416    return false;
5417  }
5418
5419  private boolean jj_3R_388() {
5420    if (jj_scan_token(COMMA)) return true;
5421    if (jj_3R_172()) return true;
5422    return false;
5423  }
5424
5425  private boolean jj_3R_361() {
5426    if (jj_scan_token(TRY)) return true;
5427    Token xsp;
5428    xsp = jj_scanpos;
5429    if (jj_3R_423()) jj_scanpos = xsp;
5430    if (jj_3R_128()) return true;
5431    xsp = jj_scanpos;
5432    if (jj_3R_424()) {
5433    jj_scanpos = xsp;
5434    if (jj_3R_425()) return true;
5435    }
5436    return false;
5437  }
5438
5439  private boolean jj_3R_154() {
5440    if (jj_3R_123()) return true;
5441    return false;
5442  }
5443
5444  private boolean jj_3R_302() {
5445    if (jj_3R_87()) return true;
5446    if (jj_3R_172()) return true;
5447    Token xsp;
5448    while (true) {
5449      xsp = jj_scanpos;
5450      if (jj_3R_388()) { jj_scanpos = xsp; break; }
5451    }
5452    if (jj_scan_token(SEMICOLON)) return true;
5453    return false;
5454  }
5455
5456  private boolean jj_3R_104() {
5457    if (jj_scan_token(LPAREN)) return true;
5458    Token xsp;
5459    while (true) {
5460      xsp = jj_scanpos;
5461      if (jj_3R_154()) { jj_scanpos = xsp; break; }
5462    }
5463    xsp = jj_scanpos;
5464    if (jj_3_24()) {
5465    jj_scanpos = xsp;
5466    if (jj_3R_155()) return true;
5467    }
5468    return false;
5469  }
5470
5471  private boolean jj_3R_241() {
5472    if (jj_scan_token(SEMICOLON)) return true;
5473    return false;
5474  }
5475
5476  private boolean jj_3R_420() {
5477    if (jj_scan_token(IDENTIFIER)) return true;
5478    return false;
5479  }
5480
5481  private boolean jj_3R_106() {
5482    if (jj_scan_token(DECR)) return true;
5483    return false;
5484  }
5485
5486  private boolean jj_3_23() {
5487    Token xsp;
5488    xsp = jj_scanpos;
5489    if (jj_3R_105()) {
5490    jj_scanpos = xsp;
5491    if (jj_3R_106()) return true;
5492    }
5493    return false;
5494  }
5495
5496  private boolean jj_3R_105() {
5497    if (jj_scan_token(INCR)) return true;
5498    return false;
5499  }
5500
5501  private boolean jj_3_5() {
5502    if (jj_3R_87()) return true;
5503    if (jj_scan_token(IDENTIFIER)) return true;
5504    Token xsp;
5505    while (true) {
5506      xsp = jj_scanpos;
5507      if (jj_3R_88()) { jj_scanpos = xsp; break; }
5508    }
5509    xsp = jj_scanpos;
5510    if (jj_scan_token(88)) {
5511    jj_scanpos = xsp;
5512    if (jj_scan_token(91)) {
5513    jj_scanpos = xsp;
5514    if (jj_scan_token(87)) return true;
5515    }
5516    }
5517    return false;
5518  }
5519
5520  private boolean jj_3R_86() {
5521    if (jj_3R_125()) return true;
5522    return false;
5523  }
5524
5525  private boolean jj_3_22() {
5526    if (jj_3R_104()) return true;
5527    return false;
5528  }
5529
5530  private boolean jj_3_4() {
5531    Token xsp;
5532    xsp = jj_scanpos;
5533    if (jj_3R_86()) jj_scanpos = xsp;
5534    if (jj_scan_token(IDENTIFIER)) return true;
5535    if (jj_scan_token(LPAREN)) return true;
5536    return false;
5537  }
5538
5539  private boolean jj_3R_216() {
5540    if (jj_3R_245()) return true;
5541    return false;
5542  }
5543
5544  private boolean jj_3R_267() {
5545    if (jj_3R_294()) return true;
5546    Token xsp;
5547    xsp = jj_scanpos;
5548    if (jj_3_23()) jj_scanpos = xsp;
5549    return false;
5550  }
5551
5552  private boolean jj_3R_277() {
5553    if (jj_3R_303()) return true;
5554    return false;
5555  }
5556
5557  private boolean jj_3R_360() {
5558    if (jj_scan_token(SYNCHRONIZED)) return true;
5559    if (jj_scan_token(LPAREN)) return true;
5560    if (jj_3R_100()) return true;
5561    if (jj_scan_token(RPAREN)) return true;
5562    if (jj_3R_128()) return true;
5563    return false;
5564  }
5565
5566  private boolean jj_3R_271() {
5567    if (jj_scan_token(_DEFAULT)) return true;
5568    if (jj_3R_116()) return true;
5569    return false;
5570  }
5571
5572  private boolean jj_3R_276() {
5573    if (jj_3R_302()) return true;
5574    return false;
5575  }
5576
5577  private boolean jj_3R_235() {
5578    if (jj_3R_104()) return true;
5579    return false;
5580  }
5581
5582  private boolean jj_3R_236() {
5583    if (jj_3R_267()) return true;
5584    return false;
5585  }
5586
5587  private boolean jj_3R_266() {
5588    if (jj_scan_token(BANG)) return true;
5589    return false;
5590  }
5591
5592  private boolean jj_3R_275() {
5593    if (jj_3R_301()) return true;
5594    return false;
5595  }
5596
5597  private boolean jj_3R_265() {
5598    if (jj_scan_token(TILDE)) return true;
5599    return false;
5600  }
5601
5602  private boolean jj_3R_274() {
5603    if (jj_3R_300()) return true;
5604    return false;
5605  }
5606
5607  private boolean jj_3R_234() {
5608    Token xsp;
5609    xsp = jj_scanpos;
5610    if (jj_3R_265()) {
5611    jj_scanpos = xsp;
5612    if (jj_3R_266()) return true;
5613    }
5614    if (jj_3R_174()) return true;
5615    return false;
5616  }
5617
5618  private boolean jj_3R_273() {
5619    if (jj_3R_299()) return true;
5620    return false;
5621  }
5622
5623  private boolean jj_3R_272() {
5624    if (jj_3R_298()) return true;
5625    return false;
5626  }
5627
5628  private boolean jj_3R_359() {
5629    if (jj_scan_token(THROW)) return true;
5630    if (jj_3R_100()) return true;
5631    if (jj_scan_token(SEMICOLON)) return true;
5632    return false;
5633  }
5634
5635  private boolean jj_3R_201() {
5636    Token xsp;
5637    xsp = jj_scanpos;
5638    if (jj_3R_234()) {
5639    jj_scanpos = xsp;
5640    if (jj_3R_235()) {
5641    jj_scanpos = xsp;
5642    if (jj_3R_236()) return true;
5643    }
5644    }
5645    return false;
5646  }
5647
5648  private boolean jj_3R_358() {
5649    if (jj_scan_token(RETURN)) return true;
5650    Token xsp;
5651    xsp = jj_scanpos;
5652    if (jj_3R_422()) jj_scanpos = xsp;
5653    if (jj_scan_token(SEMICOLON)) return true;
5654    return false;
5655  }
5656
5657  private boolean jj_3R_461() {
5658    if (jj_scan_token(COMMA)) return true;
5659    if (jj_3R_100()) return true;
5660    return false;
5661  }
5662
5663  private boolean jj_3R_240() {
5664    if (jj_3R_116()) return true;
5665    Token xsp;
5666    xsp = jj_scanpos;
5667    if (jj_3R_271()) jj_scanpos = xsp;
5668    xsp = jj_scanpos;
5669    if (jj_3R_272()) {
5670    jj_scanpos = xsp;
5671    if (jj_3R_273()) {
5672    jj_scanpos = xsp;
5673    if (jj_3R_274()) {
5674    jj_scanpos = xsp;
5675    if (jj_3R_275()) {
5676    jj_scanpos = xsp;
5677    if (jj_3R_276()) {
5678    jj_scanpos = xsp;
5679    if (jj_3R_277()) return true;
5680    }
5681    }
5682    }
5683    }
5684    }
5685    return false;
5686  }
5687
5688  private boolean jj_3R_242() {
5689    if (jj_scan_token(DECR)) return true;
5690    if (jj_3R_174()) return true;
5691    return false;
5692  }
5693
5694  private boolean jj_3R_357() {
5695    if (jj_scan_token(CONTINUE)) return true;
5696    Token xsp;
5697    xsp = jj_scanpos;
5698    if (jj_3R_421()) jj_scanpos = xsp;
5699    if (jj_scan_token(SEMICOLON)) return true;
5700    return false;
5701  }
5702
5703  private boolean jj_3_6() {
5704    if (jj_3R_89()) return true;
5705    return false;
5706  }
5707
5708  private boolean jj_3R_417() {
5709    if (jj_scan_token(ELSE)) return true;
5710    if (jj_3R_306()) return true;
5711    return false;
5712  }
5713
5714  private boolean jj_3R_118() {
5715    if (jj_scan_token(INCR)) return true;
5716    if (jj_3R_174()) return true;
5717    return false;
5718  }
5719
5720  private boolean jj_3R_435() {
5721    if (jj_3R_452()) return true;
5722    return false;
5723  }
5724
5725  private boolean jj_3R_211() {
5726    if (jj_3R_201()) return true;
5727    return false;
5728  }
5729
5730  private boolean jj_3R_206() {
5731    Token xsp;
5732    xsp = jj_scanpos;
5733    if (jj_3_6()) {
5734    jj_scanpos = xsp;
5735    if (jj_3R_240()) {
5736    jj_scanpos = xsp;
5737    if (jj_3R_241()) return true;
5738    }
5739    }
5740    return false;
5741  }
5742
5743  private boolean jj_3R_356() {
5744    if (jj_scan_token(BREAK)) return true;
5745    Token xsp;
5746    xsp = jj_scanpos;
5747    if (jj_3R_420()) jj_scanpos = xsp;
5748    if (jj_scan_token(SEMICOLON)) return true;
5749    return false;
5750  }
5751
5752  private boolean jj_3R_171() {
5753    if (jj_3R_206()) return true;
5754    return false;
5755  }
5756
5757  private boolean jj_3R_452() {
5758    if (jj_3R_459()) return true;
5759    return false;
5760  }
5761
5762  private boolean jj_3R_279() {
5763    if (jj_3R_123()) return true;
5764    return false;
5765  }
5766
5767  private boolean jj_3R_244() {
5768    if (jj_scan_token(MINUS)) return true;
5769    return false;
5770  }
5771
5772  private boolean jj_3R_113() {
5773    if (jj_scan_token(LBRACE)) return true;
5774    Token xsp;
5775    while (true) {
5776      xsp = jj_scanpos;
5777      if (jj_3R_171()) { jj_scanpos = xsp; break; }
5778    }
5779    if (jj_scan_token(RBRACE)) return true;
5780    return false;
5781  }
5782
5783  private boolean jj_3R_305() {
5784    if (jj_3R_123()) return true;
5785    return false;
5786  }
5787
5788  private boolean jj_3R_243() {
5789    if (jj_scan_token(PLUS)) return true;
5790    return false;
5791  }
5792
5793  private boolean jj_3R_210() {
5794    Token xsp;
5795    xsp = jj_scanpos;
5796    if (jj_3R_243()) {
5797    jj_scanpos = xsp;
5798    if (jj_3R_244()) return true;
5799    }
5800    if (jj_3R_174()) return true;
5801    return false;
5802  }
5803
5804  private boolean jj_3R_209() {
5805    if (jj_3R_242()) return true;
5806    return false;
5807  }
5808
5809  private boolean jj_3_41() {
5810    if (jj_3R_116()) return true;
5811    if (jj_3R_87()) return true;
5812    if (jj_scan_token(IDENTIFIER)) return true;
5813    return false;
5814  }
5815
5816  private boolean jj_3R_208() {
5817    if (jj_3R_118()) return true;
5818    return false;
5819  }
5820
5821  private boolean jj_3R_280() {
5822    if (jj_scan_token(BIT_AND)) return true;
5823    Token xsp;
5824    while (true) {
5825      xsp = jj_scanpos;
5826      if (jj_3R_305()) { jj_scanpos = xsp; break; }
5827    }
5828    if (jj_3R_198()) return true;
5829    return false;
5830  }
5831
5832  private boolean jj_3R_459() {
5833    if (jj_3R_100()) return true;
5834    Token xsp;
5835    while (true) {
5836      xsp = jj_scanpos;
5837      if (jj_3R_461()) { jj_scanpos = xsp; break; }
5838    }
5839    return false;
5840  }
5841
5842  private boolean jj_3R_245() {
5843    if (jj_scan_token(EXTENDS)) return true;
5844    Token xsp;
5845    while (true) {
5846      xsp = jj_scanpos;
5847      if (jj_3R_279()) { jj_scanpos = xsp; break; }
5848    }
5849    if (jj_3R_198()) return true;
5850    while (true) {
5851      xsp = jj_scanpos;
5852      if (jj_3R_280()) { jj_scanpos = xsp; break; }
5853    }
5854    return false;
5855  }
5856
5857  private boolean jj_3R_458() {
5858    if (jj_3R_459()) return true;
5859    return false;
5860  }
5861
5862  private boolean jj_3R_434() {
5863    if (jj_3R_100()) return true;
5864    return false;
5865  }
5866
5867  private boolean jj_3R_457() {
5868    if (jj_3R_117()) return true;
5869    return false;
5870  }
5871
5872  private boolean jj_3R_174() {
5873    Token xsp;
5874    xsp = jj_scanpos;
5875    if (jj_3R_208()) {
5876    jj_scanpos = xsp;
5877    if (jj_3R_209()) {
5878    jj_scanpos = xsp;
5879    if (jj_3R_210()) {
5880    jj_scanpos = xsp;
5881    if (jj_3R_211()) return true;
5882    }
5883    }
5884    }
5885    return false;
5886  }
5887
5888  private boolean jj_3R_430() {
5889    if (jj_scan_token(REM)) return true;
5890    return false;
5891  }
5892
5893  private boolean jj_3_3() {
5894    if (jj_scan_token(COMMA)) return true;
5895    if (jj_3R_85()) return true;
5896    return false;
5897  }
5898
5899  private boolean jj_3R_429() {
5900    if (jj_scan_token(SLASH)) return true;
5901    return false;
5902  }
5903
5904  private boolean jj_3R_182() {
5905    if (jj_scan_token(IDENTIFIER)) return true;
5906    Token xsp;
5907    xsp = jj_scanpos;
5908    if (jj_3R_216()) jj_scanpos = xsp;
5909    return false;
5910  }
5911
5912  private boolean jj_3R_428() {
5913    if (jj_scan_token(STAR)) return true;
5914    return false;
5915  }
5916
5917  private boolean jj_3R_451() {
5918    Token xsp;
5919    xsp = jj_scanpos;
5920    if (jj_3R_457()) {
5921    jj_scanpos = xsp;
5922    if (jj_3R_458()) return true;
5923    }
5924    return false;
5925  }
5926
5927  private boolean jj_3R_412() {
5928    Token xsp;
5929    xsp = jj_scanpos;
5930    if (jj_3R_428()) {
5931    jj_scanpos = xsp;
5932    if (jj_3R_429()) {
5933    jj_scanpos = xsp;
5934    if (jj_3R_430()) return true;
5935    }
5936    }
5937    if (jj_3R_174()) return true;
5938    return false;
5939  }
5940
5941  private boolean jj_3R_217() {
5942    if (jj_3R_123()) return true;
5943    return false;
5944  }
5945
5946  private boolean jj_3R_408() {
5947    if (jj_3R_113()) return true;
5948    return false;
5949  }
5950
5951  private boolean jj_3_40() {
5952    if (jj_3R_117()) return true;
5953    if (jj_scan_token(COLON)) return true;
5954    return false;
5955  }
5956
5957  private boolean jj_3R_376() {
5958    if (jj_3R_174()) return true;
5959    Token xsp;
5960    while (true) {
5961      xsp = jj_scanpos;
5962      if (jj_3R_412()) { jj_scanpos = xsp; break; }
5963    }
5964    return false;
5965  }
5966
5967  private boolean jj_3R_183() {
5968    if (jj_scan_token(COMMA)) return true;
5969    Token xsp;
5970    while (true) {
5971      xsp = jj_scanpos;
5972      if (jj_3R_217()) { jj_scanpos = xsp; break; }
5973    }
5974    if (jj_3R_182()) return true;
5975    return false;
5976  }
5977
5978  private boolean jj_3R_181() {
5979    if (jj_3R_123()) return true;
5980    return false;
5981  }
5982
5983  private boolean jj_3R_433() {
5984    if (jj_3R_451()) return true;
5985    return false;
5986  }
5987
5988  private boolean jj_3R_414() {
5989    if (jj_scan_token(MINUS)) return true;
5990    return false;
5991  }
5992
5993  private boolean jj_3R_413() {
5994    if (jj_scan_token(PLUS)) return true;
5995    return false;
5996  }
5997
5998  private boolean jj_3R_125() {
5999    if (jj_scan_token(LT)) return true;
6000    Token xsp;
6001    while (true) {
6002      xsp = jj_scanpos;
6003      if (jj_3R_181()) { jj_scanpos = xsp; break; }
6004    }
6005    if (jj_3R_182()) return true;
6006    while (true) {
6007      xsp = jj_scanpos;
6008      if (jj_3R_183()) { jj_scanpos = xsp; break; }
6009    }
6010    if (jj_scan_token(GT)) return true;
6011    return false;
6012  }
6013
6014  private boolean jj_3R_419() {
6015    Token xsp;
6016    xsp = jj_scanpos;
6017    if (jj_3R_433()) jj_scanpos = xsp;
6018    if (jj_scan_token(SEMICOLON)) return true;
6019    xsp = jj_scanpos;
6020    if (jj_3R_434()) jj_scanpos = xsp;
6021    if (jj_scan_token(SEMICOLON)) return true;
6022    xsp = jj_scanpos;
6023    if (jj_3R_435()) jj_scanpos = xsp;
6024    return false;
6025  }
6026
6027  private boolean jj_3R_402() {
6028    Token xsp;
6029    xsp = jj_scanpos;
6030    if (jj_3R_413()) {
6031    jj_scanpos = xsp;
6032    if (jj_3R_414()) return true;
6033    }
6034    if (jj_3R_376()) return true;
6035    return false;
6036  }
6037
6038  private boolean jj_3R_418() {
6039    if (jj_3R_117()) return true;
6040    if (jj_scan_token(COLON)) return true;
6041    if (jj_3R_100()) return true;
6042    return false;
6043  }
6044
6045  private boolean jj_3R_372() {
6046    if (jj_3R_376()) return true;
6047    Token xsp;
6048    while (true) {
6049      xsp = jj_scanpos;
6050      if (jj_3R_402()) { jj_scanpos = xsp; break; }
6051    }
6052    return false;
6053  }
6054
6055  private boolean jj_3R_355() {
6056    if (jj_scan_token(FOR)) return true;
6057    if (jj_scan_token(LPAREN)) return true;
6058    Token xsp;
6059    xsp = jj_scanpos;
6060    if (jj_3R_418()) {
6061    jj_scanpos = xsp;
6062    if (jj_3R_419()) return true;
6063    }
6064    if (jj_scan_token(RPAREN)) return true;
6065    if (jj_3R_306()) return true;
6066    return false;
6067  }
6068
6069  private boolean jj_3R_407() {
6070    if (jj_3R_187()) return true;
6071    return false;
6072  }
6073
6074  private boolean jj_3_21() {
6075    if (jj_3R_103()) return true;
6076    return false;
6077  }
6078
6079  private boolean jj_3_20() {
6080    if (jj_3R_102()) return true;
6081    return false;
6082  }
6083
6084  private boolean jj_3R_124() {
6085    if (jj_3R_123()) return true;
6086    return false;
6087  }
6088
6089  private boolean jj_3R_101() {
6090    if (jj_scan_token(LSHIFT)) return true;
6091    return false;
6092  }
6093
6094  private boolean jj_3_19() {
6095    Token xsp;
6096    xsp = jj_scanpos;
6097    if (jj_3R_101()) {
6098    jj_scanpos = xsp;
6099    if (jj_3_20()) {
6100    jj_scanpos = xsp;
6101    if (jj_3_21()) return true;
6102    }
6103    }
6104    if (jj_3R_372()) return true;
6105    return false;
6106  }
6107
6108  private boolean jj_3R_85() {
6109    Token xsp;
6110    while (true) {
6111      xsp = jj_scanpos;
6112      if (jj_3R_124()) { jj_scanpos = xsp; break; }
6113    }
6114    if (jj_scan_token(IDENTIFIER)) return true;
6115    xsp = jj_scanpos;
6116    if (jj_3R_407()) jj_scanpos = xsp;
6117    xsp = jj_scanpos;
6118    if (jj_3R_408()) jj_scanpos = xsp;
6119    return false;
6120  }
6121
6122  private boolean jj_3R_398() {
6123    if (jj_3R_206()) return true;
6124    return false;
6125  }
6126
6127  private boolean jj_3R_373() {
6128    if (jj_scan_token(INSTANCEOF)) return true;
6129    if (jj_3R_87()) return true;
6130    return false;
6131  }
6132
6133  private boolean jj_3R_354() {
6134    if (jj_scan_token(DO)) return true;
6135    if (jj_3R_306()) return true;
6136    if (jj_scan_token(WHILE)) return true;
6137    if (jj_scan_token(LPAREN)) return true;
6138    if (jj_3R_100()) return true;
6139    if (jj_scan_token(RPAREN)) return true;
6140    if (jj_scan_token(SEMICOLON)) return true;
6141    return false;
6142  }
6143
6144  private boolean jj_3R_370() {
6145    if (jj_3R_372()) return true;
6146    Token xsp;
6147    while (true) {
6148      xsp = jj_scanpos;
6149      if (jj_3_19()) { jj_scanpos = xsp; break; }
6150    }
6151    return false;
6152  }
6153
6154  private boolean jj_3R_383() {
6155    if (jj_scan_token(SEMICOLON)) return true;
6156    Token xsp;
6157    while (true) {
6158      xsp = jj_scanpos;
6159      if (jj_3R_398()) { jj_scanpos = xsp; break; }
6160    }
6161    return false;
6162  }
6163
6164  private boolean jj_3R_395() {
6165    if (jj_scan_token(GE)) return true;
6166    return false;
6167  }
6168
6169  private boolean jj_3R_394() {
6170    if (jj_scan_token(LE)) return true;
6171    return false;
6172  }
6173
6174  private boolean jj_3R_393() {
6175    if (jj_scan_token(GT)) return true;
6176    return false;
6177  }
6178
6179  private boolean jj_3R_392() {
6180    if (jj_scan_token(LT)) return true;
6181    return false;
6182  }
6183
6184  private boolean jj_3R_377() {
6185    Token xsp;
6186    xsp = jj_scanpos;
6187    if (jj_3R_392()) {
6188    jj_scanpos = xsp;
6189    if (jj_3R_393()) {
6190    jj_scanpos = xsp;
6191    if (jj_3R_394()) {
6192    jj_scanpos = xsp;
6193    if (jj_3R_395()) return true;
6194    }
6195    }
6196    }
6197    if (jj_3R_370()) return true;
6198    return false;
6199  }
6200
6201  private boolean jj_3R_353() {
6202    if (jj_scan_token(WHILE)) return true;
6203    if (jj_scan_token(LPAREN)) return true;
6204    if (jj_3R_100()) return true;
6205    if (jj_scan_token(RPAREN)) return true;
6206    if (jj_3R_306()) return true;
6207    return false;
6208  }
6209
6210  private boolean jj_3R_382() {
6211    if (jj_3R_85()) return true;
6212    Token xsp;
6213    while (true) {
6214      xsp = jj_scanpos;
6215      if (jj_3_3()) { jj_scanpos = xsp; break; }
6216    }
6217    return false;
6218  }
6219
6220  private boolean jj_3R_368() {
6221    if (jj_3R_370()) return true;
6222    Token xsp;
6223    while (true) {
6224      xsp = jj_scanpos;
6225      if (jj_3R_377()) { jj_scanpos = xsp; break; }
6226    }
6227    return false;
6228  }
6229
6230  private boolean jj_3R_381() {
6231    if (jj_3R_397()) return true;
6232    return false;
6233  }
6234
6235  private boolean jj_3R_369() {
6236    if (jj_scan_token(BIT_AND)) return true;
6237    if (jj_3R_345()) return true;
6238    return false;
6239  }
6240
6241  private boolean jj_3R_299() {
6242    if (jj_scan_token(ENUM)) return true;
6243    if (jj_3R_119()) return true;
6244    Token xsp;
6245    xsp = jj_scanpos;
6246    if (jj_3R_381()) jj_scanpos = xsp;
6247    if (jj_scan_token(LBRACE)) return true;
6248    xsp = jj_scanpos;
6249    if (jj_3R_382()) jj_scanpos = xsp;
6250    xsp = jj_scanpos;
6251    if (jj_scan_token(88)) jj_scanpos = xsp;
6252    xsp = jj_scanpos;
6253    if (jj_3R_383()) jj_scanpos = xsp;
6254    if (jj_scan_token(RBRACE)) return true;
6255    return false;
6256  }
6257
6258  private boolean jj_3R_364() {
6259    if (jj_3R_368()) return true;
6260    Token xsp;
6261    xsp = jj_scanpos;
6262    if (jj_3R_373()) jj_scanpos = xsp;
6263    return false;
6264  }
6265
6266  private boolean jj_3R_352() {
6267    if (jj_scan_token(IF)) return true;
6268    if (jj_scan_token(LPAREN)) return true;
6269    if (jj_3R_100()) return true;
6270    if (jj_scan_token(RPAREN)) return true;
6271    if (jj_3R_306()) return true;
6272    Token xsp;
6273    xsp = jj_scanpos;
6274    if (jj_3R_417()) jj_scanpos = xsp;
6275    return false;
6276  }
6277
6278  private boolean jj_3R_405() {
6279    if (jj_3R_123()) return true;
6280    return false;
6281  }
6282
6283  private boolean jj_3R_375() {
6284    if (jj_scan_token(NE)) return true;
6285    return false;
6286  }
6287
6288  private boolean jj_3R_374() {
6289    if (jj_scan_token(EQ)) return true;
6290    return false;
6291  }
6292
6293  private boolean jj_3R_371() {
6294    Token xsp;
6295    xsp = jj_scanpos;
6296    if (jj_3R_374()) {
6297    jj_scanpos = xsp;
6298    if (jj_3R_375()) return true;
6299    }
6300    if (jj_3R_364()) return true;
6301    return false;
6302  }
6303
6304  private boolean jj_3R_365() {
6305    if (jj_scan_token(XOR)) return true;
6306    if (jj_3R_315()) return true;
6307    return false;
6308  }
6309
6310  private boolean jj_3R_346() {
6311    if (jj_scan_token(BIT_OR)) return true;
6312    if (jj_3R_293()) return true;
6313    return false;
6314  }
6315
6316  private boolean jj_3R_406() {
6317    if (jj_scan_token(COMMA)) return true;
6318    if (jj_3R_198()) return true;
6319    return false;
6320  }
6321
6322  private boolean jj_3R_345() {
6323    if (jj_3R_364()) return true;
6324    Token xsp;
6325    while (true) {
6326      xsp = jj_scanpos;
6327      if (jj_3R_371()) { jj_scanpos = xsp; break; }
6328    }
6329    return false;
6330  }
6331
6332  private boolean jj_3R_450() {
6333    if (jj_scan_token(_DEFAULT)) return true;
6334    return false;
6335  }
6336
6337  private boolean jj_3R_449() {
6338    if (jj_scan_token(CASE)) return true;
6339    if (jj_3R_100()) return true;
6340    return false;
6341  }
6342
6343  private boolean jj_3R_397() {
6344    if (jj_scan_token(IMPLEMENTS)) return true;
6345    Token xsp;
6346    while (true) {
6347      xsp = jj_scanpos;
6348      if (jj_3R_405()) { jj_scanpos = xsp; break; }
6349    }
6350    if (jj_3R_198()) return true;
6351    while (true) {
6352      xsp = jj_scanpos;
6353      if (jj_3R_406()) { jj_scanpos = xsp; break; }
6354    }
6355    return false;
6356  }
6357
6358  private boolean jj_3R_403() {
6359    if (jj_3R_123()) return true;
6360    return false;
6361  }
6362
6363  private boolean jj_3R_316() {
6364    if (jj_scan_token(SC_AND)) return true;
6365    if (jj_3R_264()) return true;
6366    return false;
6367  }
6368
6369  private boolean jj_3R_315() {
6370    if (jj_3R_345()) return true;
6371    Token xsp;
6372    while (true) {
6373      xsp = jj_scanpos;
6374      if (jj_3R_369()) { jj_scanpos = xsp; break; }
6375    }
6376    return false;
6377  }
6378
6379  private boolean jj_3R_432() {
6380    Token xsp;
6381    xsp = jj_scanpos;
6382    if (jj_3R_449()) {
6383    jj_scanpos = xsp;
6384    if (jj_3R_450()) return true;
6385    }
6386    if (jj_scan_token(COLON)) return true;
6387    if (jj_3R_184()) return true;
6388    return false;
6389  }
6390
6391  private boolean jj_3R_295() {
6392    if (jj_scan_token(SC_OR)) return true;
6393    if (jj_3R_233()) return true;
6394    return false;
6395  }
6396
6397  private boolean jj_3R_404() {
6398    if (jj_scan_token(COMMA)) return true;
6399    if (jj_3R_198()) return true;
6400    return false;
6401  }
6402
6403  private boolean jj_3R_396() {
6404    if (jj_scan_token(EXTENDS)) return true;
6405    Token xsp;
6406    while (true) {
6407      xsp = jj_scanpos;
6408      if (jj_3R_403()) { jj_scanpos = xsp; break; }
6409    }
6410    if (jj_3R_198()) return true;
6411    while (true) {
6412      xsp = jj_scanpos;
6413      if (jj_3R_404()) { jj_scanpos = xsp; break; }
6414    }
6415    return false;
6416  }
6417
6418  private boolean jj_3R_293() {
6419    if (jj_3R_315()) return true;
6420    Token xsp;
6421    while (true) {
6422      xsp = jj_scanpos;
6423      if (jj_3R_365()) { jj_scanpos = xsp; break; }
6424    }
6425    return false;
6426  }
6427
6428  private boolean jj_3R_416() {
6429    if (jj_3R_432()) return true;
6430    return false;
6431  }
6432
6433  private boolean jj_3R_351() {
6434    if (jj_scan_token(SWITCH)) return true;
6435    if (jj_scan_token(LPAREN)) return true;
6436    if (jj_3R_100()) return true;
6437    if (jj_scan_token(RPAREN)) return true;
6438    if (jj_scan_token(LBRACE)) return true;
6439    Token xsp;
6440    while (true) {
6441      xsp = jj_scanpos;
6442      if (jj_3R_416()) { jj_scanpos = xsp; break; }
6443    }
6444    if (jj_scan_token(RBRACE)) return true;
6445    return false;
6446  }
6447
6448  private boolean jj_3R_319() {
6449    if (jj_scan_token(INTERFACE)) return true;
6450    return false;
6451  }
6452
6453  private boolean jj_3R_264() {
6454    if (jj_3R_293()) return true;
6455    Token xsp;
6456    while (true) {
6457      xsp = jj_scanpos;
6458      if (jj_3R_346()) { jj_scanpos = xsp; break; }
6459    }
6460    return false;
6461  }
6462
6463  private boolean jj_3R_380() {
6464    if (jj_3R_397()) return true;
6465    return false;
6466  }
6467
6468  private boolean jj_3R_173() {
6469    if (jj_scan_token(COMMA)) return true;
6470    if (jj_3R_172()) return true;
6471    return false;
6472  }
6473
6474  private boolean jj_3R_379() {
6475    if (jj_3R_396()) return true;
6476    return false;
6477  }
6478
6479  private boolean jj_3R_378() {
6480    if (jj_3R_125()) return true;
6481    return false;
6482  }
6483
6484  private boolean jj_3R_456() {
6485    if (jj_3R_125()) return true;
6486    return false;
6487  }
6488
6489  private boolean jj_3R_233() {
6490    if (jj_3R_264()) return true;
6491    Token xsp;
6492    while (true) {
6493      xsp = jj_scanpos;
6494      if (jj_3R_316()) { jj_scanpos = xsp; break; }
6495    }
6496    return false;
6497  }
6498
6499  private boolean jj_3R_298() {
6500    Token xsp;
6501    xsp = jj_scanpos;
6502    if (jj_scan_token(20)) {
6503    jj_scanpos = xsp;
6504    if (jj_3R_319()) return true;
6505    }
6506    if (jj_3R_119()) return true;
6507    xsp = jj_scanpos;
6508    if (jj_3R_378()) jj_scanpos = xsp;
6509    xsp = jj_scanpos;
6510    if (jj_3R_379()) jj_scanpos = xsp;
6511    xsp = jj_scanpos;
6512    if (jj_3R_380()) jj_scanpos = xsp;
6513    if (jj_3R_113()) return true;
6514    return false;
6515  }
6516
6517  private boolean jj_3R_448() {
6518    if (jj_scan_token(ARROW)) return true;
6519    if (jj_3R_296()) return true;
6520    return false;
6521  }
6522
6523  private boolean jj_3R_447() {
6524    if (jj_scan_token(DOUBLECOLON)) return true;
6525    Token xsp;
6526    xsp = jj_scanpos;
6527    if (jj_3R_456()) jj_scanpos = xsp;
6528    xsp = jj_scanpos;
6529    if (jj_scan_token(78)) {
6530    jj_scanpos = xsp;
6531    if (jj_scan_token(43)) return true;
6532    }
6533    return false;
6534  }
6535
6536  private boolean jj_3R_446() {
6537    if (jj_3R_99()) return true;
6538    if (jj_3R_100()) return true;
6539    return false;
6540  }
6541
6542  private boolean jj_3R_445() {
6543    if (jj_scan_token(DECR)) return true;
6544    return false;
6545  }
6546
6547  private boolean jj_3R_200() {
6548    if (jj_3R_233()) return true;
6549    Token xsp;
6550    while (true) {
6551      xsp = jj_scanpos;
6552      if (jj_3R_295()) { jj_scanpos = xsp; break; }
6553    }
6554    return false;
6555  }
6556
6557  private boolean jj_3R_444() {
6558    if (jj_scan_token(INCR)) return true;
6559    return false;
6560  }
6561
6562  private boolean jj_3R_431() {
6563    Token xsp;
6564    xsp = jj_scanpos;
6565    if (jj_3R_444()) {
6566    jj_scanpos = xsp;
6567    if (jj_3R_445()) {
6568    jj_scanpos = xsp;
6569    if (jj_3R_446()) {
6570    jj_scanpos = xsp;
6571    if (jj_3R_447()) {
6572    jj_scanpos = xsp;
6573    if (jj_3R_448()) return true;
6574    }
6575    }
6576    }
6577    }
6578    return false;
6579  }
6580
6581  private boolean jj_3R_367() {
6582    if (jj_3R_294()) return true;
6583    Token xsp;
6584    xsp = jj_scanpos;
6585    if (jj_3R_431()) jj_scanpos = xsp;
6586    return false;
6587  }
6588
6589  private boolean jj_3R_366() {
6590    if (jj_3R_242()) return true;
6591    return false;
6592  }
6593
6594  private boolean jj_3R_268() {
6595    if (jj_scan_token(HOOK)) return true;
6596    if (jj_3R_100()) return true;
6597    if (jj_scan_token(COLON)) return true;
6598    if (jj_3R_151()) return true;
6599    return false;
6600  }
6601
6602  private boolean jj_3R_151() {
6603    if (jj_3R_200()) return true;
6604    Token xsp;
6605    xsp = jj_scanpos;
6606    if (jj_3R_268()) jj_scanpos = xsp;
6607    return false;
6608  }
6609
6610  private boolean jj_3_39() {
6611    if (jj_3R_118()) return true;
6612    return false;
6613  }
6614
6615  private boolean jj_3R_350() {
6616    Token xsp;
6617    xsp = jj_scanpos;
6618    if (jj_3_39()) {
6619    jj_scanpos = xsp;
6620    if (jj_3R_366()) {
6621    jj_scanpos = xsp;
6622    if (jj_3R_367()) return true;
6623    }
6624    }
6625    if (jj_scan_token(SEMICOLON)) return true;
6626    return false;
6627  }
6628
6629  private boolean jj_3R_150() {
6630    if (jj_scan_token(ORASSIGN)) return true;
6631    return false;
6632  }
6633
6634  private boolean jj_3R_149() {
6635    if (jj_scan_token(XORASSIGN)) return true;
6636    return false;
6637  }
6638
6639  private boolean jj_3R_148() {
6640    if (jj_scan_token(ANDASSIGN)) return true;
6641    return false;
6642  }
6643
6644  private boolean jj_3R_147() {
6645    if (jj_scan_token(RUNSIGNEDSHIFTASSIGN)) return true;
6646    return false;
6647  }
6648
6649  private boolean jj_3R_146() {
6650    if (jj_scan_token(RSIGNEDSHIFTASSIGN)) return true;
6651    return false;
6652  }
6653
6654  private boolean jj_3R_145() {
6655    if (jj_scan_token(LSHIFTASSIGN)) return true;
6656    return false;
6657  }
6658
6659  private boolean jj_3R_144() {
6660    if (jj_scan_token(MINUSASSIGN)) return true;
6661    return false;
6662  }
6663
6664  private boolean jj_3R_143() {
6665    if (jj_scan_token(PLUSASSIGN)) return true;
6666    return false;
6667  }
6668
6669  private boolean jj_3R_142() {
6670    if (jj_scan_token(REMASSIGN)) return true;
6671    return false;
6672  }
6673
6674  private boolean jj_3R_141() {
6675    if (jj_scan_token(SLASHASSIGN)) return true;
6676    return false;
6677  }
6678
6679  private boolean jj_3R_140() {
6680    if (jj_scan_token(STARASSIGN)) return true;
6681    return false;
6682  }
6683
6684  private boolean jj_3R_139() {
6685    if (jj_scan_token(ASSIGN)) return true;
6686    return false;
6687  }
6688
6689  private boolean jj_3R_318() {
6690    if (jj_3R_128()) return true;
6691    return false;
6692  }
6693
6694  private boolean jj_3R_99() {
6695    Token xsp;
6696    xsp = jj_scanpos;
6697    if (jj_3R_139()) {
6698    jj_scanpos = xsp;
6699    if (jj_3R_140()) {
6700    jj_scanpos = xsp;
6701    if (jj_3R_141()) {
6702    jj_scanpos = xsp;
6703    if (jj_3R_142()) {
6704    jj_scanpos = xsp;
6705    if (jj_3R_143()) {
6706    jj_scanpos = xsp;
6707    if (jj_3R_144()) {
6708    jj_scanpos = xsp;
6709    if (jj_3R_145()) {
6710    jj_scanpos = xsp;
6711    if (jj_3R_146()) {
6712    jj_scanpos = xsp;
6713    if (jj_3R_147()) {
6714    jj_scanpos = xsp;
6715    if (jj_3R_148()) {
6716    jj_scanpos = xsp;
6717    if (jj_3R_149()) {
6718    jj_scanpos = xsp;
6719    if (jj_3R_150()) return true;
6720    }
6721    }
6722    }
6723    }
6724    }
6725    }
6726    }
6727    }
6728    }
6729    }
6730    }
6731    return false;
6732  }
6733
6734  private boolean jj_3R_84() {
6735    if (jj_3R_123()) return true;
6736    return false;
6737  }
6738
6739  private boolean jj_3R_83() {
6740    if (jj_scan_token(STRICTFP)) return true;
6741    return false;
6742  }
6743
6744  private boolean jj_3R_297() {
6745    if (jj_3R_125()) return true;
6746    return false;
6747  }
6748
6749  private boolean jj_3R_317() {
6750    if (jj_3R_100()) return true;
6751    return false;
6752  }
6753
6754  private boolean jj_3R_82() {
6755    if (jj_scan_token(VOLATILE)) return true;
6756    return false;
6757  }
6758
6759  private boolean jj_3R_81() {
6760    if (jj_scan_token(TRANSIENT)) return true;
6761    return false;
6762  }
6763
6764  private boolean jj_3R_114() {
6765    if (jj_3R_123()) return true;
6766    return false;
6767  }
6768
6769  private boolean jj_3R_80() {
6770    if (jj_scan_token(NATIVE)) return true;
6771    return false;
6772  }
6773
6774  private boolean jj_3R_79() {
6775    if (jj_scan_token(SYNCHRONIZED)) return true;
6776    return false;
6777  }
6778
6779  private boolean jj_3R_270() {
6780    if (jj_scan_token(DOUBLECOLON)) return true;
6781    Token xsp;
6782    xsp = jj_scanpos;
6783    if (jj_3R_297()) jj_scanpos = xsp;
6784    xsp = jj_scanpos;
6785    if (jj_scan_token(78)) {
6786    jj_scanpos = xsp;
6787    if (jj_scan_token(43)) return true;
6788    }
6789    return false;
6790  }
6791
6792  private boolean jj_3R_296() {
6793    Token xsp;
6794    xsp = jj_scanpos;
6795    if (jj_3R_317()) {
6796    jj_scanpos = xsp;
6797    if (jj_3R_318()) return true;
6798    }
6799    return false;
6800  }
6801
6802  private boolean jj_3R_78() {
6803    if (jj_scan_token(ABSTRACT)) return true;
6804    return false;
6805  }
6806
6807  private boolean jj_3R_415() {
6808    if (jj_scan_token(COLON)) return true;
6809    if (jj_3R_100()) return true;
6810    return false;
6811  }
6812
6813  private boolean jj_3R_77() {
6814    if (jj_scan_token(FINAL)) return true;
6815    return false;
6816  }
6817
6818  private boolean jj_3R_76() {
6819    if (jj_scan_token(PRIVATE)) return true;
6820    return false;
6821  }
6822
6823  private boolean jj_3R_75() {
6824    if (jj_scan_token(PROTECTED)) return true;
6825    return false;
6826  }
6827
6828  private boolean jj_3R_74() {
6829    if (jj_scan_token(STATIC)) return true;
6830    return false;
6831  }
6832
6833  private boolean jj_3R_349() {
6834    if (jj_scan_token(SEMICOLON)) return true;
6835    return false;
6836  }
6837
6838  private boolean jj_3_34() {
6839    Token xsp;
6840    while (true) {
6841      xsp = jj_scanpos;
6842      if (jj_3R_114()) { jj_scanpos = xsp; break; }
6843    }
6844    if (jj_scan_token(LBRACKET)) return true;
6845    if (jj_scan_token(RBRACKET)) return true;
6846    return false;
6847  }
6848
6849  private boolean jj_3R_73() {
6850    if (jj_scan_token(PUBLIC)) return true;
6851    return false;
6852  }
6853
6854  private boolean jj_3_2() {
6855    Token xsp;
6856    xsp = jj_scanpos;
6857    if (jj_3R_73()) {
6858    jj_scanpos = xsp;
6859    if (jj_3R_74()) {
6860    jj_scanpos = xsp;
6861    if (jj_3R_75()) {
6862    jj_scanpos = xsp;
6863    if (jj_3R_76()) {
6864    jj_scanpos = xsp;
6865    if (jj_3R_77()) {
6866    jj_scanpos = xsp;
6867    if (jj_3R_78()) {
6868    jj_scanpos = xsp;
6869    if (jj_3R_79()) {
6870    jj_scanpos = xsp;
6871    if (jj_3R_80()) {
6872    jj_scanpos = xsp;
6873    if (jj_3R_81()) {
6874    jj_scanpos = xsp;
6875    if (jj_3R_82()) {
6876    jj_scanpos = xsp;
6877    if (jj_3R_83()) {
6878    jj_scanpos = xsp;
6879    if (jj_3R_84()) return true;
6880    }
6881    }
6882    }
6883    }
6884    }
6885    }
6886    }
6887    }
6888    }
6889    }
6890    }
6891    return false;
6892  }
6893
6894  private boolean jj_3R_116() {
6895    Token xsp;
6896    while (true) {
6897      xsp = jj_scanpos;
6898      if (jj_3_2()) { jj_scanpos = xsp; break; }
6899    }
6900    return false;
6901  }
6902
6903  private boolean jj_3_18() {
6904    if (jj_3R_99()) return true;
6905    if (jj_3R_100()) return true;
6906    return false;
6907  }
6908
6909  private boolean jj_3R_269() {
6910    if (jj_scan_token(ARROW)) return true;
6911    if (jj_3R_296()) return true;
6912    return false;
6913  }
6914
6915  private boolean jj_3R_411() {
6916    if (jj_scan_token(COMMA)) return true;
6917    if (jj_3R_119()) return true;
6918    return false;
6919  }
6920
6921  private boolean jj_3R_239() {
6922    Token xsp;
6923    xsp = jj_scanpos;
6924    if (jj_3_18()) {
6925    jj_scanpos = xsp;
6926    if (jj_3R_269()) {
6927    jj_scanpos = xsp;
6928    if (jj_3R_270()) return true;
6929    }
6930    }
6931    return false;
6932  }
6933
6934  private boolean jj_3_38() {
6935    if (jj_3R_117()) return true;
6936    return false;
6937  }
6938
6939  private boolean jj_3R_117() {
6940    if (jj_3R_116()) return true;
6941    if (jj_3R_87()) return true;
6942    if (jj_3R_172()) return true;
6943    Token xsp;
6944    while (true) {
6945      xsp = jj_scanpos;
6946      if (jj_3R_173()) { jj_scanpos = xsp; break; }
6947    }
6948    return false;
6949  }
6950
6951  private boolean jj_3R_100() {
6952    if (jj_3R_151()) return true;
6953    Token xsp;
6954    xsp = jj_scanpos;
6955    if (jj_3R_239()) jj_scanpos = xsp;
6956    return false;
6957  }
6958
6959  private boolean jj_3_37() {
6960    if (jj_3R_116()) return true;
6961    Token xsp;
6962    xsp = jj_scanpos;
6963    if (jj_scan_token(20)) {
6964    jj_scanpos = xsp;
6965    if (jj_scan_token(40)) return true;
6966    }
6967    return false;
6968  }
6969
6970  private boolean jj_3R_283() {
6971    if (jj_3R_306()) return true;
6972    return false;
6973  }
6974
6975  private boolean jj_3R_282() {
6976    if (jj_3R_117()) return true;
6977    if (jj_scan_token(SEMICOLON)) return true;
6978    return false;
6979  }
6980
6981  private boolean jj_3R_281() {
6982    if (jj_3R_116()) return true;
6983    if (jj_3R_298()) return true;
6984    return false;
6985  }
6986
6987  private boolean jj_3R_246() {
6988    Token xsp;
6989    xsp = jj_scanpos;
6990    if (jj_3R_281()) {
6991    jj_scanpos = xsp;
6992    if (jj_3R_282()) {
6993    jj_scanpos = xsp;
6994    if (jj_3R_283()) return true;
6995    }
6996    }
6997    return false;
6998  }
6999
7000  private boolean jj_3R_122() {
7001    if (jj_3R_123()) return true;
7002    return false;
7003  }
7004
7005  private boolean jj_3R_72() {
7006    Token xsp;
7007    while (true) {
7008      xsp = jj_scanpos;
7009      if (jj_3R_122()) { jj_scanpos = xsp; break; }
7010    }
7011    if (jj_scan_token(PACKAGE)) return true;
7012    if (jj_3R_119()) return true;
7013    if (jj_scan_token(SEMICOLON)) return true;
7014    return false;
7015  }
7016
7017  private boolean jj_3_1() {
7018    if (jj_3R_72()) return true;
7019    return false;
7020  }
7021
7022  private boolean jj_3R_401() {
7023    if (jj_3R_119()) return true;
7024    Token xsp;
7025    while (true) {
7026      xsp = jj_scanpos;
7027      if (jj_3R_411()) { jj_scanpos = xsp; break; }
7028    }
7029    return false;
7030  }
7031
7032  private boolean jj_3R_128() {
7033    if (jj_scan_token(LBRACE)) return true;
7034    if (jj_3R_184()) return true;
7035    if (jj_scan_token(RBRACE)) return true;
7036    return false;
7037  }
7038
7039  private boolean jj_3R_227() {
7040    if (jj_scan_token(IDENTIFIER)) return true;
7041    return false;
7042  }
7043
7044  private boolean jj_3R_115() {
7045    if (jj_scan_token(IDENTIFIER)) return true;
7046    if (jj_scan_token(COLON)) return true;
7047    if (jj_3R_306()) return true;
7048    return false;
7049  }
7050
7051  private boolean jj_3R_348() {
7052    if (jj_scan_token(ASSERT)) return true;
7053    if (jj_3R_100()) return true;
7054    Token xsp;
7055    xsp = jj_scanpos;
7056    if (jj_3R_415()) jj_scanpos = xsp;
7057    if (jj_scan_token(SEMICOLON)) return true;
7058    return false;
7059  }
7060
7061  private boolean jj_3_17() {
7062    if (jj_scan_token(DOT)) return true;
7063    if (jj_scan_token(IDENTIFIER)) return true;
7064    return false;
7065  }
7066
7067  private boolean jj_3R_119() {
7068    if (jj_scan_token(IDENTIFIER)) return true;
7069    Token xsp;
7070    while (true) {
7071      xsp = jj_scanpos;
7072      if (jj_3_17()) { jj_scanpos = xsp; break; }
7073    }
7074    return false;
7075  }
7076
7077  private boolean jj_3R_339() {
7078    if (jj_3R_361()) return true;
7079    return false;
7080  }
7081
7082  private boolean jj_3R_338() {
7083    if (jj_3R_360()) return true;
7084    return false;
7085  }
7086
7087  private boolean jj_3R_337() {
7088    if (jj_3R_359()) return true;
7089    return false;
7090  }
7091
7092  private boolean jj_3R_170() {
7093    if (jj_3R_87()) return true;
7094    return false;
7095  }
7096
7097  private boolean jj_3R_336() {
7098    if (jj_3R_358()) return true;
7099    return false;
7100  }
7101
7102  private boolean jj_3R_169() {
7103    if (jj_scan_token(VOID)) return true;
7104    return false;
7105  }
7106
7107  private boolean jj_3R_335() {
7108    if (jj_3R_357()) return true;
7109    return false;
7110  }
7111
7112  private boolean jj_3R_334() {
7113    if (jj_3R_356()) return true;
7114    return false;
7115  }
7116
7117  private boolean jj_3R_333() {
7118    if (jj_3R_355()) return true;
7119    return false;
7120  }
7121
7122  private boolean jj_3R_332() {
7123    if (jj_3R_354()) return true;
7124    return false;
7125  }
7126
7127  private boolean jj_3R_331() {
7128    if (jj_3R_353()) return true;
7129    return false;
7130  }
7131
7132  private boolean jj_3R_111() {
7133    Token xsp;
7134    xsp = jj_scanpos;
7135    if (jj_3R_169()) {
7136    jj_scanpos = xsp;
7137    if (jj_3R_170()) return true;
7138    }
7139    return false;
7140  }
7141
7142  private boolean jj_3R_330() {
7143    if (jj_3R_352()) return true;
7144    return false;
7145  }
7146
7147  private boolean jj_3R_329() {
7148    if (jj_3R_351()) return true;
7149    return false;
7150  }
7151
7152  private boolean jj_3R_328() {
7153    if (jj_3R_350()) return true;
7154    return false;
7155  }
7156
7157  private boolean jj_3R_327() {
7158    if (jj_3R_349()) return true;
7159    return false;
7160  }
7161
7162  private boolean jj_3R_326() {
7163    if (jj_3R_128()) return true;
7164    return false;
7165  }
7166
7167  private boolean jj_3R_163() {
7168    if (jj_scan_token(DOUBLE)) return true;
7169    return false;
7170  }
7171
7172  private boolean jj_3R_325() {
7173    if (jj_3R_348()) return true;
7174    return false;
7175  }
7176
7177  private boolean jj_3R_162() {
7178    if (jj_scan_token(FLOAT)) return true;
7179    return false;
7180  }
7181
7182  private boolean jj_3R_161() {
7183    if (jj_scan_token(LONG)) return true;
7184    return false;
7185  }
7186
7187  private boolean jj_3_36() {
7188    if (jj_3R_115()) return true;
7189    return false;
7190  }
7191
7192  private boolean jj_3R_160() {
7193    if (jj_scan_token(INT)) return true;
7194    return false;
7195  }
7196
7197  private boolean jj_3R_363() {
7198    if (jj_3R_123()) return true;
7199    return false;
7200  }
7201
7202  private boolean jj_3R_159() {
7203    if (jj_scan_token(SHORT)) return true;
7204    return false;
7205  }
7206
7207  private boolean jj_3R_362() {
7208    if (jj_3R_123()) return true;
7209    return false;
7210  }
7211
7212  private boolean jj_3R_158() {
7213    if (jj_scan_token(BYTE)) return true;
7214    return false;
7215  }
7216
7217  private boolean jj_3R_157() {
7218    if (jj_scan_token(CHAR)) return true;
7219    return false;
7220  }
7221
7222  private boolean jj_3R_156() {
7223    if (jj_scan_token(BOOLEAN)) return true;
7224    return false;
7225  }
7226
7227  private boolean jj_3R_306() {
7228    Token xsp;
7229    xsp = jj_scanpos;
7230    if (jj_3_36()) {
7231    jj_scanpos = xsp;
7232    if (jj_3R_325()) {
7233    jj_scanpos = xsp;
7234    if (jj_3R_326()) {
7235    jj_scanpos = xsp;
7236    if (jj_3R_327()) {
7237    jj_scanpos = xsp;
7238    if (jj_3R_328()) {
7239    jj_scanpos = xsp;
7240    if (jj_3R_329()) {
7241    jj_scanpos = xsp;
7242    if (jj_3R_330()) {
7243    jj_scanpos = xsp;
7244    if (jj_3R_331()) {
7245    jj_scanpos = xsp;
7246    if (jj_3R_332()) {
7247    jj_scanpos = xsp;
7248    if (jj_3R_333()) {
7249    jj_scanpos = xsp;
7250    if (jj_3R_334()) {
7251    jj_scanpos = xsp;
7252    if (jj_3R_335()) {
7253    jj_scanpos = xsp;
7254    if (jj_3R_336()) {
7255    jj_scanpos = xsp;
7256    if (jj_3R_337()) {
7257    jj_scanpos = xsp;
7258    if (jj_3R_338()) {
7259    jj_scanpos = xsp;
7260    if (jj_3R_339()) return true;
7261    }
7262    }
7263    }
7264    }
7265    }
7266    }
7267    }
7268    }
7269    }
7270    }
7271    }
7272    }
7273    }
7274    }
7275    }
7276    return false;
7277  }
7278
7279  private boolean jj_3R_344() {
7280    if (jj_scan_token(SUPER)) return true;
7281    Token xsp;
7282    while (true) {
7283      xsp = jj_scanpos;
7284      if (jj_3R_363()) { jj_scanpos = xsp; break; }
7285    }
7286    if (jj_3R_94()) return true;
7287    return false;
7288  }
7289
7290  private boolean jj_3R_107() {
7291    Token xsp;
7292    xsp = jj_scanpos;
7293    if (jj_3R_156()) {
7294    jj_scanpos = xsp;
7295    if (jj_3R_157()) {
7296    jj_scanpos = xsp;
7297    if (jj_3R_158()) {
7298    jj_scanpos = xsp;
7299    if (jj_3R_159()) {
7300    jj_scanpos = xsp;
7301    if (jj_3R_160()) {
7302    jj_scanpos = xsp;
7303    if (jj_3R_161()) {
7304    jj_scanpos = xsp;
7305    if (jj_3R_162()) {
7306    jj_scanpos = xsp;
7307    if (jj_3R_163()) return true;
7308    }
7309    }
7310    }
7311    }
7312    }
7313    }
7314    }
7315    return false;
7316  }
7317
7318  private boolean jj_3R_342() {
7319    if (jj_scan_token(LBRACKET)) return true;
7320    if (jj_scan_token(RBRACKET)) return true;
7321    return false;
7322  }
7323
7324  private boolean jj_3R_343() {
7325    if (jj_scan_token(EXTENDS)) return true;
7326    Token xsp;
7327    while (true) {
7328      xsp = jj_scanpos;
7329      if (jj_3R_362()) { jj_scanpos = xsp; break; }
7330    }
7331    if (jj_3R_94()) return true;
7332    return false;
7333  }
7334
7335  private boolean jj_3R_314() {
7336    Token xsp;
7337    xsp = jj_scanpos;
7338    if (jj_3R_343()) {
7339    jj_scanpos = xsp;
7340    if (jj_3R_344()) return true;
7341    }
7342    return false;
7343  }
7344
7345  private boolean jj_3R_312() {
7346    Token xsp;
7347    if (jj_3R_342()) return true;
7348    while (true) {
7349      xsp = jj_scanpos;
7350      if (jj_3R_342()) { jj_scanpos = xsp; break; }
7351    }
7352    if (jj_3R_185()) return true;
7353    return false;
7354  }
7355
7356  private boolean jj_3_33() {
7357    if (jj_scan_token(LBRACKET)) return true;
7358    if (jj_3R_100()) return true;
7359    if (jj_scan_token(RBRACKET)) return true;
7360    return false;
7361  }
7362
7363  private boolean jj_3_32() {
7364    if (jj_3R_113()) return true;
7365    return false;
7366  }
7367
7368  private boolean jj_3_35() {
7369    Token xsp;
7370    if (jj_3_33()) return true;
7371    while (true) {
7372      xsp = jj_scanpos;
7373      if (jj_3_33()) { jj_scanpos = xsp; break; }
7374    }
7375    while (true) {
7376      xsp = jj_scanpos;
7377      if (jj_3_34()) { jj_scanpos = xsp; break; }
7378    }
7379    return false;
7380  }
7381
7382  private boolean jj_3R_229() {
7383    if (jj_scan_token(COMMA)) return true;
7384    if (jj_3R_199()) return true;
7385    return false;
7386  }
7387
7388  private boolean jj_3R_311() {
7389    if (jj_3R_123()) return true;
7390    return false;
7391  }
7392
7393  private boolean jj_3R_289() {
7394    Token xsp;
7395    while (true) {
7396      xsp = jj_scanpos;
7397      if (jj_3R_311()) { jj_scanpos = xsp; break; }
7398    }
7399    xsp = jj_scanpos;
7400    if (jj_3_35()) {
7401    jj_scanpos = xsp;
7402    if (jj_3R_312()) return true;
7403    }
7404    return false;
7405  }
7406
7407  private boolean jj_3R_313() {
7408    if (jj_3R_123()) return true;
7409    return false;
7410  }
7411
7412  private boolean jj_3R_263() {
7413    if (jj_scan_token(HOOK)) return true;
7414    Token xsp;
7415    xsp = jj_scanpos;
7416    if (jj_3R_314()) jj_scanpos = xsp;
7417    return false;
7418  }
7419
7420  private boolean jj_3R_292() {
7421    if (jj_3R_187()) return true;
7422    Token xsp;
7423    xsp = jj_scanpos;
7424    if (jj_3_32()) jj_scanpos = xsp;
7425    return false;
7426  }
7427
7428  private boolean jj_3R_232() {
7429    if (jj_3R_263()) return true;
7430    return false;
7431  }
7432
7433  private boolean jj_3R_231() {
7434    if (jj_3R_94()) return true;
7435    return false;
7436  }
7437
7438  private boolean jj_3R_460() {
7439    if (jj_3R_462()) return true;
7440    return false;
7441  }
7442
7443  private boolean jj_3R_230() {
7444    if (jj_3R_123()) return true;
7445    return false;
7446  }
7447
7448  private boolean jj_3R_199() {
7449    Token xsp;
7450    while (true) {
7451      xsp = jj_scanpos;
7452      if (jj_3R_230()) { jj_scanpos = xsp; break; }
7453    }
7454    xsp = jj_scanpos;
7455    if (jj_3R_231()) {
7456    jj_scanpos = xsp;
7457    if (jj_3R_232()) return true;
7458    }
7459    return false;
7460  }
7461
7462  private boolean jj_3R_291() {
7463    if (jj_3R_289()) return true;
7464    return false;
7465  }
7466
7467  private boolean jj_3R_96() {
7468    if (jj_3R_123()) return true;
7469    return false;
7470  }
7471
7472  private boolean jj_3R_98() {
7473    if (jj_3R_123()) return true;
7474    return false;
7475  }
7476
7477  private boolean jj_3R_290() {
7478    if (jj_3R_97()) return true;
7479    Token xsp;
7480    while (true) {
7481      xsp = jj_scanpos;
7482      if (jj_3R_313()) { jj_scanpos = xsp; break; }
7483    }
7484    return false;
7485  }
7486
7487  private boolean jj_3R_138() {
7488    if (jj_scan_token(132)) return true;
7489    return false;
7490  }
7491
7492  private boolean jj_3R_262() {
7493    Token xsp;
7494    xsp = jj_scanpos;
7495    if (jj_3R_290()) jj_scanpos = xsp;
7496    if (jj_3R_198()) return true;
7497    xsp = jj_scanpos;
7498    if (jj_3R_291()) {
7499    jj_scanpos = xsp;
7500    if (jj_3R_292()) return true;
7501    }
7502    return false;
7503  }
7504
7505  private boolean jj_3R_95() {
7506    if (jj_3R_123()) return true;
7507    return false;
7508  }
7509
7510  private boolean jj_3R_284() {
7511    if (jj_scan_token(COMMA)) return true;
7512    if (jj_3R_100()) return true;
7513    return false;
7514  }
7515
7516  private boolean jj_3_13() {
7517    Token xsp;
7518    while (true) {
7519      xsp = jj_scanpos;
7520      if (jj_3R_96()) { jj_scanpos = xsp; break; }
7521    }
7522    if (jj_scan_token(LBRACKET)) return true;
7523    if (jj_scan_token(RBRACKET)) return true;
7524    return false;
7525  }
7526
7527  private boolean jj_3R_137() {
7528    if (jj_scan_token(LT)) return true;
7529    if (jj_3R_199()) return true;
7530    Token xsp;
7531    while (true) {
7532      xsp = jj_scanpos;
7533      if (jj_3R_229()) { jj_scanpos = xsp; break; }
7534    }
7535    if (jj_scan_token(GT)) return true;
7536    return false;
7537  }
7538
7539  private boolean jj_3R_97() {
7540    Token xsp;
7541    xsp = jj_scanpos;
7542    if (jj_3R_137()) {
7543    jj_scanpos = xsp;
7544    if (jj_3R_138()) return true;
7545    }
7546    return false;
7547  }
7548
7549  private boolean jj_3_16() {
7550    if (jj_3R_97()) return true;
7551    return false;
7552  }
7553
7554  private boolean jj_3_15() {
7555    if (jj_scan_token(DOT)) return true;
7556    Token xsp;
7557    while (true) {
7558      xsp = jj_scanpos;
7559      if (jj_3R_98()) { jj_scanpos = xsp; break; }
7560    }
7561    if (jj_scan_token(IDENTIFIER)) return true;
7562    xsp = jj_scanpos;
7563    if (jj_3_16()) jj_scanpos = xsp;
7564    return false;
7565  }
7566
7567  private boolean jj_3R_261() {
7568    if (jj_3R_107()) return true;
7569    if (jj_3R_289()) return true;
7570    return false;
7571  }
7572
7573  private boolean jj_3_12() {
7574    Token xsp;
7575    while (true) {
7576      xsp = jj_scanpos;
7577      if (jj_3R_95()) { jj_scanpos = xsp; break; }
7578    }
7579    if (jj_scan_token(LBRACKET)) return true;
7580    if (jj_scan_token(RBRACKET)) return true;
7581    return false;
7582  }
7583
7584  private boolean jj_3R_386() {
7585    if (jj_scan_token(THROWS)) return true;
7586    if (jj_3R_401()) return true;
7587    return false;
7588  }
7589
7590  private boolean jj_3_14() {
7591    if (jj_3R_97()) return true;
7592    return false;
7593  }
7594
7595  private boolean jj_3R_260() {
7596    if (jj_3R_123()) return true;
7597    return false;
7598  }
7599
7600  private boolean jj_3R_198() {
7601    if (jj_scan_token(IDENTIFIER)) return true;
7602    Token xsp;
7603    xsp = jj_scanpos;
7604    if (jj_3_14()) jj_scanpos = xsp;
7605    while (true) {
7606      xsp = jj_scanpos;
7607      if (jj_3_15()) { jj_scanpos = xsp; break; }
7608    }
7609    return false;
7610  }
7611
7612  private boolean jj_3R_225() {
7613    if (jj_scan_token(NEW)) return true;
7614    Token xsp;
7615    while (true) {
7616      xsp = jj_scanpos;
7617      if (jj_3R_260()) { jj_scanpos = xsp; break; }
7618    }
7619    xsp = jj_scanpos;
7620    if (jj_3R_261()) {
7621    jj_scanpos = xsp;
7622    if (jj_3R_262()) return true;
7623    }
7624    return false;
7625  }
7626
7627  private boolean jj_3R_462() {
7628    if (jj_scan_token(_DEFAULT)) return true;
7629    if (jj_3R_121()) return true;
7630    return false;
7631  }
7632
7633  private boolean jj_3R_136() {
7634    if (jj_3R_198()) return true;
7635    Token xsp;
7636    while (true) {
7637      xsp = jj_scanpos;
7638      if (jj_3_13()) { jj_scanpos = xsp; break; }
7639    }
7640    return false;
7641  }
7642
7643  private boolean jj_3R_135() {
7644    if (jj_3R_107()) return true;
7645    Token xsp;
7646    if (jj_3_12()) return true;
7647    while (true) {
7648      xsp = jj_scanpos;
7649      if (jj_3_12()) { jj_scanpos = xsp; break; }
7650    }
7651    return false;
7652  }
7653
7654  private boolean jj_3R_94() {
7655    Token xsp;
7656    xsp = jj_scanpos;
7657    if (jj_3R_135()) {
7658    jj_scanpos = xsp;
7659    if (jj_3R_136()) return true;
7660    }
7661    return false;
7662  }
7663
7664  private boolean jj_3R_247() {
7665    if (jj_3R_100()) return true;
7666    Token xsp;
7667    while (true) {
7668      xsp = jj_scanpos;
7669      if (jj_3R_284()) { jj_scanpos = xsp; break; }
7670    }
7671    return false;
7672  }
7673
7674  private boolean jj_3R_455() {
7675    if (jj_3R_87()) return true;
7676    if (jj_scan_token(IDENTIFIER)) return true;
7677    if (jj_scan_token(LPAREN)) return true;
7678    if (jj_scan_token(RPAREN)) return true;
7679    Token xsp;
7680    xsp = jj_scanpos;
7681    if (jj_3R_460()) jj_scanpos = xsp;
7682    if (jj_scan_token(SEMICOLON)) return true;
7683    return false;
7684  }
7685
7686  private boolean jj_3R_219() {
7687    if (jj_3R_247()) return true;
7688    return false;
7689  }
7690
7691  private boolean jj_3_47() {
7692    if (jj_3R_87()) return true;
7693    if (jj_scan_token(IDENTIFIER)) return true;
7694    if (jj_scan_token(LPAREN)) return true;
7695    return false;
7696  }
7697
7698  private boolean jj_3R_443() {
7699    if (jj_3R_302()) return true;
7700    return false;
7701  }
7702
7703  private boolean jj_3R_442() {
7704    if (jj_3R_300()) return true;
7705    return false;
7706  }
7707
7708  private boolean jj_3R_187() {
7709    if (jj_scan_token(LPAREN)) return true;
7710    Token xsp;
7711    xsp = jj_scanpos;
7712    if (jj_3R_219()) jj_scanpos = xsp;
7713    if (jj_scan_token(RPAREN)) return true;
7714    return false;
7715  }
7716
7717  private boolean jj_3R_126() {
7718    if (jj_3R_107()) return true;
7719    return false;
7720  }
7721
7722  private boolean jj_3R_441() {
7723    if (jj_3R_299()) return true;
7724    return false;
7725  }
7726
7727  private boolean jj_3_11() {
7728    if (jj_3R_94()) return true;
7729    return false;
7730  }
7731
7732  private boolean jj_3R_440() {
7733    if (jj_3R_298()) return true;
7734    return false;
7735  }
7736
7737  private boolean jj_3R_87() {
7738    Token xsp;
7739    xsp = jj_scanpos;
7740    if (jj_3_11()) {
7741    jj_scanpos = xsp;
7742    if (jj_3R_126()) return true;
7743    }
7744    return false;
7745  }
7746
7747  private boolean jj_3R_439() {
7748    if (jj_3R_455()) return true;
7749    return false;
7750  }
7751
7752  private boolean jj_3R_286() {
7753    if (jj_scan_token(NULL)) return true;
7754    return false;
7755  }
7756
7757  private boolean jj_3R_308() {
7758    if (jj_scan_token(FALSE)) return true;
7759    return false;
7760  }
7761
7762  private boolean jj_3R_307() {
7763    if (jj_scan_token(TRUE)) return true;
7764    return false;
7765  }
7766
7767  private boolean jj_3_46() {
7768    if (jj_scan_token(COMMA)) return true;
7769    if (jj_3R_121()) return true;
7770    return false;
7771  }
7772
7773  private boolean jj_3R_426() {
7774    if (jj_scan_token(SEMICOLON)) return true;
7775    return false;
7776  }
7777
7778  private boolean jj_3R_427() {
7779    if (jj_3R_116()) return true;
7780    Token xsp;
7781    xsp = jj_scanpos;
7782    if (jj_3R_439()) {
7783    jj_scanpos = xsp;
7784    if (jj_3R_440()) {
7785    jj_scanpos = xsp;
7786    if (jj_3R_441()) {
7787    jj_scanpos = xsp;
7788    if (jj_3R_442()) {
7789    jj_scanpos = xsp;
7790    if (jj_3R_443()) return true;
7791    }
7792    }
7793    }
7794    }
7795    return false;
7796  }
7797
7798  private boolean jj_3R_127() {
7799    if (jj_scan_token(STATIC)) return true;
7800    return false;
7801  }
7802
7803  private boolean jj_3R_89() {
7804    Token xsp;
7805    xsp = jj_scanpos;
7806    if (jj_3R_127()) jj_scanpos = xsp;
7807    if (jj_3R_128()) return true;
7808    return false;
7809  }
7810
7811  private boolean jj_3R_285() {
7812    Token xsp;
7813    xsp = jj_scanpos;
7814    if (jj_3R_307()) {
7815    jj_scanpos = xsp;
7816    if (jj_3R_308()) return true;
7817    }
7818    return false;
7819  }
7820
7821  private boolean jj_3R_409() {
7822    Token xsp;
7823    xsp = jj_scanpos;
7824    if (jj_3R_426()) {
7825    jj_scanpos = xsp;
7826    if (jj_3R_427()) return true;
7827    }
7828    return false;
7829  }
7830
7831  private boolean jj_3R_254() {
7832    if (jj_3R_286()) return true;
7833    return false;
7834  }
7835
7836  private boolean jj_3R_218() {
7837    if (jj_3R_246()) return true;
7838    return false;
7839  }
7840
7841  private boolean jj_3R_253() {
7842    if (jj_3R_285()) return true;
7843    return false;
7844  }
7845
7846  private boolean jj_3R_184() {
7847    Token xsp;
7848    while (true) {
7849      xsp = jj_scanpos;
7850      if (jj_3R_218()) { jj_scanpos = xsp; break; }
7851    }
7852    return false;
7853  }
7854
7855  private boolean jj_3R_399() {
7856    if (jj_3R_409()) return true;
7857    return false;
7858  }
7859
7860  private boolean jj_3_9() {
7861    if (jj_3R_92()) return true;
7862    if (jj_scan_token(DOT)) return true;
7863    return false;
7864  }
7865
7866  private boolean jj_3R_252() {
7867    if (jj_scan_token(STRING_LITERAL)) return true;
7868    return false;
7869  }
7870
7871  private boolean jj_3R_251() {
7872    if (jj_scan_token(CHARACTER_LITERAL)) return true;
7873    return false;
7874  }
7875
7876  private boolean jj_3R_384() {
7877    if (jj_scan_token(LBRACE)) return true;
7878    Token xsp;
7879    while (true) {
7880      xsp = jj_scanpos;
7881      if (jj_3R_399()) { jj_scanpos = xsp; break; }
7882    }
7883    if (jj_scan_token(RBRACE)) return true;
7884    return false;
7885  }
7886
7887  private boolean jj_3R_93() {
7888    if (jj_3R_97()) return true;
7889    return false;
7890  }
7891
7892  private boolean jj_3R_189() {
7893    if (jj_3R_97()) return true;
7894    return false;
7895  }
7896
7897  private boolean jj_3_10() {
7898    Token xsp;
7899    xsp = jj_scanpos;
7900    if (jj_3R_93()) jj_scanpos = xsp;
7901    if (jj_scan_token(THIS)) return true;
7902    if (jj_scan_token(LPAREN)) return true;
7903    return false;
7904  }
7905
7906  private boolean jj_3R_250() {
7907    if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
7908    return false;
7909  }
7910
7911  private boolean jj_3R_188() {
7912    if (jj_3R_92()) return true;
7913    if (jj_scan_token(DOT)) return true;
7914    return false;
7915  }
7916
7917  private boolean jj_3R_249() {
7918    if (jj_scan_token(LONG_LITERAL)) return true;
7919    return false;
7920  }
7921
7922  private boolean jj_3R_132() {
7923    Token xsp;
7924    xsp = jj_scanpos;
7925    if (jj_3R_188()) jj_scanpos = xsp;
7926    xsp = jj_scanpos;
7927    if (jj_3R_189()) jj_scanpos = xsp;
7928    if (jj_scan_token(SUPER)) return true;
7929    if (jj_3R_187()) return true;
7930    if (jj_scan_token(SEMICOLON)) return true;
7931    return false;
7932  }
7933
7934  private boolean jj_3R_186() {
7935    if (jj_3R_97()) return true;
7936    return false;
7937  }
7938
7939  private boolean jj_3R_248() {
7940    if (jj_scan_token(INTEGER_LITERAL)) return true;
7941    return false;
7942  }
7943
7944  private boolean jj_3R_131() {
7945    Token xsp;
7946    xsp = jj_scanpos;
7947    if (jj_3R_186()) jj_scanpos = xsp;
7948    if (jj_scan_token(THIS)) return true;
7949    if (jj_3R_187()) return true;
7950    if (jj_scan_token(SEMICOLON)) return true;
7951    return false;
7952  }
7953
7954  private boolean jj_3R_300() {
7955    if (jj_scan_token(AT)) return true;
7956    if (jj_scan_token(INTERFACE)) return true;
7957    if (jj_3R_119()) return true;
7958    if (jj_3R_384()) return true;
7959    return false;
7960  }
7961
7962  private boolean jj_3R_112() {
7963    if (jj_3R_97()) return true;
7964    return false;
7965  }
7966
7967  private boolean jj_3R_220() {
7968    Token xsp;
7969    xsp = jj_scanpos;
7970    if (jj_3R_248()) {
7971    jj_scanpos = xsp;
7972    if (jj_3R_249()) {
7973    jj_scanpos = xsp;
7974    if (jj_3R_250()) {
7975    jj_scanpos = xsp;
7976    if (jj_3R_251()) {
7977    jj_scanpos = xsp;
7978    if (jj_3R_252()) {
7979    jj_scanpos = xsp;
7980    if (jj_3R_253()) {
7981    jj_scanpos = xsp;
7982    if (jj_3R_254()) return true;
7983    }
7984    }
7985    }
7986    }
7987    }
7988    }
7989    return false;
7990  }
7991
7992  private boolean jj_3R_91() {
7993    Token xsp;
7994    xsp = jj_scanpos;
7995    if (jj_3R_131()) {
7996    jj_scanpos = xsp;
7997    if (jj_3R_132()) return true;
7998    }
7999    return false;
8000  }
8001
8002  private boolean jj_3R_166() {
8003    if (jj_scan_token(LBRACKET)) return true;
8004    if (jj_3R_100()) return true;
8005    if (jj_scan_token(RBRACKET)) return true;
8006    return false;
8007  }
8008
8009  private boolean jj_3_31() {
8010    Token xsp;
8011    xsp = jj_scanpos;
8012    if (jj_3R_112()) jj_scanpos = xsp;
8013    if (jj_scan_token(IDENTIFIER)) return true;
8014    return false;
8015  }
8016
8017  private boolean jj_3R_324() {
8018    if (jj_scan_token(COMMA)) return true;
8019    if (jj_3R_323()) return true;
8020    return false;
8021  }
8022
8023  private boolean jj_3R_347() {
8024    if (jj_3R_121()) return true;
8025    Token xsp;
8026    while (true) {
8027      xsp = jj_scanpos;
8028      if (jj_3_46()) { jj_scanpos = xsp; break; }
8029    }
8030    return false;
8031  }
8032
8033  private boolean jj_3R_238() {
8034    if (jj_3R_187()) return true;
8035    return false;
8036  }
8037
8038  private boolean jj_3R_237() {
8039    if (jj_3R_97()) return true;
8040    return false;
8041  }
8042
8043  private boolean jj_3R_278() {
8044    if (jj_3R_304()) return true;
8045    return false;
8046  }
8047
8048  private boolean jj_3_8() {
8049    if (jj_3R_91()) return true;
8050    return false;
8051  }
8052
8053  private boolean jj_3R_204() {
8054    Token xsp;
8055    xsp = jj_scanpos;
8056    if (jj_3R_237()) jj_scanpos = xsp;
8057    if (jj_3R_227()) return true;
8058    xsp = jj_scanpos;
8059    if (jj_3R_238()) jj_scanpos = xsp;
8060    return false;
8061  }
8062
8063  private boolean jj_3R_212() {
8064    if (jj_scan_token(LBRACE)) return true;
8065    Token xsp;
8066    xsp = jj_scanpos;
8067    if (jj_3R_347()) jj_scanpos = xsp;
8068    xsp = jj_scanpos;
8069    if (jj_scan_token(88)) jj_scanpos = xsp;
8070    if (jj_scan_token(RBRACE)) return true;
8071    return false;
8072  }
8073
8074  private boolean jj_3_7() {
8075    if (jj_scan_token(COMMA)) return true;
8076    if (jj_3R_90()) return true;
8077    return false;
8078  }
8079
8080  private boolean jj_3R_203() {
8081    if (jj_3R_225()) return true;
8082    return false;
8083  }
8084
8085  private boolean jj_3R_167() {
8086    if (jj_scan_token(ELLIPSIS)) return true;
8087    return false;
8088  }
8089
8090  private boolean jj_3R_202() {
8091    if (jj_scan_token(THIS)) return true;
8092    return false;
8093  }
8094
8095  private boolean jj_3R_177() {
8096    if (jj_3R_151()) return true;
8097    return false;
8098  }
8099
8100  private boolean jj_3R_287() {
8101    if (jj_3R_309()) return true;
8102    return false;
8103  }
8104
8105  private boolean jj_3R_176() {
8106    if (jj_3R_212()) return true;
8107    return false;
8108  }
8109
8110  private boolean jj_3R_175() {
8111    if (jj_3R_123()) return true;
8112    return false;
8113  }
8114
8115  private boolean jj_3R_387() {
8116    if (jj_3R_91()) return true;
8117    return false;
8118  }
8119
8120  private boolean jj_3R_340() {
8121    if (jj_scan_token(COMMA)) return true;
8122    if (jj_3R_110()) return true;
8123    return false;
8124  }
8125
8126  private boolean jj_3R_165() {
8127    if (jj_scan_token(DOT)) return true;
8128    Token xsp;
8129    xsp = jj_scanpos;
8130    if (jj_3R_202()) {
8131    jj_scanpos = xsp;
8132    if (jj_3R_203()) {
8133    jj_scanpos = xsp;
8134    if (jj_3R_204()) return true;
8135    }
8136    }
8137    return false;
8138  }
8139
8140  private boolean jj_3R_320() {
8141    if (jj_3R_125()) return true;
8142    return false;
8143  }
8144
8145  private boolean jj_3R_301() {
8146    Token xsp;
8147    xsp = jj_scanpos;
8148    if (jj_3R_320()) jj_scanpos = xsp;
8149    if (jj_3R_227()) return true;
8150    if (jj_3R_385()) return true;
8151    xsp = jj_scanpos;
8152    if (jj_3R_386()) jj_scanpos = xsp;
8153    if (jj_scan_token(LBRACE)) return true;
8154    xsp = jj_scanpos;
8155    if (jj_3R_387()) jj_scanpos = xsp;
8156    if (jj_3R_184()) return true;
8157    if (jj_scan_token(RBRACE)) return true;
8158    return false;
8159  }
8160
8161  private boolean jj_3R_121() {
8162    Token xsp;
8163    xsp = jj_scanpos;
8164    if (jj_3R_175()) {
8165    jj_scanpos = xsp;
8166    if (jj_3R_176()) {
8167    jj_scanpos = xsp;
8168    if (jj_3R_177()) return true;
8169    }
8170    }
8171    return false;
8172  }
8173
8174  private boolean jj_3R_109() {
8175    Token xsp;
8176    xsp = jj_scanpos;
8177    if (jj_3R_165()) {
8178    jj_scanpos = xsp;
8179    if (jj_3R_166()) return true;
8180    }
8181    return false;
8182  }
8183
8184  private boolean jj_3R_410() {
8185    if (jj_scan_token(COMMA)) return true;
8186    if (jj_3R_110()) return true;
8187    return false;
8188  }
8189
8190  private boolean jj_3R_323() {
8191    if (jj_scan_token(IDENTIFIER)) return true;
8192    if (jj_scan_token(ASSIGN)) return true;
8193    if (jj_3R_121()) return true;
8194    return false;
8195  }
8196
8197  private boolean jj_3R_164() {
8198    if (jj_scan_token(DOT)) return true;
8199    if (jj_scan_token(SUPER)) return true;
8200    return false;
8201  }
8202
8203  private boolean jj_3_30() {
8204    if (jj_3R_109()) return true;
8205    return false;
8206  }
8207
8208  private boolean jj_3R_226() {
8209    if (jj_3R_125()) return true;
8210    return false;
8211  }
8212
8213  private boolean jj_3R_304() {
8214    if (jj_3R_323()) return true;
8215    Token xsp;
8216    while (true) {
8217      xsp = jj_scanpos;
8218      if (jj_3R_324()) { jj_scanpos = xsp; break; }
8219    }
8220    return false;
8221  }
8222
8223  private boolean jj_3R_108() {
8224    Token xsp;
8225    xsp = jj_scanpos;
8226    if (jj_3_30()) {
8227    jj_scanpos = xsp;
8228    if (jj_3R_164()) return true;
8229    }
8230    return false;
8231  }
8232
8233  private boolean jj_3R_228() {
8234    if (jj_3R_187()) return true;
8235    return false;
8236  }
8237
8238  private boolean jj_3R_110() {
8239    if (jj_3R_116()) return true;
8240    if (jj_3R_87()) return true;
8241    Token xsp;
8242    xsp = jj_scanpos;
8243    if (jj_3R_167()) jj_scanpos = xsp;
8244    if (jj_3R_168()) return true;
8245    return false;
8246  }
8247
8248  private boolean jj_3R_197() {
8249    if (jj_3R_227()) return true;
8250    Token xsp;
8251    xsp = jj_scanpos;
8252    if (jj_3R_228()) jj_scanpos = xsp;
8253    return false;
8254  }
8255
8256  private boolean jj_3_29() {
8257    if (jj_3R_111()) return true;
8258    if (jj_scan_token(DOUBLECOLON)) return true;
8259    return false;
8260  }
8261
8262  private boolean jj_3R_214() {
8263    if (jj_scan_token(AT)) return true;
8264    if (jj_3R_119()) return true;
8265    if (jj_scan_token(LPAREN)) return true;
8266    if (jj_3R_121()) return true;
8267    if (jj_scan_token(RPAREN)) return true;
8268    return false;
8269  }
8270
8271  private boolean jj_3R_389() {
8272    if (jj_scan_token(LBRACKET)) return true;
8273    if (jj_scan_token(RBRACKET)) return true;
8274    return false;
8275  }
8276
8277  private boolean jj_3_28() {
8278    if (jj_3R_111()) return true;
8279    if (jj_scan_token(DOT)) return true;
8280    if (jj_scan_token(CLASS)) return true;
8281    return false;
8282  }
8283
8284  private boolean jj_3R_341() {
8285    if (jj_scan_token(COMMA)) return true;
8286    if (jj_3R_168()) return true;
8287    return false;
8288  }
8289
8290  private boolean jj_3R_120() {
8291    if (jj_scan_token(IDENTIFIER)) return true;
8292    if (jj_scan_token(ASSIGN)) return true;
8293    return false;
8294  }
8295
8296  private boolean jj_3R_205() {
8297    if (jj_scan_token(LBRACKET)) return true;
8298    if (jj_scan_token(RBRACKET)) return true;
8299    return false;
8300  }
8301
8302  private boolean jj_3R_288() {
8303    if (jj_3R_310()) return true;
8304    return false;
8305  }
8306
8307  private boolean jj_3R_310() {
8308    if (jj_scan_token(COMMA)) return true;
8309    if (jj_3R_168()) return true;
8310    Token xsp;
8311    while (true) {
8312      xsp = jj_scanpos;
8313      if (jj_3R_341()) { jj_scanpos = xsp; break; }
8314    }
8315    return false;
8316  }
8317
8318  private boolean jj_3R_196() {
8319    if (jj_3R_111()) return true;
8320    if (jj_scan_token(DOUBLECOLON)) return true;
8321    Token xsp;
8322    xsp = jj_scanpos;
8323    if (jj_3R_226()) jj_scanpos = xsp;
8324    xsp = jj_scanpos;
8325    if (jj_scan_token(78)) {
8326    jj_scanpos = xsp;
8327    if (jj_scan_token(43)) return true;
8328    }
8329    return false;
8330  }
8331
8332  private boolean jj_3R_215() {
8333    if (jj_scan_token(AT)) return true;
8334    if (jj_3R_119()) return true;
8335    return false;
8336  }
8337
8338  private boolean jj_3R_322() {
8339    if (jj_3R_90()) return true;
8340    Token xsp;
8341    while (true) {
8342      xsp = jj_scanpos;
8343      if (jj_3_7()) { jj_scanpos = xsp; break; }
8344    }
8345    return false;
8346  }
8347
8348  private boolean jj_3R_195() {
8349    if (jj_3R_111()) return true;
8350    if (jj_scan_token(DOT)) return true;
8351    if (jj_scan_token(CLASS)) return true;
8352    return false;
8353  }
8354
8355  private boolean jj_3R_194() {
8356    if (jj_3R_225()) return true;
8357    return false;
8358  }
8359
8360  private boolean jj_3_27() {
8361    if (jj_3R_110()) return true;
8362    return false;
8363  }
8364
8365  private boolean jj_3_45() {
8366    if (jj_scan_token(AT)) return true;
8367    if (jj_3R_119()) return true;
8368    if (jj_scan_token(LPAREN)) return true;
8369    return false;
8370  }
8371
8372  private boolean jj_3R_309() {
8373    if (jj_scan_token(COMMA)) return true;
8374    if (jj_3R_110()) return true;
8375    Token xsp;
8376    while (true) {
8377      xsp = jj_scanpos;
8378      if (jj_3R_340()) { jj_scanpos = xsp; break; }
8379    }
8380    return false;
8381  }
8382
8383  private boolean jj_3_43() {
8384    if (jj_scan_token(SEMICOLON)) return true;
8385    if (jj_3R_117()) return true;
8386    return false;
8387  }
8388
8389  private boolean jj_3_44() {
8390    if (jj_scan_token(AT)) return true;
8391    if (jj_3R_119()) return true;
8392    if (jj_scan_token(LPAREN)) return true;
8393    Token xsp;
8394    xsp = jj_scanpos;
8395    if (jj_3R_120()) {
8396    jj_scanpos = xsp;
8397    if (jj_scan_token(82)) return true;
8398    }
8399    return false;
8400  }
8401
8402  private boolean jj_3R_213() {
8403    if (jj_scan_token(AT)) return true;
8404    if (jj_3R_119()) return true;
8405    if (jj_scan_token(LPAREN)) return true;
8406    Token xsp;
8407    xsp = jj_scanpos;
8408    if (jj_3R_278()) jj_scanpos = xsp;
8409    if (jj_scan_token(RPAREN)) return true;
8410    return false;
8411  }
8412
8413  private boolean jj_3R_400() {
8414    if (jj_3R_110()) return true;
8415    Token xsp;
8416    while (true) {
8417      xsp = jj_scanpos;
8418      if (jj_3R_410()) { jj_scanpos = xsp; break; }
8419    }
8420    return false;
8421  }
8422
8423  private boolean jj_3R_180() {
8424    if (jj_3R_215()) return true;
8425    return false;
8426  }
8427
8428  private boolean jj_3R_259() {
8429    if (jj_3R_100()) return true;
8430    Token xsp;
8431    xsp = jj_scanpos;
8432    if (jj_3R_288()) jj_scanpos = xsp;
8433    return false;
8434  }
8435
8436  private boolean jj_3R_258() {
8437    if (jj_3R_110()) return true;
8438    Token xsp;
8439    xsp = jj_scanpos;
8440    if (jj_3R_287()) jj_scanpos = xsp;
8441    return false;
8442  }
8443
8444  private boolean jj_3R_179() {
8445    if (jj_3R_214()) return true;
8446    return false;
8447  }
8448
8449  private boolean jj_3R_224() {
8450    Token xsp;
8451    xsp = jj_scanpos;
8452    if (jj_3R_258()) {
8453    jj_scanpos = xsp;
8454    if (jj_3R_259()) return true;
8455    }
8456    return false;
8457  }
8458
8459  private boolean jj_3R_385() {
8460    if (jj_scan_token(LPAREN)) return true;
8461    Token xsp;
8462    xsp = jj_scanpos;
8463    if (jj_3R_400()) jj_scanpos = xsp;
8464    if (jj_scan_token(RPAREN)) return true;
8465    return false;
8466  }
8467
8468  private boolean jj_3R_178() {
8469    if (jj_3R_213()) return true;
8470    return false;
8471  }
8472
8473  private boolean jj_3R_257() {
8474    if (jj_3R_125()) return true;
8475    return false;
8476  }
8477
8478  private boolean jj_3R_193() {
8479    if (jj_scan_token(LPAREN)) return true;
8480    Token xsp;
8481    xsp = jj_scanpos;
8482    if (jj_3R_224()) jj_scanpos = xsp;
8483    if (jj_scan_token(RPAREN)) return true;
8484    return false;
8485  }
8486
8487  private boolean jj_3R_222() {
8488    if (jj_scan_token(DOUBLECOLON)) return true;
8489    Token xsp;
8490    xsp = jj_scanpos;
8491    if (jj_3R_257()) jj_scanpos = xsp;
8492    xsp = jj_scanpos;
8493    if (jj_scan_token(78)) {
8494    jj_scanpos = xsp;
8495    if (jj_scan_token(43)) return true;
8496    }
8497    return false;
8498  }
8499
8500  private boolean jj_3R_123() {
8501    Token xsp;
8502    xsp = jj_scanpos;
8503    if (jj_3R_178()) {
8504    jj_scanpos = xsp;
8505    if (jj_3R_179()) {
8506    jj_scanpos = xsp;
8507    if (jj_3R_180()) return true;
8508    }
8509    }
8510    return false;
8511  }
8512
8513  private boolean jj_3R_223() {
8514    if (jj_3R_187()) return true;
8515    return false;
8516  }
8517
8518  private boolean jj_3R_152() {
8519    return false;
8520  }
8521
8522  private boolean jj_3R_391() {
8523    if (jj_3R_128()) return true;
8524    return false;
8525  }
8526
8527  private boolean jj_3R_390() {
8528    if (jj_scan_token(THROWS)) return true;
8529    if (jj_3R_401()) return true;
8530    return false;
8531  }
8532
8533  private boolean jj_3R_321() {
8534    if (jj_3R_125()) return true;
8535    return false;
8536  }
8537
8538  private boolean jj_3R_303() {
8539    Token xsp;
8540    xsp = jj_scanpos;
8541    if (jj_3R_321()) jj_scanpos = xsp;
8542    if (jj_3R_111()) return true;
8543    if (jj_3R_119()) return true;
8544    if (jj_3R_385()) return true;
8545    while (true) {
8546      xsp = jj_scanpos;
8547      if (jj_3R_389()) { jj_scanpos = xsp; break; }
8548    }
8549    xsp = jj_scanpos;
8550    if (jj_3R_390()) jj_scanpos = xsp;
8551    xsp = jj_scanpos;
8552    if (jj_3R_391()) {
8553    jj_scanpos = xsp;
8554    if (jj_scan_token(87)) return true;
8555    }
8556    return false;
8557  }
8558
8559  private boolean jj_3R_153() {
8560    return false;
8561  }
8562
8563  private boolean jj_3R_102() {
8564    jj_lookingAhead = true;
8565    jj_semLA = getToken(1).kind == GT &&
8566                ((GTToken)getToken(1)).realKind == RSIGNEDSHIFT;
8567    jj_lookingAhead = false;
8568    if (!jj_semLA || jj_3R_152()) return true;
8569    if (jj_scan_token(GT)) return true;
8570    if (jj_scan_token(GT)) return true;
8571    return false;
8572  }
8573
8574  private boolean jj_3R_256() {
8575    if (jj_3R_187()) return true;
8576    return false;
8577  }
8578
8579  private boolean jj_3R_221() {
8580    if (jj_scan_token(DOT)) return true;
8581    Token xsp;
8582    xsp = jj_scanpos;
8583    if (jj_3R_255()) jj_scanpos = xsp;
8584    if (jj_3R_227()) return true;
8585    xsp = jj_scanpos;
8586    if (jj_3R_256()) jj_scanpos = xsp;
8587    return false;
8588  }
8589
8590  private boolean jj_3R_255() {
8591    if (jj_3R_97()) return true;
8592    return false;
8593  }
8594
8595  private boolean jj_3_26() {
8596    if (jj_3R_109()) return true;
8597    return false;
8598  }
8599
8600  private boolean jj_3R_192() {
8601    if (jj_scan_token(SUPER)) return true;
8602    Token xsp;
8603    xsp = jj_scanpos;
8604    if (jj_3R_221()) {
8605    jj_scanpos = xsp;
8606    if (jj_3R_222()) {
8607    jj_scanpos = xsp;
8608    if (jj_3R_223()) return true;
8609    }
8610    }
8611    return false;
8612  }
8613
8614  private boolean jj_3R_103() {
8615    jj_lookingAhead = true;
8616    jj_semLA = getToken(1).kind == GT &&
8617                ((GTToken)getToken(1)).realKind == RUNSIGNEDSHIFT;
8618    jj_lookingAhead = false;
8619    if (!jj_semLA || jj_3R_153()) return true;
8620    if (jj_scan_token(GT)) return true;
8621    if (jj_scan_token(GT)) return true;
8622    if (jj_scan_token(GT)) return true;
8623    return false;
8624  }
8625
8626  private boolean jj_3R_191() {
8627    if (jj_scan_token(THIS)) return true;
8628    return false;
8629  }
8630
8631  private boolean jj_3R_185() {
8632    if (jj_scan_token(LBRACE)) return true;
8633    Token xsp;
8634    xsp = jj_scanpos;
8635    if (jj_3R_322()) jj_scanpos = xsp;
8636    xsp = jj_scanpos;
8637    if (jj_scan_token(88)) jj_scanpos = xsp;
8638    if (jj_scan_token(RBRACE)) return true;
8639    return false;
8640  }
8641
8642  private boolean jj_3R_190() {
8643    if (jj_3R_220()) return true;
8644    return false;
8645  }
8646
8647  private boolean jj_3R_134() {
8648    if (jj_3R_109()) return true;
8649    return false;
8650  }
8651
8652  private boolean jj_3R_130() {
8653    if (jj_3R_100()) return true;
8654    return false;
8655  }
8656
8657  private boolean jj_3R_129() {
8658    if (jj_3R_185()) return true;
8659    return false;
8660  }
8661
8662  private boolean jj_3R_207() {
8663    if (jj_scan_token(ASSIGN)) return true;
8664    if (jj_3R_90()) return true;
8665    return false;
8666  }
8667
8668  private boolean jj_3R_453() {
8669    if (jj_3R_117()) return true;
8670    Token xsp;
8671    while (true) {
8672      xsp = jj_scanpos;
8673      if (jj_3_43()) { jj_scanpos = xsp; break; }
8674    }
8675    return false;
8676  }
8677
8678  private boolean jj_3R_133() {
8679    Token xsp;
8680    xsp = jj_scanpos;
8681    if (jj_3R_190()) {
8682    jj_scanpos = xsp;
8683    if (jj_3R_191()) {
8684    jj_scanpos = xsp;
8685    if (jj_3R_192()) {
8686    jj_scanpos = xsp;
8687    if (jj_3R_193()) {
8688    jj_scanpos = xsp;
8689    if (jj_3R_194()) {
8690    jj_scanpos = xsp;
8691    if (jj_3R_195()) {
8692    jj_scanpos = xsp;
8693    if (jj_3R_196()) {
8694    jj_scanpos = xsp;
8695    if (jj_3R_197()) return true;
8696    }
8697    }
8698    }
8699    }
8700    }
8701    }
8702    }
8703    return false;
8704  }
8705
8706  private boolean jj_3_25() {
8707    if (jj_3R_108()) return true;
8708    return false;
8709  }
8710
8711  private boolean jj_3R_90() {
8712    Token xsp;
8713    xsp = jj_scanpos;
8714    if (jj_3R_129()) {
8715    jj_scanpos = xsp;
8716    if (jj_3R_130()) return true;
8717    }
8718    return false;
8719  }
8720
8721  private boolean jj_3R_454() {
8722    if (jj_scan_token(BIT_OR)) return true;
8723    if (jj_3R_87()) return true;
8724    return false;
8725  }
8726
8727  private boolean jj_3R_438() {
8728    if (jj_scan_token(FINALLY)) return true;
8729    if (jj_3R_128()) return true;
8730    return false;
8731  }
8732
8733  private boolean jj_3R_425() {
8734    if (jj_scan_token(FINALLY)) return true;
8735    if (jj_3R_128()) return true;
8736    return false;
8737  }
8738
8739  private boolean jj_3_42() {
8740    if (jj_scan_token(SEMICOLON)) return true;
8741    return false;
8742  }
8743
8744  private boolean jj_3R_436() {
8745    if (jj_scan_token(LPAREN)) return true;
8746    if (jj_3R_453()) return true;
8747    Token xsp;
8748    xsp = jj_scanpos;
8749    if (jj_3_42()) jj_scanpos = xsp;
8750    if (jj_scan_token(RPAREN)) return true;
8751    return false;
8752  }
8753
8754  private boolean jj_3R_437() {
8755    if (jj_scan_token(CATCH)) return true;
8756    if (jj_scan_token(LPAREN)) return true;
8757    if (jj_3R_116()) return true;
8758    if (jj_3R_87()) return true;
8759    Token xsp;
8760    while (true) {
8761      xsp = jj_scanpos;
8762      if (jj_3R_454()) { jj_scanpos = xsp; break; }
8763    }
8764    if (jj_3R_168()) return true;
8765    if (jj_scan_token(RPAREN)) return true;
8766    if (jj_3R_128()) return true;
8767    return false;
8768  }
8769
8770  private boolean jj_3R_168() {
8771    if (jj_scan_token(IDENTIFIER)) return true;
8772    Token xsp;
8773    while (true) {
8774      xsp = jj_scanpos;
8775      if (jj_3R_205()) { jj_scanpos = xsp; break; }
8776    }
8777    return false;
8778  }
8779
8780  private boolean jj_3R_92() {
8781    if (jj_3R_133()) return true;
8782    Token xsp;
8783    while (true) {
8784      xsp = jj_scanpos;
8785      if (jj_3R_134()) { jj_scanpos = xsp; break; }
8786    }
8787    return false;
8788  }
8789
8790  /** Generated Token Manager. */
8791  public ASTParserTokenManager token_source;
8792  JavaCharStream jj_input_stream;
8793  /** Current token. */
8794  public Token token;
8795  /** Next token. */
8796  public Token jj_nt;
8797  private int jj_ntk;
8798  private Token jj_scanpos, jj_lastpos;
8799  private int jj_la;
8800  /** Whether we are looking ahead. */
8801  private boolean jj_lookingAhead = false;
8802  private boolean jj_semLA;
8803  private int jj_gen;
8804  final private int[] jj_la1 = new int[175];
8805  static private int[] jj_la1_0;
8806  static private int[] jj_la1_1;
8807  static private int[] jj_la1_2;
8808  static private int[] jj_la1_3;
8809  static private int[] jj_la1_4;
8810  static {
8811      jj_la1_init_0();
8812      jj_la1_init_1();
8813      jj_la1_init_2();
8814      jj_la1_init_3();
8815      jj_la1_init_4();
8816   }
8817   private static void jj_la1_init_0() {
8818      jj_la1_0 = new int[] {0x0,0x48101000,0x1,0x0,0x0,0x0,0x40001000,0x8100000,0x48101000,0x100000,0x0,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4a995000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000000,0x0,0x0,0x0,0x4a995000,0x800000,0x8100000,0x2094000,0x4a995000,0x0,0x0,0x0,0x22094000,0x22094000,0x0,0x0,0x0,0x0,0x0,0x0,0x42095000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x22094000,0x6359f000,0x0,0x2094000,0x0,0x0,0x2094000,0x0,0x0,0x0,0x0,0x2094000,0x0,0x0,0x10000000,0x10000000,0x2094000,0x2094000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x22094000,0x0,0x0,0x22094000,0x0,0x0,0x2094000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x22094000,0x62095000,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x20000000,0x22094000,0x0,0x0,0x0,0x0,0x0,0x2094000,0x0,0x0,0x0,0x0,0x2349e000,0x0,0x2349e000,0x0,0x22094000,0x0,0x0,0x0,0x0,0x22094000,0x820000,0x820000,0x4000000,0x62095000,0x22094000,0x22094000,0x62095000,0x22094000,0x0,0x0,0x0,0x22094000,0x0,0x40000,0x0,0x80000000,0x0,0x0,0x0,0x22094000,0x22094000,0x0,0x4a195000,0xa194000,0x4a195000,0x800000,};
8819   }
8820   private static void jj_la1_init_1() {
8821      jj_la1_1 = new int[] {0x20,0x8899c500,0x0,0x0,0x80000,0x0,0x8899c400,0x100,0x8899c500,0x100,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0xc89dc781,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc89dc781,0x0,0x100,0x40040281,0xc89dc781,0x0,0x0,0x0,0x51241a81,0x51241a81,0x0,0x0,0x0,0x4000000,0x0,0x0,0x889dc681,0x0,0x0,0x0,0x0,0x4000000,0x0,0x0,0x51241a81,0xfbffdf8b,0x80000,0x40281,0x0,0x0,0x40281,0x0,0x0,0x0,0x0,0x40281,0x0,0x0,0x200000,0x200000,0x40281,0x40040281,0x0,0x0,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x51241a81,0x0,0x0,0x51241a81,0x0,0x0,0x40281,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x51241a81,0xd9bdde81,0x0,0x800,0x0,0x11201800,0x0,0x0,0x0,0x0,0x1000800,0x0,0x10001000,0x10000000,0x51241a81,0x0,0x0,0x0,0x0,0x0,0x40281,0x0,0x0,0x0,0x0,0x73e61a8b,0x0,0x73e61a8b,0x0,0x51241a81,0x0,0x800,0x0,0x0,0x51241a81,0x0,0x0,0x0,0xd9bdde81,0x51241a81,0x51241a81,0xd9bdde81,0x51241a81,0x0,0x0,0x0,0x51241a81,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x51241a81,0x51241a81,0x0,0x889dc781,0x40381,0x889dc781,0x0,};
8822   }
8823   private static void jj_la1_init_2() {
8824      jj_la1_2 = new int[] {0x0,0x4800000,0x0,0x4000000,0x0,0x2000000,0x4000000,0x4000000,0x4800000,0x0,0x10000000,0x0,0x0,0x4000000,0x1000000,0x4000000,0x1000000,0x0,0x4004000,0x1000000,0x14884000,0x800000,0x4000000,0x20000,0x80000,0x4000000,0x1000000,0x4000000,0x0,0x4000000,0x0,0x4000000,0x14884000,0x0,0x4000000,0x10004000,0x14804000,0x1000000,0x8000000,0x200000,0x600a7086,0x600a7086,0x1000000,0x10000000,0x200000,0x0,0x880000,0x1000000,0x4004000,0x1000000,0x1000000,0x0,0x10000000,0x0,0x10000000,0x10000000,0x10027086,0x48a7087,0x0,0x0,0x4000000,0x4000000,0x4000,0x4000000,0x1000000,0x10000000,0x4000000,0x80004000,0x4000000,0x4000000,0x0,0x0,0x0,0x4000,0x4000000,0x1000000,0x4000000,0x1000000,0x10000000,0x4000,0x0,0x8000000,0x8000000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000000,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x60027086,0x60000000,0x60000000,0x27086,0x0,0x4000000,0x4000,0x10000000,0x20000,0x10000000,0x4000,0x2020000,0x1000000,0x1000000,0x60027086,0x64027086,0x10000000,0x4000,0x20000,0x23086,0x4000,0x2000000,0x10000000,0x20000,0x0,0x2200000,0x3086,0x0,0x60027086,0x1000000,0x4000000,0x4000000,0x10000000,0x4220000,0x10004000,0x4000000,0x4000000,0x200000,0x200000,0x8a7087,0x0,0x8a7087,0x1000000,0x600a7086,0x10000000,0x4000,0x8000000,0x8000000,0x27086,0x0,0x0,0x0,0x64027086,0x60027086,0x60027086,0x64827086,0x60027086,0x1000000,0x4000,0x4000,0x60027086,0x20000,0x0,0x0,0x0,0x4000000,0x4000,0x1000000,0x640a7086,0x640a7086,0x1000000,0x4804000,0x4004000,0x4804000,0x0,};
8825   }
8826   private static void jj_la1_init_3() {
8827      jj_la1_3 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780,0x780,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x180,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0000000,0xdffc0000,0x1ffc0000,0x0,0x20,0x40,0x4000,0x8000,0x2000,0x12,0x12,0x0,0xc,0xc,0x20000,0x600,0x600,0x11800,0x11800,0x600,0x780,0x0,0x0,0x0,0x180,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x0,0x780,0x780,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x180,0x1,0x180,0x0,0x780,0x0,0x0,0xdffc0180,0xdffc0180,0x100,0x0,0x0,0x0,0x780,0x780,0x780,0x780,0x780,0x0,0x0,0x0,0x780,0x0,0x0,0x4000,0x0,0x0,0x0,0x0,0x780,0x780,0x0,0x0,0x0,0x0,0x0,};
8828   }
8829   private static void jj_la1_init_4() {
8830      jj_la1_4 = new int[] {0x0,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
8831   }
8832  final private JJCalls[] jj_2_rtns = new JJCalls[47];
8833  private boolean jj_rescan = false;
8834  private int jj_gc = 0;
8835
8836  /** Constructor with InputStream. */
8837  public ASTParser(java.io.InputStream stream) {
8838     this(stream, null);
8839  }
8840  /** Constructor with InputStream and supplied encoding */
8841  public ASTParser(java.io.InputStream stream, String encoding) {
8842    try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
8843    token_source = new ASTParserTokenManager(jj_input_stream);
8844    token = new Token();
8845    jj_ntk = -1;
8846    jj_gen = 0;
8847    for (int i = 0; i < 175; i++) jj_la1[i] = -1;
8848    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
8849  }
8850
8851  /** Reinitialise. */
8852  public void ReInit(java.io.InputStream stream) {
8853     ReInit(stream, null);
8854  }
8855  /** Reinitialise. */
8856  public void ReInit(java.io.InputStream stream, String encoding) {
8857    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
8858    token_source.ReInit(jj_input_stream);
8859    token = new Token();
8860    jj_ntk = -1;
8861    jj_gen = 0;
8862    for (int i = 0; i < 175; i++) jj_la1[i] = -1;
8863    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
8864  }
8865
8866  /** Constructor. */
8867  public ASTParser(java.io.Reader stream) {
8868    jj_input_stream = new JavaCharStream(stream, 1, 1);
8869    token_source = new ASTParserTokenManager(jj_input_stream);
8870    token = new Token();
8871    jj_ntk = -1;
8872    jj_gen = 0;
8873    for (int i = 0; i < 175; i++) jj_la1[i] = -1;
8874    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
8875  }
8876
8877  /** Reinitialise. */
8878  public void ReInit(java.io.Reader stream) {
8879    jj_input_stream.ReInit(stream, 1, 1);
8880    token_source.ReInit(jj_input_stream);
8881    token = new Token();
8882    jj_ntk = -1;
8883    jj_gen = 0;
8884    for (int i = 0; i < 175; i++) jj_la1[i] = -1;
8885    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
8886  }
8887
8888  /** Constructor with generated Token Manager. */
8889  public ASTParser(ASTParserTokenManager tm) {
8890    token_source = tm;
8891    token = new Token();
8892    jj_ntk = -1;
8893    jj_gen = 0;
8894    for (int i = 0; i < 175; i++) jj_la1[i] = -1;
8895    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
8896  }
8897
8898  /** Reinitialise. */
8899  public void ReInit(ASTParserTokenManager tm) {
8900    token_source = tm;
8901    token = new Token();
8902    jj_ntk = -1;
8903    jj_gen = 0;
8904    for (int i = 0; i < 175; i++) jj_la1[i] = -1;
8905    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
8906  }
8907
8908  private Token jj_consume_token(int kind) {
8909    Token oldToken;
8910    if ((oldToken = token).next != null) token = token.next;
8911    else token = token.next = token_source.getNextToken();
8912    jj_ntk = -1;
8913    if (token.kind == kind) {
8914      jj_gen++;
8915      if (++jj_gc > 100) {
8916        jj_gc = 0;
8917        for (int i = 0; i < jj_2_rtns.length; i++) {
8918          JJCalls c = jj_2_rtns[i];
8919          while (c != null) {
8920            if (c.gen < jj_gen) c.first = null;
8921            c = c.next;
8922          }
8923        }
8924      }
8925      return token;
8926    }
8927    token = oldToken;
8928    jj_kind = kind;
8929    throw generateParseException();
8930  }
8931
8932  static private final class LookaheadSuccess extends java.lang.Error { }
8933  final private LookaheadSuccess jj_ls = new LookaheadSuccess();
8934  private boolean jj_scan_token(int kind) {
8935    if (jj_scanpos == jj_lastpos) {
8936      jj_la--;
8937      if (jj_scanpos.next == null) {
8938        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
8939      } else {
8940        jj_lastpos = jj_scanpos = jj_scanpos.next;
8941      }
8942    } else {
8943      jj_scanpos = jj_scanpos.next;
8944    }
8945    if (jj_rescan) {
8946      int i = 0; Token tok = token;
8947      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
8948      if (tok != null) jj_add_error_token(kind, i);
8949    }
8950    if (jj_scanpos.kind != kind) return true;
8951    if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
8952    return false;
8953  }
8954
8955
8956/** Get the next Token. */
8957  final public Token getNextToken() {
8958    if (token.next != null) token = token.next;
8959    else token = token.next = token_source.getNextToken();
8960    jj_ntk = -1;
8961    jj_gen++;
8962    return token;
8963  }
8964
8965/** Get the specific Token. */
8966  final public Token getToken(int index) {
8967    Token t = jj_lookingAhead ? jj_scanpos : token;
8968    for (int i = 0; i < index; i++) {
8969      if (t.next != null) t = t.next;
8970      else t = t.next = token_source.getNextToken();
8971    }
8972    return t;
8973  }
8974
8975  private int jj_ntk() {
8976    if ((jj_nt=token.next) == null)
8977      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
8978    else
8979      return (jj_ntk = jj_nt.kind);
8980  }
8981
8982  private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
8983  private int[] jj_expentry;
8984  private int jj_kind = -1;
8985  private int[] jj_lasttokens = new int[100];
8986  private int jj_endpos;
8987
8988  private void jj_add_error_token(int kind, int pos) {
8989    if (pos >= 100) return;
8990    if (pos == jj_endpos + 1) {
8991      jj_lasttokens[jj_endpos++] = kind;
8992    } else if (jj_endpos != 0) {
8993      jj_expentry = new int[jj_endpos];
8994      for (int i = 0; i < jj_endpos; i++) {
8995        jj_expentry[i] = jj_lasttokens[i];
8996      }
8997      jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) {
8998        int[] oldentry = (int[])(it.next());
8999        if (oldentry.length == jj_expentry.length) {
9000          for (int i = 0; i < jj_expentry.length; i++) {
9001            if (oldentry[i] != jj_expentry[i]) {
9002              continue jj_entries_loop;
9003            }
9004          }
9005          jj_expentries.add(jj_expentry);
9006          break jj_entries_loop;
9007        }
9008      }
9009      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
9010    }
9011  }
9012
9013  /** Generate ParseException. */
9014  public ParseException generateParseException() {
9015    jj_expentries.clear();
9016    boolean[] la1tokens = new boolean[133];
9017    if (jj_kind >= 0) {
9018      la1tokens[jj_kind] = true;
9019      jj_kind = -1;
9020    }
9021    for (int i = 0; i < 175; i++) {
9022      if (jj_la1[i] == jj_gen) {
9023        for (int j = 0; j < 32; j++) {
9024          if ((jj_la1_0[i] & (1<<j)) != 0) {
9025            la1tokens[j] = true;
9026          }
9027          if ((jj_la1_1[i] & (1<<j)) != 0) {
9028            la1tokens[32+j] = true;
9029          }
9030          if ((jj_la1_2[i] & (1<<j)) != 0) {
9031            la1tokens[64+j] = true;
9032          }
9033          if ((jj_la1_3[i] & (1<<j)) != 0) {
9034            la1tokens[96+j] = true;
9035          }
9036          if ((jj_la1_4[i] & (1<<j)) != 0) {
9037            la1tokens[128+j] = true;
9038          }
9039        }
9040      }
9041    }
9042    for (int i = 0; i < 133; i++) {
9043      if (la1tokens[i]) {
9044        jj_expentry = new int[1];
9045        jj_expentry[0] = i;
9046        jj_expentries.add(jj_expentry);
9047      }
9048    }
9049    jj_endpos = 0;
9050    jj_rescan_token();
9051    jj_add_error_token(0, 0);
9052    int[][] exptokseq = new int[jj_expentries.size()][];
9053    for (int i = 0; i < jj_expentries.size(); i++) {
9054      exptokseq[i] = jj_expentries.get(i);
9055    }
9056    return new ParseException(token, exptokseq, tokenImage);
9057  }
9058
9059  /** Enable tracing. */
9060  final public void enable_tracing() {
9061  }
9062
9063  /** Disable tracing. */
9064  final public void disable_tracing() {
9065  }
9066
9067  private void jj_rescan_token() {
9068    jj_rescan = true;
9069    for (int i = 0; i < 47; i++) {
9070    try {
9071      JJCalls p = jj_2_rtns[i];
9072      do {
9073        if (p.gen > jj_gen) {
9074          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
9075          switch (i) {
9076            case 0: jj_3_1(); break;
9077            case 1: jj_3_2(); break;
9078            case 2: jj_3_3(); break;
9079            case 3: jj_3_4(); break;
9080            case 4: jj_3_5(); break;
9081            case 5: jj_3_6(); break;
9082            case 6: jj_3_7(); break;
9083            case 7: jj_3_8(); break;
9084            case 8: jj_3_9(); break;
9085            case 9: jj_3_10(); break;
9086            case 10: jj_3_11(); break;
9087            case 11: jj_3_12(); break;
9088            case 12: jj_3_13(); break;
9089            case 13: jj_3_14(); break;
9090            case 14: jj_3_15(); break;
9091            case 15: jj_3_16(); break;
9092            case 16: jj_3_17(); break;
9093            case 17: jj_3_18(); break;
9094            case 18: jj_3_19(); break;
9095            case 19: jj_3_20(); break;
9096            case 20: jj_3_21(); break;
9097            case 21: jj_3_22(); break;
9098            case 22: jj_3_23(); break;
9099            case 23: jj_3_24(); break;
9100            case 24: jj_3_25(); break;
9101            case 25: jj_3_26(); break;
9102            case 26: jj_3_27(); break;
9103            case 27: jj_3_28(); break;
9104            case 28: jj_3_29(); break;
9105            case 29: jj_3_30(); break;
9106            case 30: jj_3_31(); break;
9107            case 31: jj_3_32(); break;
9108            case 32: jj_3_33(); break;
9109            case 33: jj_3_34(); break;
9110            case 34: jj_3_35(); break;
9111            case 35: jj_3_36(); break;
9112            case 36: jj_3_37(); break;
9113            case 37: jj_3_38(); break;
9114            case 38: jj_3_39(); break;
9115            case 39: jj_3_40(); break;
9116            case 40: jj_3_41(); break;
9117            case 41: jj_3_42(); break;
9118            case 42: jj_3_43(); break;
9119            case 43: jj_3_44(); break;
9120            case 44: jj_3_45(); break;
9121            case 45: jj_3_46(); break;
9122            case 46: jj_3_47(); break;
9123          }
9124        }
9125        p = p.next;
9126      } while (p != null);
9127      } catch(LookaheadSuccess ls) { }
9128    }
9129    jj_rescan = false;
9130  }
9131
9132  private void jj_save(int index, int xla) {
9133    JJCalls p = jj_2_rtns[index];
9134    while (p.gen > jj_gen) {
9135      if (p.next == null) { p = p.next = new JJCalls(); break; }
9136      p = p.next;
9137    }
9138    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
9139  }
9140
9141  static final class JJCalls {
9142    int gen;
9143    Token first;
9144    int arg;
9145    JJCalls next;
9146  }
9147
9148}
9149