001// $ANTLR 2.7.7 (20060906): "java.g" -> "GeneratedJavaRecognizer.java"$
002
003package com.puppycrawl.tools.checkstyle.grammar;
004
005import com.puppycrawl.tools.checkstyle.DetailAstImpl;
006import java.text.MessageFormat;
007import antlr.CommonHiddenStreamToken;
008
009import antlr.TokenBuffer;
010import antlr.TokenStreamException;
011import antlr.TokenStreamIOException;
012import antlr.ANTLRException;
013import antlr.LLkParser;
014import antlr.Token;
015import antlr.TokenStream;
016import antlr.RecognitionException;
017import antlr.NoViableAltException;
018import antlr.MismatchedTokenException;
019import antlr.SemanticException;
020import antlr.ParserSharedInputState;
021import antlr.collections.impl.BitSet;
022import antlr.collections.AST;
023import java.util.Hashtable;
024import antlr.ASTFactory;
025import antlr.ASTPair;
026import antlr.collections.impl.ASTArray;
027
028/** Java 1.5 Recognizer
029 *
030 * This grammar is in the PUBLIC DOMAIN
031 */
032public class GeneratedJavaRecognizer extends antlr.LLkParser       implements GeneratedJavaTokenTypes
033 {
034
035    /**
036     * Counts the number of LT seen in the typeArguments production.
037     * It is used in semantic predicates to ensure we have seen
038     * enough closing '>' characters; which actually may have been
039     * either GT, SR or BSR tokens.
040     */
041    private int ltCounter = 0;
042
043    /**
044     * Counts the number of '>' characters that have been seen but
045     * have not yet been associated with the end of a typeParameters or
046     * typeArguments production. This is necessary because SR and BSR
047     * tokens have significance (the extra '>' characters) not only for the production
048     * that sees them but also productions higher in the stack (possibly right up to an outer-most
049     * typeParameters production). As the stack of the typeArguments/typeParameters productions
050     * unwind, any '>' characters seen prematurely through SRs or BSRs are reconciled.
051     */
052    private int gtToReconcile = 0;
053
054    /**
055     * The most recently seen gt sequence (GT, SR or BSR)
056     * encountered in any type argument or type parameter production.
057     * We retain this so we can keep manage the synthetic GT tokens/
058     * AST nodes we emit to have '<' & '>' balanced trees when encountering
059     * SR and BSR tokens.
060     */
061    private DetailAstImpl currentGtSequence = null;
062
063    /**
064     * Consume a sequence of '>' characters (GT, SR or BSR)
065     * and match these against the '<' characters seen.
066     */
067    private void consumeCurrentGtSequence(DetailAstImpl gtSequence)
068    {
069        currentGtSequence = gtSequence;
070        gtToReconcile += currentGtSequence.getText().length();
071        ltCounter -= currentGtSequence.getText().length();
072    }
073
074    /**
075     * Emits a single GT AST node with the line and column correctly
076     * set to its position in the source file. This must only
077     * ever be called when a typeParameters or typeArguments production
078     * is ending and there is at least one GT character to be emitted.
079     *
080     * @see #areThereGtsToEmit
081     */
082    private DetailAstImpl emitSingleGt()
083    {
084        gtToReconcile -= 1;
085        CommonHiddenStreamToken gtToken = new CommonHiddenStreamToken(GENERIC_END, ">");
086        gtToken.setLine(currentGtSequence.getLineNo());
087        gtToken.setColumn(currentGtSequence.getColumnNo()
088                            + (currentGtSequence.getText().length() - gtToReconcile));
089        return (DetailAstImpl)astFactory.create(gtToken);
090    }
091
092    /**
093     * @return true if there is at least one '>' seen but
094     * not reconciled with the end of a typeParameters or
095     * typeArguments production; returns false otherwise
096     */
097    private boolean areThereGtsToEmit()
098    {
099        return (gtToReconcile > 0);
100    }
101
102    /**
103     * @return true if there is exactly one '>' seen but
104     * not reconciled with the end of a typeParameters
105     * production; returns false otherwise
106     */
107    private boolean isThereASingleGtToEmit()
108    {
109        return (gtToReconcile == 1);
110    }
111
112    /**
113     * @return true if the '<' and '>' are evenly matched
114     * at the current typeParameters/typeArguments nested depth
115     */
116    private boolean areLtsAndGtsBalanced(int currentLtLevel)
117    {
118        return ((currentLtLevel != 0) || ltCounter == currentLtLevel);
119    }
120
121protected GeneratedJavaRecognizer(TokenBuffer tokenBuf, int k) {
122  super(tokenBuf,k);
123  tokenNames = _tokenNames;
124  buildTokenTypeASTClassMap();
125  astFactory = new ASTFactory(getTokenTypeToASTClassMap());
126}
127
128public GeneratedJavaRecognizer(TokenBuffer tokenBuf) {
129  this(tokenBuf,2);
130}
131
132protected GeneratedJavaRecognizer(TokenStream lexer, int k) {
133  super(lexer,k);
134  tokenNames = _tokenNames;
135  buildTokenTypeASTClassMap();
136  astFactory = new ASTFactory(getTokenTypeToASTClassMap());
137}
138
139public GeneratedJavaRecognizer(TokenStream lexer) {
140  this(lexer,2);
141}
142
143public GeneratedJavaRecognizer(ParserSharedInputState state) {
144  super(state,2);
145  tokenNames = _tokenNames;
146  buildTokenTypeASTClassMap();
147  astFactory = new ASTFactory(getTokenTypeToASTClassMap());
148}
149
150        public final void compilationUnit() throws RecognitionException, TokenStreamException {
151                
152                returnAST = null;
153                ASTPair currentAST = new ASTPair();
154                AST compilationUnit_AST = null;
155                
156                {
157                boolean synPredMatched4 = false;
158                if (((LA(1)==LITERAL_package||LA(1)==AT) && (LA(2)==IDENT||LA(2)==LITERAL_record))) {
159                        int _m4 = mark();
160                        synPredMatched4 = true;
161                        inputState.guessing++;
162                        try {
163                                {
164                                annotations();
165                                match(LITERAL_package);
166                                }
167                        }
168                        catch (RecognitionException pe) {
169                                synPredMatched4 = false;
170                        }
171                        rewind(_m4);
172inputState.guessing--;
173                }
174                if ( synPredMatched4 ) {
175                        packageDefinition();
176                        astFactory.addASTChild(currentAST, returnAST);
177                }
178                else if ((_tokenSet_0.member(LA(1))) && (_tokenSet_1.member(LA(2)))) {
179                }
180                else {
181                        throw new NoViableAltException(LT(1), getFilename());
182                }
183                
184                }
185                {
186                _loop6:
187                do {
188                        if ((LA(1)==SEMI||LA(1)==LITERAL_import) && (_tokenSet_1.member(LA(2)))) {
189                                importDefinition();
190                                astFactory.addASTChild(currentAST, returnAST);
191                        }
192                        else {
193                                break _loop6;
194                        }
195                        
196                } while (true);
197                }
198                {
199                _loop8:
200                do {
201                        if ((_tokenSet_2.member(LA(1)))) {
202                                typeDefinition();
203                                astFactory.addASTChild(currentAST, returnAST);
204                        }
205                        else {
206                                break _loop8;
207                        }
208                        
209                } while (true);
210                }
211                match(Token.EOF_TYPE);
212                compilationUnit_AST = (AST)currentAST.root;
213                returnAST = compilationUnit_AST;
214        }
215        
216        public final void annotations() throws RecognitionException, TokenStreamException {
217                
218                returnAST = null;
219                ASTPair currentAST = new ASTPair();
220                AST annotations_AST = null;
221                
222                {
223                _loop76:
224                do {
225                        if ((LA(1)==AT) && (LA(2)==IDENT||LA(2)==LITERAL_record)) {
226                                annotation();
227                                astFactory.addASTChild(currentAST, returnAST);
228                        }
229                        else {
230                                break _loop76;
231                        }
232                        
233                } while (true);
234                }
235                if ( inputState.guessing==0 ) {
236                        annotations_AST = (AST)currentAST.root;
237                        annotations_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(ANNOTATIONS,"ANNOTATIONS")).add(annotations_AST));
238                        currentAST.root = annotations_AST;
239                        currentAST.child = annotations_AST!=null &&annotations_AST.getFirstChild()!=null ?
240                                annotations_AST.getFirstChild() : annotations_AST;
241                        currentAST.advanceChildToEnd();
242                }
243                annotations_AST = (AST)currentAST.root;
244                returnAST = annotations_AST;
245        }
246        
247        public final void packageDefinition() throws RecognitionException, TokenStreamException {
248                
249                returnAST = null;
250                ASTPair currentAST = new ASTPair();
251                AST packageDefinition_AST = null;
252                Token  p = null;
253                AST p_AST = null;
254                
255                try {      // for error handling
256                        annotations();
257                        astFactory.addASTChild(currentAST, returnAST);
258                        p = LT(1);
259                        p_AST = astFactory.create(p);
260                        astFactory.makeASTRoot(currentAST, p_AST);
261                        match(LITERAL_package);
262                        if ( inputState.guessing==0 ) {
263                                p_AST.setType(PACKAGE_DEF);
264                        }
265                        identifier();
266                        astFactory.addASTChild(currentAST, returnAST);
267                        AST tmp2_AST = null;
268                        tmp2_AST = astFactory.create(LT(1));
269                        astFactory.addASTChild(currentAST, tmp2_AST);
270                        match(SEMI);
271                        packageDefinition_AST = (AST)currentAST.root;
272                }
273                catch (RecognitionException ex) {
274                        if (inputState.guessing==0) {
275                                reportError(ex);
276                                recover(ex,_tokenSet_0);
277                        } else {
278                          throw ex;
279                        }
280                }
281                returnAST = packageDefinition_AST;
282        }
283        
284        public final void importDefinition() throws RecognitionException, TokenStreamException {
285                
286                returnAST = null;
287                ASTPair currentAST = new ASTPair();
288                AST importDefinition_AST = null;
289                Token  i = null;
290                AST i_AST = null;
291                
292                try {      // for error handling
293                        switch ( LA(1)) {
294                        case LITERAL_import:
295                        {
296                                i = LT(1);
297                                i_AST = astFactory.create(i);
298                                astFactory.makeASTRoot(currentAST, i_AST);
299                                match(LITERAL_import);
300                                if ( inputState.guessing==0 ) {
301                                        i_AST.setType(IMPORT);
302                                }
303                                {
304                                switch ( LA(1)) {
305                                case LITERAL_static:
306                                {
307                                        AST tmp3_AST = null;
308                                        tmp3_AST = astFactory.create(LT(1));
309                                        astFactory.addASTChild(currentAST, tmp3_AST);
310                                        match(LITERAL_static);
311                                        if ( inputState.guessing==0 ) {
312                                                i_AST.setType(STATIC_IMPORT);
313                                        }
314                                        break;
315                                }
316                                case IDENT:
317                                case LITERAL_record:
318                                {
319                                        break;
320                                }
321                                default:
322                                {
323                                        throw new NoViableAltException(LT(1), getFilename());
324                                }
325                                }
326                                }
327                                identifierStar();
328                                astFactory.addASTChild(currentAST, returnAST);
329                                AST tmp4_AST = null;
330                                tmp4_AST = astFactory.create(LT(1));
331                                astFactory.addASTChild(currentAST, tmp4_AST);
332                                match(SEMI);
333                                importDefinition_AST = (AST)currentAST.root;
334                                break;
335                        }
336                        case SEMI:
337                        {
338                                AST tmp5_AST = null;
339                                tmp5_AST = astFactory.create(LT(1));
340                                astFactory.addASTChild(currentAST, tmp5_AST);
341                                match(SEMI);
342                                importDefinition_AST = (AST)currentAST.root;
343                                break;
344                        }
345                        default:
346                        {
347                                throw new NoViableAltException(LT(1), getFilename());
348                        }
349                        }
350                }
351                catch (RecognitionException ex) {
352                        if (inputState.guessing==0) {
353                                reportError(ex);
354                                recover(ex,_tokenSet_0);
355                        } else {
356                          throw ex;
357                        }
358                }
359                returnAST = importDefinition_AST;
360        }
361        
362        public final void typeDefinition() throws RecognitionException, TokenStreamException {
363                
364                returnAST = null;
365                ASTPair currentAST = new ASTPair();
366                AST typeDefinition_AST = null;
367                AST m_AST = null;
368                
369                try {      // for error handling
370                        switch ( LA(1)) {
371                        case FINAL:
372                        case ABSTRACT:
373                        case STRICTFP:
374                        case LITERAL_private:
375                        case LITERAL_public:
376                        case LITERAL_protected:
377                        case LITERAL_static:
378                        case LITERAL_transient:
379                        case LITERAL_native:
380                        case LITERAL_synchronized:
381                        case LITERAL_volatile:
382                        case LITERAL_class:
383                        case LITERAL_interface:
384                        case LITERAL_default:
385                        case ENUM:
386                        case AT:
387                        case LITERAL_record:
388                        {
389                                modifiers();
390                                m_AST = (AST)returnAST;
391                                typeDefinitionInternal(m_AST);
392                                astFactory.addASTChild(currentAST, returnAST);
393                                typeDefinition_AST = (AST)currentAST.root;
394                                break;
395                        }
396                        case SEMI:
397                        {
398                                AST tmp6_AST = null;
399                                tmp6_AST = astFactory.create(LT(1));
400                                astFactory.addASTChild(currentAST, tmp6_AST);
401                                match(SEMI);
402                                typeDefinition_AST = (AST)currentAST.root;
403                                break;
404                        }
405                        default:
406                        {
407                                throw new NoViableAltException(LT(1), getFilename());
408                        }
409                        }
410                }
411                catch (RecognitionException ex) {
412                        if (inputState.guessing==0) {
413                                reportError(ex);
414                                recover(ex,_tokenSet_3);
415                        } else {
416                          throw ex;
417                        }
418                }
419                returnAST = typeDefinition_AST;
420        }
421        
422        public final void identifier() throws RecognitionException, TokenStreamException {
423                
424                returnAST = null;
425                ASTPair currentAST = new ASTPair();
426                AST identifier_AST = null;
427                
428                id();
429                astFactory.addASTChild(currentAST, returnAST);
430                {
431                _loop62:
432                do {
433                        if ((LA(1)==DOT)) {
434                                AST tmp7_AST = null;
435                                tmp7_AST = astFactory.create(LT(1));
436                                astFactory.makeASTRoot(currentAST, tmp7_AST);
437                                match(DOT);
438                                id();
439                                astFactory.addASTChild(currentAST, returnAST);
440                        }
441                        else {
442                                break _loop62;
443                        }
444                        
445                } while (true);
446                }
447                identifier_AST = (AST)currentAST.root;
448                returnAST = identifier_AST;
449        }
450        
451        public final void identifierStar() throws RecognitionException, TokenStreamException {
452                
453                returnAST = null;
454                ASTPair currentAST = new ASTPair();
455                AST identifierStar_AST = null;
456                
457                id();
458                astFactory.addASTChild(currentAST, returnAST);
459                {
460                _loop65:
461                do {
462                        if ((LA(1)==DOT) && (LA(2)==IDENT||LA(2)==LITERAL_record)) {
463                                AST tmp8_AST = null;
464                                tmp8_AST = astFactory.create(LT(1));
465                                astFactory.makeASTRoot(currentAST, tmp8_AST);
466                                match(DOT);
467                                id();
468                                astFactory.addASTChild(currentAST, returnAST);
469                        }
470                        else {
471                                break _loop65;
472                        }
473                        
474                } while (true);
475                }
476                {
477                switch ( LA(1)) {
478                case DOT:
479                {
480                        AST tmp9_AST = null;
481                        tmp9_AST = astFactory.create(LT(1));
482                        astFactory.makeASTRoot(currentAST, tmp9_AST);
483                        match(DOT);
484                        AST tmp10_AST = null;
485                        tmp10_AST = astFactory.create(LT(1));
486                        astFactory.addASTChild(currentAST, tmp10_AST);
487                        match(STAR);
488                        break;
489                }
490                case SEMI:
491                {
492                        break;
493                }
494                default:
495                {
496                        throw new NoViableAltException(LT(1), getFilename());
497                }
498                }
499                }
500                identifierStar_AST = (AST)currentAST.root;
501                returnAST = identifierStar_AST;
502        }
503        
504        public final void modifiers() throws RecognitionException, TokenStreamException {
505                
506                returnAST = null;
507                ASTPair currentAST = new ASTPair();
508                AST modifiers_AST = null;
509                
510                {
511                _loop69:
512                do {
513                        if ((_tokenSet_4.member(LA(1)))) {
514                                modifier();
515                                astFactory.addASTChild(currentAST, returnAST);
516                        }
517                        else if (((LA(1)==AT) && (LA(2)==IDENT||LA(2)==LITERAL_record))&&(LA(1)==AT && !LT(2).getText().equals("interface"))) {
518                                annotation();
519                                astFactory.addASTChild(currentAST, returnAST);
520                        }
521                        else {
522                                break _loop69;
523                        }
524                        
525                } while (true);
526                }
527                if ( inputState.guessing==0 ) {
528                        modifiers_AST = (AST)currentAST.root;
529                        modifiers_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(MODIFIERS,"MODIFIERS")).add(modifiers_AST));
530                        currentAST.root = modifiers_AST;
531                        currentAST.child = modifiers_AST!=null &&modifiers_AST.getFirstChild()!=null ?
532                                modifiers_AST.getFirstChild() : modifiers_AST;
533                        currentAST.advanceChildToEnd();
534                }
535                modifiers_AST = (AST)currentAST.root;
536                returnAST = modifiers_AST;
537        }
538        
539        protected final void typeDefinitionInternal(
540                AST modifiers
541        ) throws RecognitionException, TokenStreamException {
542                
543                returnAST = null;
544                ASTPair currentAST = new ASTPair();
545                AST typeDefinitionInternal_AST = null;
546                
547                switch ( LA(1)) {
548                case LITERAL_class:
549                {
550                        classDefinition(modifiers);
551                        astFactory.addASTChild(currentAST, returnAST);
552                        typeDefinitionInternal_AST = (AST)currentAST.root;
553                        break;
554                }
555                case LITERAL_interface:
556                {
557                        interfaceDefinition(modifiers);
558                        astFactory.addASTChild(currentAST, returnAST);
559                        typeDefinitionInternal_AST = (AST)currentAST.root;
560                        break;
561                }
562                case ENUM:
563                {
564                        enumDefinition(modifiers);
565                        astFactory.addASTChild(currentAST, returnAST);
566                        typeDefinitionInternal_AST = (AST)currentAST.root;
567                        break;
568                }
569                case AT:
570                {
571                        annotationDefinition(modifiers);
572                        astFactory.addASTChild(currentAST, returnAST);
573                        typeDefinitionInternal_AST = (AST)currentAST.root;
574                        break;
575                }
576                case LITERAL_record:
577                {
578                        recordDefinition(modifiers);
579                        astFactory.addASTChild(currentAST, returnAST);
580                        typeDefinitionInternal_AST = (AST)currentAST.root;
581                        break;
582                }
583                default:
584                {
585                        throw new NoViableAltException(LT(1), getFilename());
586                }
587                }
588                returnAST = typeDefinitionInternal_AST;
589        }
590        
591        public final void classDefinition(
592                AST modifiers
593        ) throws RecognitionException, TokenStreamException {
594                
595                returnAST = null;
596                ASTPair currentAST = new ASTPair();
597                AST classDefinition_AST = null;
598                Token  c = null;
599                AST c_AST = null;
600                AST id_AST = null;
601                AST tp_AST = null;
602                AST sc_AST = null;
603                AST ic_AST = null;
604                AST cb_AST = null;
605                
606                c = LT(1);
607                c_AST = astFactory.create(c);
608                match(LITERAL_class);
609                id();
610                id_AST = (AST)returnAST;
611                {
612                switch ( LA(1)) {
613                case LT:
614                {
615                        typeParameters();
616                        tp_AST = (AST)returnAST;
617                        break;
618                }
619                case LITERAL_extends:
620                case LCURLY:
621                case LITERAL_implements:
622                {
623                        break;
624                }
625                default:
626                {
627                        throw new NoViableAltException(LT(1), getFilename());
628                }
629                }
630                }
631                superClassClause();
632                sc_AST = (AST)returnAST;
633                implementsClause();
634                ic_AST = (AST)returnAST;
635                classBlock();
636                cb_AST = (AST)returnAST;
637                if ( inputState.guessing==0 ) {
638                        classDefinition_AST = (AST)currentAST.root;
639                        classDefinition_AST = (AST)astFactory.make( (new ASTArray(8)).add(astFactory.create(CLASS_DEF,"CLASS_DEF")).add(modifiers).add(c_AST).add(id_AST).add(tp_AST).add(sc_AST).add(ic_AST).add(cb_AST));
640                        currentAST.root = classDefinition_AST;
641                        currentAST.child = classDefinition_AST!=null &&classDefinition_AST.getFirstChild()!=null ?
642                                classDefinition_AST.getFirstChild() : classDefinition_AST;
643                        currentAST.advanceChildToEnd();
644                }
645                returnAST = classDefinition_AST;
646        }
647        
648        public final void interfaceDefinition(
649                AST modifiers
650        ) throws RecognitionException, TokenStreamException {
651                
652                returnAST = null;
653                ASTPair currentAST = new ASTPair();
654                AST interfaceDefinition_AST = null;
655                Token  i = null;
656                AST i_AST = null;
657                AST id_AST = null;
658                AST tp_AST = null;
659                AST ie_AST = null;
660                AST cb_AST = null;
661                
662                i = LT(1);
663                i_AST = astFactory.create(i);
664                match(LITERAL_interface);
665                id();
666                id_AST = (AST)returnAST;
667                {
668                switch ( LA(1)) {
669                case LT:
670                {
671                        typeParameters();
672                        tp_AST = (AST)returnAST;
673                        break;
674                }
675                case LITERAL_extends:
676                case LCURLY:
677                {
678                        break;
679                }
680                default:
681                {
682                        throw new NoViableAltException(LT(1), getFilename());
683                }
684                }
685                }
686                interfaceExtends();
687                ie_AST = (AST)returnAST;
688                classBlock();
689                cb_AST = (AST)returnAST;
690                if ( inputState.guessing==0 ) {
691                        interfaceDefinition_AST = (AST)currentAST.root;
692                        interfaceDefinition_AST = (AST)astFactory.make( (new ASTArray(7)).add(astFactory.create(INTERFACE_DEF,"INTERFACE_DEF")).add(modifiers).add(i_AST).add(id_AST).add(tp_AST).add(ie_AST).add(cb_AST));
693                        currentAST.root = interfaceDefinition_AST;
694                        currentAST.child = interfaceDefinition_AST!=null &&interfaceDefinition_AST.getFirstChild()!=null ?
695                                interfaceDefinition_AST.getFirstChild() : interfaceDefinition_AST;
696                        currentAST.advanceChildToEnd();
697                }
698                returnAST = interfaceDefinition_AST;
699        }
700        
701        public final void enumDefinition(
702                AST modifiers
703        ) throws RecognitionException, TokenStreamException {
704                
705                returnAST = null;
706                ASTPair currentAST = new ASTPair();
707                AST enumDefinition_AST = null;
708                Token  e = null;
709                AST e_AST = null;
710                AST id_AST = null;
711                AST ic_AST = null;
712                AST eb_AST = null;
713                
714                e = LT(1);
715                e_AST = astFactory.create(e);
716                match(ENUM);
717                id();
718                id_AST = (AST)returnAST;
719                implementsClause();
720                ic_AST = (AST)returnAST;
721                enumBlock();
722                eb_AST = (AST)returnAST;
723                if ( inputState.guessing==0 ) {
724                        enumDefinition_AST = (AST)currentAST.root;
725                        enumDefinition_AST = (AST)astFactory.make( (new ASTArray(6)).add(astFactory.create(ENUM_DEF,"ENUM_DEF")).add(modifiers).add(e_AST).add(id_AST).add(ic_AST).add(eb_AST));
726                        currentAST.root = enumDefinition_AST;
727                        currentAST.child = enumDefinition_AST!=null &&enumDefinition_AST.getFirstChild()!=null ?
728                                enumDefinition_AST.getFirstChild() : enumDefinition_AST;
729                        currentAST.advanceChildToEnd();
730                }
731                returnAST = enumDefinition_AST;
732        }
733        
734        public final void annotationDefinition(
735                AST modifiers
736        ) throws RecognitionException, TokenStreamException {
737                
738                returnAST = null;
739                ASTPair currentAST = new ASTPair();
740                AST annotationDefinition_AST = null;
741                Token  a = null;
742                AST a_AST = null;
743                Token  i = null;
744                AST i_AST = null;
745                AST id_AST = null;
746                AST ab_AST = null;
747                
748                a = LT(1);
749                a_AST = astFactory.create(a);
750                match(AT);
751                i = LT(1);
752                i_AST = astFactory.create(i);
753                match(LITERAL_interface);
754                id();
755                id_AST = (AST)returnAST;
756                annotationBlock();
757                ab_AST = (AST)returnAST;
758                if ( inputState.guessing==0 ) {
759                        annotationDefinition_AST = (AST)currentAST.root;
760                        annotationDefinition_AST = (AST)astFactory.make( (new ASTArray(6)).add(astFactory.create(ANNOTATION_DEF,"ANNOTATION_DEF")).add(modifiers).add(a_AST).add(i_AST).add(id_AST).add(ab_AST));
761                        currentAST.root = annotationDefinition_AST;
762                        currentAST.child = annotationDefinition_AST!=null &&annotationDefinition_AST.getFirstChild()!=null ?
763                                annotationDefinition_AST.getFirstChild() : annotationDefinition_AST;
764                        currentAST.advanceChildToEnd();
765                }
766                returnAST = annotationDefinition_AST;
767        }
768        
769        public final void recordDefinition(
770                AST modifiers
771        ) throws RecognitionException, TokenStreamException {
772                
773                returnAST = null;
774                ASTPair currentAST = new ASTPair();
775                AST recordDefinition_AST = null;
776                Token  r = null;
777                AST r_AST = null;
778                AST id_AST = null;
779                AST tp_AST = null;
780                AST rc_AST = null;
781                AST ic_AST = null;
782                AST rb_AST = null;
783                
784                r = LT(1);
785                r_AST = astFactory.create(r);
786                match(LITERAL_record);
787                id();
788                id_AST = (AST)returnAST;
789                {
790                switch ( LA(1)) {
791                case LT:
792                {
793                        typeParameters();
794                        tp_AST = (AST)returnAST;
795                        break;
796                }
797                case LPAREN:
798                {
799                        break;
800                }
801                default:
802                {
803                        throw new NoViableAltException(LT(1), getFilename());
804                }
805                }
806                }
807                recordComponentsList();
808                rc_AST = (AST)returnAST;
809                implementsClause();
810                ic_AST = (AST)returnAST;
811                recordBodyDeclaration();
812                rb_AST = (AST)returnAST;
813                if ( inputState.guessing==0 ) {
814                        recordDefinition_AST = (AST)currentAST.root;
815                        recordDefinition_AST = (AST)astFactory.make( (new ASTArray(5)).add(astFactory.create(RECORD_DEF,"RECORD_DEF")).add(modifiers).add(r_AST).add(id_AST).add(rc_AST));
816                        currentAST.root = recordDefinition_AST;
817                        currentAST.child = recordDefinition_AST!=null &&recordDefinition_AST.getFirstChild()!=null ?
818                                recordDefinition_AST.getFirstChild() : recordDefinition_AST;
819                        currentAST.advanceChildToEnd();
820                }
821                returnAST = recordDefinition_AST;
822        }
823        
824        public final void typeSpec(
825                boolean addImagNode
826        ) throws RecognitionException, TokenStreamException {
827                
828                returnAST = null;
829                ASTPair currentAST = new ASTPair();
830                AST typeSpec_AST = null;
831                
832                switch ( LA(1)) {
833                case IDENT:
834                case AT:
835                case LITERAL_record:
836                {
837                        classTypeSpec(addImagNode);
838                        astFactory.addASTChild(currentAST, returnAST);
839                        typeSpec_AST = (AST)currentAST.root;
840                        break;
841                }
842                case LITERAL_void:
843                case LITERAL_boolean:
844                case LITERAL_byte:
845                case LITERAL_char:
846                case LITERAL_short:
847                case LITERAL_int:
848                case LITERAL_float:
849                case LITERAL_long:
850                case LITERAL_double:
851                {
852                        builtInTypeSpec(addImagNode);
853                        astFactory.addASTChild(currentAST, returnAST);
854                        typeSpec_AST = (AST)currentAST.root;
855                        break;
856                }
857                default:
858                {
859                        throw new NoViableAltException(LT(1), getFilename());
860                }
861                }
862                returnAST = typeSpec_AST;
863        }
864        
865        public final void classTypeSpec(
866                boolean addImagNode
867        ) throws RecognitionException, TokenStreamException {
868                
869                returnAST = null;
870                ASTPair currentAST = new ASTPair();
871                AST classTypeSpec_AST = null;
872                Token  lb = null;
873                AST lb_AST = null;
874                
875                classOrInterfaceType(addImagNode);
876                astFactory.addASTChild(currentAST, returnAST);
877                {
878                _loop24:
879                do {
880                        if ((LA(1)==LBRACK||LA(1)==AT) && (_tokenSet_5.member(LA(2)))) {
881                                {
882                                if (((LA(1)==LBRACK||LA(1)==AT) && (_tokenSet_5.member(LA(2))))&&(LA(1) == AT)) {
883                                        annotations();
884                                        astFactory.addASTChild(currentAST, returnAST);
885                                }
886                                else if ((LA(1)==LBRACK) && (LA(2)==RBRACK)) {
887                                }
888                                else {
889                                        throw new NoViableAltException(LT(1), getFilename());
890                                }
891                                
892                                }
893                                lb = LT(1);
894                                lb_AST = astFactory.create(lb);
895                                astFactory.makeASTRoot(currentAST, lb_AST);
896                                match(LBRACK);
897                                if ( inputState.guessing==0 ) {
898                                        lb_AST.setType(ARRAY_DECLARATOR);
899                                }
900                                AST tmp11_AST = null;
901                                tmp11_AST = astFactory.create(LT(1));
902                                astFactory.addASTChild(currentAST, tmp11_AST);
903                                match(RBRACK);
904                        }
905                        else {
906                                break _loop24;
907                        }
908                        
909                } while (true);
910                }
911                if ( inputState.guessing==0 ) {
912                        classTypeSpec_AST = (AST)currentAST.root;
913                        
914                        if ( addImagNode ) {
915                        classTypeSpec_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE,"TYPE")).add(classTypeSpec_AST));
916                        }
917                        
918                        currentAST.root = classTypeSpec_AST;
919                        currentAST.child = classTypeSpec_AST!=null &&classTypeSpec_AST.getFirstChild()!=null ?
920                                classTypeSpec_AST.getFirstChild() : classTypeSpec_AST;
921                        currentAST.advanceChildToEnd();
922                }
923                classTypeSpec_AST = (AST)currentAST.root;
924                returnAST = classTypeSpec_AST;
925        }
926        
927        public final void builtInTypeSpec(
928                boolean addImagNode
929        ) throws RecognitionException, TokenStreamException {
930                
931                returnAST = null;
932                ASTPair currentAST = new ASTPair();
933                AST builtInTypeSpec_AST = null;
934                Token  lb = null;
935                AST lb_AST = null;
936                
937                builtInType();
938                astFactory.addASTChild(currentAST, returnAST);
939                {
940                _loop54:
941                do {
942                        if ((LA(1)==LBRACK||LA(1)==AT) && (_tokenSet_5.member(LA(2)))) {
943                                {
944                                if (((LA(1)==LBRACK||LA(1)==AT) && (_tokenSet_5.member(LA(2))))&&(LA(1) == AT)) {
945                                        annotations();
946                                        astFactory.addASTChild(currentAST, returnAST);
947                                }
948                                else if ((LA(1)==LBRACK) && (LA(2)==RBRACK)) {
949                                }
950                                else {
951                                        throw new NoViableAltException(LT(1), getFilename());
952                                }
953                                
954                                }
955                                lb = LT(1);
956                                lb_AST = astFactory.create(lb);
957                                astFactory.makeASTRoot(currentAST, lb_AST);
958                                match(LBRACK);
959                                if ( inputState.guessing==0 ) {
960                                        lb_AST.setType(ARRAY_DECLARATOR);
961                                }
962                                AST tmp12_AST = null;
963                                tmp12_AST = astFactory.create(LT(1));
964                                astFactory.addASTChild(currentAST, tmp12_AST);
965                                match(RBRACK);
966                        }
967                        else {
968                                break _loop54;
969                        }
970                        
971                } while (true);
972                }
973                if ( inputState.guessing==0 ) {
974                        builtInTypeSpec_AST = (AST)currentAST.root;
975                        
976                        if ( addImagNode ) {
977                        builtInTypeSpec_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE,"TYPE")).add(builtInTypeSpec_AST));
978                        }
979                        
980                        currentAST.root = builtInTypeSpec_AST;
981                        currentAST.child = builtInTypeSpec_AST!=null &&builtInTypeSpec_AST.getFirstChild()!=null ?
982                                builtInTypeSpec_AST.getFirstChild() : builtInTypeSpec_AST;
983                        currentAST.advanceChildToEnd();
984                }
985                builtInTypeSpec_AST = (AST)currentAST.root;
986                returnAST = builtInTypeSpec_AST;
987        }
988        
989        public final void variableLengthParameterTypeSpec() throws RecognitionException, TokenStreamException {
990                
991                returnAST = null;
992                ASTPair currentAST = new ASTPair();
993                AST variableLengthParameterTypeSpec_AST = null;
994                Token  lb = null;
995                AST lb_AST = null;
996                
997                {
998                switch ( LA(1)) {
999                case IDENT:
1000                case AT:
1001                case LITERAL_record:
1002                {
1003                        classOrInterfaceType(false);
1004                        astFactory.addASTChild(currentAST, returnAST);
1005                        break;
1006                }
1007                case LITERAL_void:
1008                case LITERAL_boolean:
1009                case LITERAL_byte:
1010                case LITERAL_char:
1011                case LITERAL_short:
1012                case LITERAL_int:
1013                case LITERAL_float:
1014                case LITERAL_long:
1015                case LITERAL_double:
1016                {
1017                        builtInType();
1018                        astFactory.addASTChild(currentAST, returnAST);
1019                        break;
1020                }
1021                default:
1022                {
1023                        throw new NoViableAltException(LT(1), getFilename());
1024                }
1025                }
1026                }
1027                {
1028                if (((_tokenSet_6.member(LA(1))) && (_tokenSet_5.member(LA(2))))&&(LA(1) == AT)) {
1029                        annotations();
1030                        astFactory.addASTChild(currentAST, returnAST);
1031                }
1032                else if ((LA(1)==LBRACK||LA(1)==ELLIPSIS) && (_tokenSet_5.member(LA(2)))) {
1033                }
1034                else {
1035                        throw new NoViableAltException(LT(1), getFilename());
1036                }
1037                
1038                }
1039                {
1040                _loop20:
1041                do {
1042                        if ((LA(1)==LBRACK)) {
1043                                lb = LT(1);
1044                                lb_AST = astFactory.create(lb);
1045                                astFactory.makeASTRoot(currentAST, lb_AST);
1046                                match(LBRACK);
1047                                if ( inputState.guessing==0 ) {
1048                                        lb_AST.setType(ARRAY_DECLARATOR);
1049                                }
1050                                AST tmp13_AST = null;
1051                                tmp13_AST = astFactory.create(LT(1));
1052                                astFactory.addASTChild(currentAST, tmp13_AST);
1053                                match(RBRACK);
1054                                {
1055                                if (((_tokenSet_6.member(LA(1))) && (_tokenSet_5.member(LA(2))))&&(LA(1) == AT)) {
1056                                        annotations();
1057                                        astFactory.addASTChild(currentAST, returnAST);
1058                                }
1059                                else if ((LA(1)==LBRACK||LA(1)==ELLIPSIS) && (_tokenSet_5.member(LA(2)))) {
1060                                }
1061                                else {
1062                                        throw new NoViableAltException(LT(1), getFilename());
1063                                }
1064                                
1065                                }
1066                        }
1067                        else {
1068                                break _loop20;
1069                        }
1070                        
1071                } while (true);
1072                }
1073                variableLengthParameterTypeSpec_AST = (AST)currentAST.root;
1074                returnAST = variableLengthParameterTypeSpec_AST;
1075        }
1076        
1077        public final void classOrInterfaceType(
1078                boolean addImagNode
1079        ) throws RecognitionException, TokenStreamException {
1080                
1081                returnAST = null;
1082                ASTPair currentAST = new ASTPair();
1083                AST classOrInterfaceType_AST = null;
1084                
1085                {
1086                if (((_tokenSet_7.member(LA(1))) && (_tokenSet_8.member(LA(2))))&&(LA(1) == AT)) {
1087                        annotations();
1088                        astFactory.addASTChild(currentAST, returnAST);
1089                }
1090                else if ((LA(1)==IDENT||LA(1)==LITERAL_record) && (_tokenSet_8.member(LA(2)))) {
1091                }
1092                else {
1093                        throw new NoViableAltException(LT(1), getFilename());
1094                }
1095                
1096                }
1097                id();
1098                astFactory.addASTChild(currentAST, returnAST);
1099                {
1100                if ((LA(1)==LT) && (_tokenSet_8.member(LA(2)))) {
1101                        typeArguments(addImagNode);
1102                        astFactory.addASTChild(currentAST, returnAST);
1103                }
1104                else if ((_tokenSet_8.member(LA(1))) && (_tokenSet_9.member(LA(2)))) {
1105                }
1106                else {
1107                        throw new NoViableAltException(LT(1), getFilename());
1108                }
1109                
1110                }
1111                {
1112                _loop31:
1113                do {
1114                        if ((LA(1)==DOT) && (_tokenSet_7.member(LA(2)))) {
1115                                AST tmp14_AST = null;
1116                                tmp14_AST = astFactory.create(LT(1));
1117                                astFactory.makeASTRoot(currentAST, tmp14_AST);
1118                                match(DOT);
1119                                {
1120                                if (((_tokenSet_7.member(LA(1))) && (_tokenSet_8.member(LA(2))))&&(LA(1) == AT)) {
1121                                        annotations();
1122                                        astFactory.addASTChild(currentAST, returnAST);
1123                                }
1124                                else if ((LA(1)==IDENT||LA(1)==LITERAL_record) && (_tokenSet_8.member(LA(2)))) {
1125                                }
1126                                else {
1127                                        throw new NoViableAltException(LT(1), getFilename());
1128                                }
1129                                
1130                                }
1131                                id();
1132                                astFactory.addASTChild(currentAST, returnAST);
1133                                {
1134                                if ((LA(1)==LT) && (_tokenSet_8.member(LA(2)))) {
1135                                        typeArguments(addImagNode);
1136                                        astFactory.addASTChild(currentAST, returnAST);
1137                                }
1138                                else if ((_tokenSet_8.member(LA(1))) && (_tokenSet_9.member(LA(2)))) {
1139                                }
1140                                else {
1141                                        throw new NoViableAltException(LT(1), getFilename());
1142                                }
1143                                
1144                                }
1145                        }
1146                        else {
1147                                break _loop31;
1148                        }
1149                        
1150                } while (true);
1151                }
1152                classOrInterfaceType_AST = (AST)currentAST.root;
1153                returnAST = classOrInterfaceType_AST;
1154        }
1155        
1156        public final void builtInType() throws RecognitionException, TokenStreamException {
1157                
1158                returnAST = null;
1159                ASTPair currentAST = new ASTPair();
1160                AST builtInType_AST = null;
1161                
1162                switch ( LA(1)) {
1163                case LITERAL_void:
1164                {
1165                        AST tmp15_AST = null;
1166                        tmp15_AST = astFactory.create(LT(1));
1167                        astFactory.addASTChild(currentAST, tmp15_AST);
1168                        match(LITERAL_void);
1169                        builtInType_AST = (AST)currentAST.root;
1170                        break;
1171                }
1172                case LITERAL_boolean:
1173                {
1174                        AST tmp16_AST = null;
1175                        tmp16_AST = astFactory.create(LT(1));
1176                        astFactory.addASTChild(currentAST, tmp16_AST);
1177                        match(LITERAL_boolean);
1178                        builtInType_AST = (AST)currentAST.root;
1179                        break;
1180                }
1181                case LITERAL_byte:
1182                {
1183                        AST tmp17_AST = null;
1184                        tmp17_AST = astFactory.create(LT(1));
1185                        astFactory.addASTChild(currentAST, tmp17_AST);
1186                        match(LITERAL_byte);
1187                        builtInType_AST = (AST)currentAST.root;
1188                        break;
1189                }
1190                case LITERAL_char:
1191                {
1192                        AST tmp18_AST = null;
1193                        tmp18_AST = astFactory.create(LT(1));
1194                        astFactory.addASTChild(currentAST, tmp18_AST);
1195                        match(LITERAL_char);
1196                        builtInType_AST = (AST)currentAST.root;
1197                        break;
1198                }
1199                case LITERAL_short:
1200                {
1201                        AST tmp19_AST = null;
1202                        tmp19_AST = astFactory.create(LT(1));
1203                        astFactory.addASTChild(currentAST, tmp19_AST);
1204                        match(LITERAL_short);
1205                        builtInType_AST = (AST)currentAST.root;
1206                        break;
1207                }
1208                case LITERAL_int:
1209                {
1210                        AST tmp20_AST = null;
1211                        tmp20_AST = astFactory.create(LT(1));
1212                        astFactory.addASTChild(currentAST, tmp20_AST);
1213                        match(LITERAL_int);
1214                        builtInType_AST = (AST)currentAST.root;
1215                        break;
1216                }
1217                case LITERAL_float:
1218                {
1219                        AST tmp21_AST = null;
1220                        tmp21_AST = astFactory.create(LT(1));
1221                        astFactory.addASTChild(currentAST, tmp21_AST);
1222                        match(LITERAL_float);
1223                        builtInType_AST = (AST)currentAST.root;
1224                        break;
1225                }
1226                case LITERAL_long:
1227                {
1228                        AST tmp22_AST = null;
1229                        tmp22_AST = astFactory.create(LT(1));
1230                        astFactory.addASTChild(currentAST, tmp22_AST);
1231                        match(LITERAL_long);
1232                        builtInType_AST = (AST)currentAST.root;
1233                        break;
1234                }
1235                case LITERAL_double:
1236                {
1237                        AST tmp23_AST = null;
1238                        tmp23_AST = astFactory.create(LT(1));
1239                        astFactory.addASTChild(currentAST, tmp23_AST);
1240                        match(LITERAL_double);
1241                        builtInType_AST = (AST)currentAST.root;
1242                        break;
1243                }
1244                default:
1245                {
1246                        throw new NoViableAltException(LT(1), getFilename());
1247                }
1248                }
1249                returnAST = builtInType_AST;
1250        }
1251        
1252        public final void id() throws RecognitionException, TokenStreamException {
1253                
1254                returnAST = null;
1255                ASTPair currentAST = new ASTPair();
1256                AST id_AST = null;
1257                
1258                switch ( LA(1)) {
1259                case IDENT:
1260                {
1261                        AST tmp24_AST = null;
1262                        tmp24_AST = astFactory.create(LT(1));
1263                        astFactory.addASTChild(currentAST, tmp24_AST);
1264                        match(IDENT);
1265                        id_AST = (AST)currentAST.root;
1266                        break;
1267                }
1268                case LITERAL_record:
1269                {
1270                        recordKey();
1271                        astFactory.addASTChild(currentAST, returnAST);
1272                        id_AST = (AST)currentAST.root;
1273                        break;
1274                }
1275                default:
1276                {
1277                        throw new NoViableAltException(LT(1), getFilename());
1278                }
1279                }
1280                returnAST = id_AST;
1281        }
1282        
1283        public final void typeArguments(
1284                boolean addImagNode
1285        ) throws RecognitionException, TokenStreamException {
1286                
1287                returnAST = null;
1288                ASTPair currentAST = new ASTPair();
1289                AST typeArguments_AST = null;
1290                Token  lt = null;
1291                AST lt_AST = null;
1292                int currentLtLevel = 0;
1293                
1294                if ( inputState.guessing==0 ) {
1295                        currentLtLevel = ltCounter;
1296                }
1297                lt = LT(1);
1298                lt_AST = astFactory.create(lt);
1299                astFactory.addASTChild(currentAST, lt_AST);
1300                match(LT);
1301                if ( inputState.guessing==0 ) {
1302                        lt_AST.setType(GENERIC_START); ;ltCounter++;
1303                }
1304                {
1305                if ((_tokenSet_10.member(LA(1))) && (_tokenSet_8.member(LA(2)))) {
1306                        typeArgument(addImagNode);
1307                        astFactory.addASTChild(currentAST, returnAST);
1308                        {
1309                        _loop43:
1310                        do {
1311                                if (((LA(1)==COMMA) && (_tokenSet_10.member(LA(2))))&&(gtToReconcile == 0)) {
1312                                        AST tmp25_AST = null;
1313                                        tmp25_AST = astFactory.create(LT(1));
1314                                        astFactory.addASTChild(currentAST, tmp25_AST);
1315                                        match(COMMA);
1316                                        typeArgument(addImagNode);
1317                                        astFactory.addASTChild(currentAST, returnAST);
1318                                }
1319                                else {
1320                                        break _loop43;
1321                                }
1322                                
1323                        } while (true);
1324                        }
1325                }
1326                else if ((_tokenSet_8.member(LA(1))) && (_tokenSet_9.member(LA(2)))) {
1327                }
1328                else {
1329                        throw new NoViableAltException(LT(1), getFilename());
1330                }
1331                
1332                }
1333                {
1334                if ((_tokenSet_11.member(LA(1))) && (_tokenSet_8.member(LA(2)))) {
1335                        typeArgumentsOrParametersEnd();
1336                        astFactory.addASTChild(currentAST, returnAST);
1337                }
1338                else if ((_tokenSet_8.member(LA(1))) && (_tokenSet_9.member(LA(2)))) {
1339                }
1340                else {
1341                        throw new NoViableAltException(LT(1), getFilename());
1342                }
1343                
1344                }
1345                if ( inputState.guessing==0 ) {
1346                        
1347                        if (areThereGtsToEmit())
1348                        {
1349                        astFactory.addASTChild(currentAST, emitSingleGt());
1350                        }
1351                        
1352                }
1353                if (!(areLtsAndGtsBalanced(currentLtLevel)))
1354                  throw new SemanticException("areLtsAndGtsBalanced(currentLtLevel)");
1355                if ( inputState.guessing==0 ) {
1356                        typeArguments_AST = (AST)currentAST.root;
1357                        typeArguments_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE_ARGUMENTS,"TYPE_ARGUMENTS")).add(typeArguments_AST));
1358                        currentAST.root = typeArguments_AST;
1359                        currentAST.child = typeArguments_AST!=null &&typeArguments_AST.getFirstChild()!=null ?
1360                                typeArguments_AST.getFirstChild() : typeArguments_AST;
1361                        currentAST.advanceChildToEnd();
1362                }
1363                typeArguments_AST = (AST)currentAST.root;
1364                returnAST = typeArguments_AST;
1365        }
1366        
1367        public final void typeArgument(
1368                boolean addImagNode
1369        ) throws RecognitionException, TokenStreamException {
1370                
1371                returnAST = null;
1372                ASTPair currentAST = new ASTPair();
1373                AST typeArgument_AST = null;
1374                
1375                {
1376                {
1377                if (((_tokenSet_10.member(LA(1))) && (_tokenSet_8.member(LA(2))))&&(LA(1) == AT)) {
1378                        annotations();
1379                        astFactory.addASTChild(currentAST, returnAST);
1380                }
1381                else if ((_tokenSet_10.member(LA(1))) && (_tokenSet_8.member(LA(2)))) {
1382                }
1383                else {
1384                        throw new NoViableAltException(LT(1), getFilename());
1385                }
1386                
1387                }
1388                {
1389                switch ( LA(1)) {
1390                case IDENT:
1391                case AT:
1392                case LITERAL_record:
1393                {
1394                        classTypeSpec(addImagNode);
1395                        astFactory.addASTChild(currentAST, returnAST);
1396                        break;
1397                }
1398                case LITERAL_void:
1399                case LITERAL_boolean:
1400                case LITERAL_byte:
1401                case LITERAL_char:
1402                case LITERAL_short:
1403                case LITERAL_int:
1404                case LITERAL_float:
1405                case LITERAL_long:
1406                case LITERAL_double:
1407                {
1408                        builtInTypeSpec(addImagNode);
1409                        astFactory.addASTChild(currentAST, returnAST);
1410                        break;
1411                }
1412                case QUESTION:
1413                {
1414                        wildcardType(addImagNode);
1415                        astFactory.addASTChild(currentAST, returnAST);
1416                        break;
1417                }
1418                default:
1419                {
1420                        throw new NoViableAltException(LT(1), getFilename());
1421                }
1422                }
1423                }
1424                }
1425                if ( inputState.guessing==0 ) {
1426                        typeArgument_AST = (AST)currentAST.root;
1427                        typeArgument_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE_ARGUMENT,"TYPE_ARGUMENT")).add(typeArgument_AST));
1428                        currentAST.root = typeArgument_AST;
1429                        currentAST.child = typeArgument_AST!=null &&typeArgument_AST.getFirstChild()!=null ?
1430                                typeArgument_AST.getFirstChild() : typeArgument_AST;
1431                        currentAST.advanceChildToEnd();
1432                }
1433                typeArgument_AST = (AST)currentAST.root;
1434                returnAST = typeArgument_AST;
1435        }
1436        
1437        public final void wildcardType(
1438                boolean addImagNode
1439        ) throws RecognitionException, TokenStreamException {
1440                
1441                returnAST = null;
1442                ASTPair currentAST = new ASTPair();
1443                AST wildcardType_AST = null;
1444                Token  q = null;
1445                AST q_AST = null;
1446                
1447                q = LT(1);
1448                q_AST = astFactory.create(q);
1449                astFactory.addASTChild(currentAST, q_AST);
1450                match(QUESTION);
1451                if ( inputState.guessing==0 ) {
1452                        q_AST.setType(WILDCARD_TYPE);
1453                }
1454                {
1455                boolean synPredMatched39 = false;
1456                if (((LA(1)==LITERAL_extends||LA(1)==LITERAL_super) && (_tokenSet_12.member(LA(2))))) {
1457                        int _m39 = mark();
1458                        synPredMatched39 = true;
1459                        inputState.guessing++;
1460                        try {
1461                                {
1462                                switch ( LA(1)) {
1463                                case LITERAL_extends:
1464                                {
1465                                        match(LITERAL_extends);
1466                                        break;
1467                                }
1468                                case LITERAL_super:
1469                                {
1470                                        match(LITERAL_super);
1471                                        break;
1472                                }
1473                                default:
1474                                {
1475                                        throw new NoViableAltException(LT(1), getFilename());
1476                                }
1477                                }
1478                                }
1479                        }
1480                        catch (RecognitionException pe) {
1481                                synPredMatched39 = false;
1482                        }
1483                        rewind(_m39);
1484inputState.guessing--;
1485                }
1486                if ( synPredMatched39 ) {
1487                        typeArgumentBounds(addImagNode);
1488                        astFactory.addASTChild(currentAST, returnAST);
1489                }
1490                else if ((_tokenSet_8.member(LA(1))) && (_tokenSet_9.member(LA(2)))) {
1491                }
1492                else {
1493                        throw new NoViableAltException(LT(1), getFilename());
1494                }
1495                
1496                }
1497                wildcardType_AST = (AST)currentAST.root;
1498                returnAST = wildcardType_AST;
1499        }
1500        
1501        public final void typeArgumentBounds(
1502                boolean addImagNode
1503        ) throws RecognitionException, TokenStreamException {
1504                
1505                returnAST = null;
1506                ASTPair currentAST = new ASTPair();
1507                AST typeArgumentBounds_AST = null;
1508                Token  e = null;
1509                AST e_AST = null;
1510                Token  s = null;
1511                AST s_AST = null;
1512                Token  lb = null;
1513                AST lb_AST = null;
1514                
1515                {
1516                switch ( LA(1)) {
1517                case LITERAL_extends:
1518                {
1519                        e = LT(1);
1520                        e_AST = astFactory.create(e);
1521                        astFactory.makeASTRoot(currentAST, e_AST);
1522                        match(LITERAL_extends);
1523                        if ( inputState.guessing==0 ) {
1524                                e_AST.setType(TYPE_UPPER_BOUNDS);
1525                        }
1526                        break;
1527                }
1528                case LITERAL_super:
1529                {
1530                        s = LT(1);
1531                        s_AST = astFactory.create(s);
1532                        astFactory.makeASTRoot(currentAST, s_AST);
1533                        match(LITERAL_super);
1534                        if ( inputState.guessing==0 ) {
1535                                s_AST.setType(TYPE_LOWER_BOUNDS);
1536                        }
1537                        break;
1538                }
1539                default:
1540                {
1541                        throw new NoViableAltException(LT(1), getFilename());
1542                }
1543                }
1544                }
1545                {
1546                switch ( LA(1)) {
1547                case IDENT:
1548                case AT:
1549                case LITERAL_record:
1550                {
1551                        classOrInterfaceType(addImagNode);
1552                        astFactory.addASTChild(currentAST, returnAST);
1553                        break;
1554                }
1555                case LITERAL_void:
1556                case LITERAL_boolean:
1557                case LITERAL_byte:
1558                case LITERAL_char:
1559                case LITERAL_short:
1560                case LITERAL_int:
1561                case LITERAL_float:
1562                case LITERAL_long:
1563                case LITERAL_double:
1564                {
1565                        builtInType();
1566                        astFactory.addASTChild(currentAST, returnAST);
1567                        break;
1568                }
1569                default:
1570                {
1571                        throw new NoViableAltException(LT(1), getFilename());
1572                }
1573                }
1574                }
1575                {
1576                _loop50:
1577                do {
1578                        if ((LA(1)==LBRACK) && (LA(2)==RBRACK)) {
1579                                lb = LT(1);
1580                                lb_AST = astFactory.create(lb);
1581                                astFactory.makeASTRoot(currentAST, lb_AST);
1582                                match(LBRACK);
1583                                if ( inputState.guessing==0 ) {
1584                                        lb_AST.setType(ARRAY_DECLARATOR);
1585                                }
1586                                AST tmp26_AST = null;
1587                                tmp26_AST = astFactory.create(LT(1));
1588                                astFactory.addASTChild(currentAST, tmp26_AST);
1589                                match(RBRACK);
1590                        }
1591                        else {
1592                                break _loop50;
1593                        }
1594                        
1595                } while (true);
1596                }
1597                typeArgumentBounds_AST = (AST)currentAST.root;
1598                returnAST = typeArgumentBounds_AST;
1599        }
1600        
1601        protected final void typeArgumentsOrParametersEnd() throws RecognitionException, TokenStreamException {
1602                
1603                returnAST = null;
1604                ASTPair currentAST = new ASTPair();
1605                AST typeArgumentsOrParametersEnd_AST = null;
1606                Token  g = null;
1607                AST g_AST = null;
1608                Token  sr = null;
1609                AST sr_AST = null;
1610                Token  bsr = null;
1611                AST bsr_AST = null;
1612                
1613                switch ( LA(1)) {
1614                case GT:
1615                {
1616                        g = LT(1);
1617                        g_AST = astFactory.create(g);
1618                        match(GT);
1619                        if ( inputState.guessing==0 ) {
1620                                consumeCurrentGtSequence((DetailAstImpl)g_AST);
1621                        }
1622                        break;
1623                }
1624                case SR:
1625                {
1626                        sr = LT(1);
1627                        sr_AST = astFactory.create(sr);
1628                        match(SR);
1629                        if ( inputState.guessing==0 ) {
1630                                consumeCurrentGtSequence((DetailAstImpl)sr_AST);
1631                        }
1632                        break;
1633                }
1634                case BSR:
1635                {
1636                        bsr = LT(1);
1637                        bsr_AST = astFactory.create(bsr);
1638                        match(BSR);
1639                        if ( inputState.guessing==0 ) {
1640                                consumeCurrentGtSequence((DetailAstImpl)bsr_AST);
1641                        }
1642                        break;
1643                }
1644                default:
1645                {
1646                        throw new NoViableAltException(LT(1), getFilename());
1647                }
1648                }
1649                returnAST = typeArgumentsOrParametersEnd_AST;
1650        }
1651        
1652        public final void type() throws RecognitionException, TokenStreamException {
1653                
1654                returnAST = null;
1655                ASTPair currentAST = new ASTPair();
1656                AST type_AST = null;
1657                
1658                {
1659                if (((_tokenSet_12.member(LA(1))) && (_tokenSet_13.member(LA(2))))&&(LA(1) == AT)) {
1660                        annotations();
1661                        astFactory.addASTChild(currentAST, returnAST);
1662                }
1663                else if ((_tokenSet_12.member(LA(1))) && (_tokenSet_13.member(LA(2)))) {
1664                }
1665                else {
1666                        throw new NoViableAltException(LT(1), getFilename());
1667                }
1668                
1669                }
1670                {
1671                switch ( LA(1)) {
1672                case IDENT:
1673                case AT:
1674                case LITERAL_record:
1675                {
1676                        classOrInterfaceType(false);
1677                        astFactory.addASTChild(currentAST, returnAST);
1678                        break;
1679                }
1680                case LITERAL_void:
1681                case LITERAL_boolean:
1682                case LITERAL_byte:
1683                case LITERAL_char:
1684                case LITERAL_short:
1685                case LITERAL_int:
1686                case LITERAL_float:
1687                case LITERAL_long:
1688                case LITERAL_double:
1689                {
1690                        builtInType();
1691                        astFactory.addASTChild(currentAST, returnAST);
1692                        break;
1693                }
1694                default:
1695                {
1696                        throw new NoViableAltException(LT(1), getFilename());
1697                }
1698                }
1699                }
1700                type_AST = (AST)currentAST.root;
1701                returnAST = type_AST;
1702        }
1703        
1704/** A declaration is the creation of a reference or primitive-type variable
1705 *  Create a separate Type/Var tree for each var in the var list.
1706    @throws RecognitionException if recognition problem occurs.
1707    @throws TokenStreamException if problem occurs while generating a stream of tokens.
1708 */
1709        public final void declaration() throws RecognitionException, TokenStreamException {
1710                
1711                returnAST = null;
1712                ASTPair currentAST = new ASTPair();
1713                AST declaration_AST = null;
1714                AST m_AST = null;
1715                AST t_AST = null;
1716                AST v_AST = null;
1717                
1718                modifiers();
1719                m_AST = (AST)returnAST;
1720                typeSpec(false);
1721                t_AST = (AST)returnAST;
1722                variableDefinitions(m_AST,t_AST);
1723                v_AST = (AST)returnAST;
1724                if ( inputState.guessing==0 ) {
1725                        declaration_AST = (AST)currentAST.root;
1726                        declaration_AST = v_AST;
1727                        currentAST.root = declaration_AST;
1728                        currentAST.child = declaration_AST!=null &&declaration_AST.getFirstChild()!=null ?
1729                                declaration_AST.getFirstChild() : declaration_AST;
1730                        currentAST.advanceChildToEnd();
1731                }
1732                returnAST = declaration_AST;
1733        }
1734        
1735        public final void variableDefinitions(
1736                AST mods, AST t
1737        ) throws RecognitionException, TokenStreamException {
1738                
1739                returnAST = null;
1740                ASTPair currentAST = new ASTPair();
1741                AST variableDefinitions_AST = null;
1742                
1743                variableDeclarator((AST) getASTFactory().dupTree(mods),
1744                           //dupList as this also copies siblings (like TYPE_ARGUMENTS)
1745                           (AST) getASTFactory().dupList(t));
1746                astFactory.addASTChild(currentAST, returnAST);
1747                {
1748                _loop193:
1749                do {
1750                        if ((LA(1)==COMMA)) {
1751                                AST tmp27_AST = null;
1752                                tmp27_AST = astFactory.create(LT(1));
1753                                astFactory.addASTChild(currentAST, tmp27_AST);
1754                                match(COMMA);
1755                                variableDeclarator((AST) getASTFactory().dupTree(mods),
1756                               //dupList as this also copies siblings (like TYPE_ARGUMENTS)
1757                               (AST) getASTFactory().dupList(t));
1758                                astFactory.addASTChild(currentAST, returnAST);
1759                        }
1760                        else {
1761                                break _loop193;
1762                        }
1763                        
1764                } while (true);
1765                }
1766                variableDefinitions_AST = (AST)currentAST.root;
1767                returnAST = variableDefinitions_AST;
1768        }
1769        
1770        public final void modifier() throws RecognitionException, TokenStreamException {
1771                
1772                returnAST = null;
1773                ASTPair currentAST = new ASTPair();
1774                AST modifier_AST = null;
1775                
1776                switch ( LA(1)) {
1777                case LITERAL_private:
1778                {
1779                        AST tmp28_AST = null;
1780                        tmp28_AST = astFactory.create(LT(1));
1781                        astFactory.addASTChild(currentAST, tmp28_AST);
1782                        match(LITERAL_private);
1783                        modifier_AST = (AST)currentAST.root;
1784                        break;
1785                }
1786                case LITERAL_public:
1787                {
1788                        AST tmp29_AST = null;
1789                        tmp29_AST = astFactory.create(LT(1));
1790                        astFactory.addASTChild(currentAST, tmp29_AST);
1791                        match(LITERAL_public);
1792                        modifier_AST = (AST)currentAST.root;
1793                        break;
1794                }
1795                case LITERAL_protected:
1796                {
1797                        AST tmp30_AST = null;
1798                        tmp30_AST = astFactory.create(LT(1));
1799                        astFactory.addASTChild(currentAST, tmp30_AST);
1800                        match(LITERAL_protected);
1801                        modifier_AST = (AST)currentAST.root;
1802                        break;
1803                }
1804                case LITERAL_static:
1805                {
1806                        AST tmp31_AST = null;
1807                        tmp31_AST = astFactory.create(LT(1));
1808                        astFactory.addASTChild(currentAST, tmp31_AST);
1809                        match(LITERAL_static);
1810                        modifier_AST = (AST)currentAST.root;
1811                        break;
1812                }
1813                case LITERAL_transient:
1814                {
1815                        AST tmp32_AST = null;
1816                        tmp32_AST = astFactory.create(LT(1));
1817                        astFactory.addASTChild(currentAST, tmp32_AST);
1818                        match(LITERAL_transient);
1819                        modifier_AST = (AST)currentAST.root;
1820                        break;
1821                }
1822                case FINAL:
1823                {
1824                        AST tmp33_AST = null;
1825                        tmp33_AST = astFactory.create(LT(1));
1826                        astFactory.addASTChild(currentAST, tmp33_AST);
1827                        match(FINAL);
1828                        modifier_AST = (AST)currentAST.root;
1829                        break;
1830                }
1831                case ABSTRACT:
1832                {
1833                        AST tmp34_AST = null;
1834                        tmp34_AST = astFactory.create(LT(1));
1835                        astFactory.addASTChild(currentAST, tmp34_AST);
1836                        match(ABSTRACT);
1837                        modifier_AST = (AST)currentAST.root;
1838                        break;
1839                }
1840                case LITERAL_native:
1841                {
1842                        AST tmp35_AST = null;
1843                        tmp35_AST = astFactory.create(LT(1));
1844                        astFactory.addASTChild(currentAST, tmp35_AST);
1845                        match(LITERAL_native);
1846                        modifier_AST = (AST)currentAST.root;
1847                        break;
1848                }
1849                case LITERAL_synchronized:
1850                {
1851                        AST tmp36_AST = null;
1852                        tmp36_AST = astFactory.create(LT(1));
1853                        astFactory.addASTChild(currentAST, tmp36_AST);
1854                        match(LITERAL_synchronized);
1855                        modifier_AST = (AST)currentAST.root;
1856                        break;
1857                }
1858                case LITERAL_volatile:
1859                {
1860                        AST tmp37_AST = null;
1861                        tmp37_AST = astFactory.create(LT(1));
1862                        astFactory.addASTChild(currentAST, tmp37_AST);
1863                        match(LITERAL_volatile);
1864                        modifier_AST = (AST)currentAST.root;
1865                        break;
1866                }
1867                case STRICTFP:
1868                {
1869                        AST tmp38_AST = null;
1870                        tmp38_AST = astFactory.create(LT(1));
1871                        astFactory.addASTChild(currentAST, tmp38_AST);
1872                        match(STRICTFP);
1873                        modifier_AST = (AST)currentAST.root;
1874                        break;
1875                }
1876                case LITERAL_default:
1877                {
1878                        AST tmp39_AST = null;
1879                        tmp39_AST = astFactory.create(LT(1));
1880                        astFactory.addASTChild(currentAST, tmp39_AST);
1881                        match(LITERAL_default);
1882                        modifier_AST = (AST)currentAST.root;
1883                        break;
1884                }
1885                default:
1886                {
1887                        throw new NoViableAltException(LT(1), getFilename());
1888                }
1889                }
1890                returnAST = modifier_AST;
1891        }
1892        
1893        public final void annotation() throws RecognitionException, TokenStreamException {
1894                
1895                returnAST = null;
1896                ASTPair currentAST = new ASTPair();
1897                AST annotation_AST = null;
1898                AST i_AST = null;
1899                Token  l = null;
1900                AST l_AST = null;
1901                AST args_AST = null;
1902                Token  r = null;
1903                AST r_AST = null;
1904                
1905                AST tmp40_AST = null;
1906                tmp40_AST = astFactory.create(LT(1));
1907                match(AT);
1908                identifier();
1909                i_AST = (AST)returnAST;
1910                {
1911                switch ( LA(1)) {
1912                case LPAREN:
1913                {
1914                        l = LT(1);
1915                        l_AST = astFactory.create(l);
1916                        match(LPAREN);
1917                        {
1918                        switch ( LA(1)) {
1919                        case LITERAL_void:
1920                        case LITERAL_boolean:
1921                        case LITERAL_byte:
1922                        case LITERAL_char:
1923                        case LITERAL_short:
1924                        case LITERAL_int:
1925                        case LITERAL_float:
1926                        case LITERAL_long:
1927                        case LITERAL_double:
1928                        case IDENT:
1929                        case LCURLY:
1930                        case LPAREN:
1931                        case LITERAL_this:
1932                        case LITERAL_super:
1933                        case PLUS:
1934                        case MINUS:
1935                        case INC:
1936                        case DEC:
1937                        case BNOT:
1938                        case LNOT:
1939                        case LITERAL_true:
1940                        case LITERAL_false:
1941                        case LITERAL_null:
1942                        case LITERAL_new:
1943                        case NUM_INT:
1944                        case CHAR_LITERAL:
1945                        case STRING_LITERAL:
1946                        case NUM_FLOAT:
1947                        case NUM_LONG:
1948                        case NUM_DOUBLE:
1949                        case AT:
1950                        case LITERAL_record:
1951                        {
1952                                annotationArguments();
1953                                args_AST = (AST)returnAST;
1954                                break;
1955                        }
1956                        case RPAREN:
1957                        {
1958                                break;
1959                        }
1960                        default:
1961                        {
1962                                throw new NoViableAltException(LT(1), getFilename());
1963                        }
1964                        }
1965                        }
1966                        r = LT(1);
1967                        r_AST = astFactory.create(r);
1968                        match(RPAREN);
1969                        break;
1970                }
1971                case FINAL:
1972                case ABSTRACT:
1973                case STRICTFP:
1974                case LITERAL_package:
1975                case SEMI:
1976                case LBRACK:
1977                case LITERAL_void:
1978                case LITERAL_boolean:
1979                case LITERAL_byte:
1980                case LITERAL_char:
1981                case LITERAL_short:
1982                case LITERAL_int:
1983                case LITERAL_float:
1984                case LITERAL_long:
1985                case LITERAL_double:
1986                case IDENT:
1987                case LITERAL_private:
1988                case LITERAL_public:
1989                case LITERAL_protected:
1990                case LITERAL_static:
1991                case LITERAL_transient:
1992                case LITERAL_native:
1993                case LITERAL_synchronized:
1994                case LITERAL_volatile:
1995                case LITERAL_class:
1996                case LITERAL_interface:
1997                case RCURLY:
1998                case COMMA:
1999                case RPAREN:
2000                case LITERAL_this:
2001                case LITERAL_default:
2002                case QUESTION:
2003                case LT:
2004                case ENUM:
2005                case AT:
2006                case ELLIPSIS:
2007                case LITERAL_record:
2008                {
2009                        break;
2010                }
2011                default:
2012                {
2013                        throw new NoViableAltException(LT(1), getFilename());
2014                }
2015                }
2016                }
2017                if ( inputState.guessing==0 ) {
2018                        annotation_AST = (AST)currentAST.root;
2019                        annotation_AST = (AST)astFactory.make( (new ASTArray(6)).add(astFactory.create(ANNOTATION,"ANNOTATION")).add(tmp40_AST).add(i_AST).add(l_AST).add(args_AST).add(r_AST));
2020                        currentAST.root = annotation_AST;
2021                        currentAST.child = annotation_AST!=null &&annotation_AST.getFirstChild()!=null ?
2022                                annotation_AST.getFirstChild() : annotation_AST;
2023                        currentAST.advanceChildToEnd();
2024                }
2025                returnAST = annotation_AST;
2026        }
2027        
2028        public final void annotationArguments() throws RecognitionException, TokenStreamException {
2029                
2030                returnAST = null;
2031                ASTPair currentAST = new ASTPair();
2032                AST annotationArguments_AST = null;
2033                
2034                if ((_tokenSet_14.member(LA(1))) && (_tokenSet_15.member(LA(2)))) {
2035                        annotationMemberValueInitializer();
2036                        astFactory.addASTChild(currentAST, returnAST);
2037                        annotationArguments_AST = (AST)currentAST.root;
2038                }
2039                else if ((LA(1)==IDENT||LA(1)==LITERAL_record) && (LA(2)==ASSIGN)) {
2040                        annotationMemberValuePairs();
2041                        astFactory.addASTChild(currentAST, returnAST);
2042                        annotationArguments_AST = (AST)currentAST.root;
2043                }
2044                else {
2045                        throw new NoViableAltException(LT(1), getFilename());
2046                }
2047                
2048                returnAST = annotationArguments_AST;
2049        }
2050        
2051        public final void annotationMemberValueInitializer() throws RecognitionException, TokenStreamException {
2052                
2053                returnAST = null;
2054                ASTPair currentAST = new ASTPair();
2055                AST annotationMemberValueInitializer_AST = null;
2056                
2057                boolean synPredMatched84 = false;
2058                if (((_tokenSet_16.member(LA(1))) && (_tokenSet_17.member(LA(2))))) {
2059                        int _m84 = mark();
2060                        synPredMatched84 = true;
2061                        inputState.guessing++;
2062                        try {
2063                                {
2064                                annotationExpression();
2065                                }
2066                        }
2067                        catch (RecognitionException pe) {
2068                                synPredMatched84 = false;
2069                        }
2070                        rewind(_m84);
2071inputState.guessing--;
2072                }
2073                if ( synPredMatched84 ) {
2074                        annotationExpression();
2075                        astFactory.addASTChild(currentAST, returnAST);
2076                        annotationMemberValueInitializer_AST = (AST)currentAST.root;
2077                }
2078                else if ((LA(1)==AT) && (LA(2)==IDENT||LA(2)==LITERAL_record)) {
2079                        annotation();
2080                        astFactory.addASTChild(currentAST, returnAST);
2081                        annotationMemberValueInitializer_AST = (AST)currentAST.root;
2082                }
2083                else if ((LA(1)==LCURLY)) {
2084                        annotationMemberArrayInitializer();
2085                        astFactory.addASTChild(currentAST, returnAST);
2086                        annotationMemberValueInitializer_AST = (AST)currentAST.root;
2087                }
2088                else {
2089                        throw new NoViableAltException(LT(1), getFilename());
2090                }
2091                
2092                returnAST = annotationMemberValueInitializer_AST;
2093        }
2094        
2095        public final void annotationMemberValuePairs() throws RecognitionException, TokenStreamException {
2096                
2097                returnAST = null;
2098                ASTPair currentAST = new ASTPair();
2099                AST annotationMemberValuePairs_AST = null;
2100                
2101                annotationMemberValuePair();
2102                astFactory.addASTChild(currentAST, returnAST);
2103                {
2104                _loop80:
2105                do {
2106                        if ((LA(1)==COMMA)) {
2107                                AST tmp41_AST = null;
2108                                tmp41_AST = astFactory.create(LT(1));
2109                                astFactory.addASTChild(currentAST, tmp41_AST);
2110                                match(COMMA);
2111                                annotationMemberValuePair();
2112                                astFactory.addASTChild(currentAST, returnAST);
2113                        }
2114                        else {
2115                                break _loop80;
2116                        }
2117                        
2118                } while (true);
2119                }
2120                annotationMemberValuePairs_AST = (AST)currentAST.root;
2121                returnAST = annotationMemberValuePairs_AST;
2122        }
2123        
2124        public final void annotationMemberValuePair() throws RecognitionException, TokenStreamException {
2125                
2126                returnAST = null;
2127                ASTPair currentAST = new ASTPair();
2128                AST annotationMemberValuePair_AST = null;
2129                AST i_AST = null;
2130                Token  a = null;
2131                AST a_AST = null;
2132                AST v_AST = null;
2133                
2134                id();
2135                i_AST = (AST)returnAST;
2136                a = LT(1);
2137                a_AST = astFactory.create(a);
2138                match(ASSIGN);
2139                annotationMemberValueInitializer();
2140                v_AST = (AST)returnAST;
2141                if ( inputState.guessing==0 ) {
2142                        annotationMemberValuePair_AST = (AST)currentAST.root;
2143                        annotationMemberValuePair_AST =
2144                        (AST)astFactory.make( (new ASTArray(4)).add(astFactory.create(ANNOTATION_MEMBER_VALUE_PAIR,"ANNOTATION_MEMBER_VALUE_PAIR")).add(i_AST).add(a_AST).add(v_AST));
2145                        currentAST.root = annotationMemberValuePair_AST;
2146                        currentAST.child = annotationMemberValuePair_AST!=null &&annotationMemberValuePair_AST.getFirstChild()!=null ?
2147                                annotationMemberValuePair_AST.getFirstChild() : annotationMemberValuePair_AST;
2148                        currentAST.advanceChildToEnd();
2149                }
2150                returnAST = annotationMemberValuePair_AST;
2151        }
2152        
2153        public final void annotationExpression() throws RecognitionException, TokenStreamException {
2154                
2155                returnAST = null;
2156                ASTPair currentAST = new ASTPair();
2157                AST annotationExpression_AST = null;
2158                
2159                conditionalExpression();
2160                astFactory.addASTChild(currentAST, returnAST);
2161                if ( inputState.guessing==0 ) {
2162                        annotationExpression_AST = (AST)currentAST.root;
2163                        annotationExpression_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(EXPR,"EXPR")).add(annotationExpression_AST));
2164                        currentAST.root = annotationExpression_AST;
2165                        currentAST.child = annotationExpression_AST!=null &&annotationExpression_AST.getFirstChild()!=null ?
2166                                annotationExpression_AST.getFirstChild() : annotationExpression_AST;
2167                        currentAST.advanceChildToEnd();
2168                }
2169                annotationExpression_AST = (AST)currentAST.root;
2170                returnAST = annotationExpression_AST;
2171        }
2172        
2173        public final void annotationMemberArrayInitializer() throws RecognitionException, TokenStreamException {
2174                
2175                returnAST = null;
2176                ASTPair currentAST = new ASTPair();
2177                AST annotationMemberArrayInitializer_AST = null;
2178                Token  lc = null;
2179                AST lc_AST = null;
2180                
2181                lc = LT(1);
2182                lc_AST = astFactory.create(lc);
2183                astFactory.makeASTRoot(currentAST, lc_AST);
2184                match(LCURLY);
2185                if ( inputState.guessing==0 ) {
2186                        lc_AST.setType(ANNOTATION_ARRAY_INIT);
2187                }
2188                {
2189                switch ( LA(1)) {
2190                case LITERAL_void:
2191                case LITERAL_boolean:
2192                case LITERAL_byte:
2193                case LITERAL_char:
2194                case LITERAL_short:
2195                case LITERAL_int:
2196                case LITERAL_float:
2197                case LITERAL_long:
2198                case LITERAL_double:
2199                case IDENT:
2200                case LPAREN:
2201                case LITERAL_this:
2202                case LITERAL_super:
2203                case PLUS:
2204                case MINUS:
2205                case INC:
2206                case DEC:
2207                case BNOT:
2208                case LNOT:
2209                case LITERAL_true:
2210                case LITERAL_false:
2211                case LITERAL_null:
2212                case LITERAL_new:
2213                case NUM_INT:
2214                case CHAR_LITERAL:
2215                case STRING_LITERAL:
2216                case NUM_FLOAT:
2217                case NUM_LONG:
2218                case NUM_DOUBLE:
2219                case AT:
2220                case LITERAL_record:
2221                {
2222                        annotationMemberArrayValueInitializer();
2223                        astFactory.addASTChild(currentAST, returnAST);
2224                        {
2225                        _loop88:
2226                        do {
2227                                if ((LA(1)==COMMA) && (_tokenSet_16.member(LA(2)))) {
2228                                        AST tmp42_AST = null;
2229                                        tmp42_AST = astFactory.create(LT(1));
2230                                        astFactory.addASTChild(currentAST, tmp42_AST);
2231                                        match(COMMA);
2232                                        annotationMemberArrayValueInitializer();
2233                                        astFactory.addASTChild(currentAST, returnAST);
2234                                }
2235                                else {
2236                                        break _loop88;
2237                                }
2238                                
2239                        } while (true);
2240                        }
2241                        {
2242                        switch ( LA(1)) {
2243                        case COMMA:
2244                        {
2245                                AST tmp43_AST = null;
2246                                tmp43_AST = astFactory.create(LT(1));
2247                                astFactory.addASTChild(currentAST, tmp43_AST);
2248                                match(COMMA);
2249                                break;
2250                        }
2251                        case RCURLY:
2252                        {
2253                                break;
2254                        }
2255                        default:
2256                        {
2257                                throw new NoViableAltException(LT(1), getFilename());
2258                        }
2259                        }
2260                        }
2261                        break;
2262                }
2263                case RCURLY:
2264                {
2265                        break;
2266                }
2267                default:
2268                {
2269                        throw new NoViableAltException(LT(1), getFilename());
2270                }
2271                }
2272                }
2273                AST tmp44_AST = null;
2274                tmp44_AST = astFactory.create(LT(1));
2275                astFactory.addASTChild(currentAST, tmp44_AST);
2276                match(RCURLY);
2277                annotationMemberArrayInitializer_AST = (AST)currentAST.root;
2278                returnAST = annotationMemberArrayInitializer_AST;
2279        }
2280        
2281        public final void annotationMemberArrayValueInitializer() throws RecognitionException, TokenStreamException {
2282                
2283                returnAST = null;
2284                ASTPair currentAST = new ASTPair();
2285                AST annotationMemberArrayValueInitializer_AST = null;
2286                
2287                boolean synPredMatched92 = false;
2288                if (((_tokenSet_16.member(LA(1))) && (_tokenSet_18.member(LA(2))))) {
2289                        int _m92 = mark();
2290                        synPredMatched92 = true;
2291                        inputState.guessing++;
2292                        try {
2293                                {
2294                                annotationExpression();
2295                                }
2296                        }
2297                        catch (RecognitionException pe) {
2298                                synPredMatched92 = false;
2299                        }
2300                        rewind(_m92);
2301inputState.guessing--;
2302                }
2303                if ( synPredMatched92 ) {
2304                        annotationExpression();
2305                        astFactory.addASTChild(currentAST, returnAST);
2306                        annotationMemberArrayValueInitializer_AST = (AST)currentAST.root;
2307                }
2308                else if ((LA(1)==AT) && (LA(2)==IDENT||LA(2)==LITERAL_record)) {
2309                        annotation();
2310                        astFactory.addASTChild(currentAST, returnAST);
2311                        annotationMemberArrayValueInitializer_AST = (AST)currentAST.root;
2312                }
2313                else {
2314                        throw new NoViableAltException(LT(1), getFilename());
2315                }
2316                
2317                returnAST = annotationMemberArrayValueInitializer_AST;
2318        }
2319        
2320        public final void conditionalExpression() throws RecognitionException, TokenStreamException {
2321                
2322                returnAST = null;
2323                ASTPair currentAST = new ASTPair();
2324                AST conditionalExpression_AST = null;
2325                
2326                logicalOrExpression();
2327                astFactory.addASTChild(currentAST, returnAST);
2328                {
2329                switch ( LA(1)) {
2330                case QUESTION:
2331                {
2332                        AST tmp45_AST = null;
2333                        tmp45_AST = astFactory.create(LT(1));
2334                        astFactory.makeASTRoot(currentAST, tmp45_AST);
2335                        match(QUESTION);
2336                        {
2337                        boolean synPredMatched316 = false;
2338                        if (((_tokenSet_19.member(LA(1))) && (_tokenSet_20.member(LA(2))))) {
2339                                int _m316 = mark();
2340                                synPredMatched316 = true;
2341                                inputState.guessing++;
2342                                try {
2343                                        {
2344                                        lambdaExpression();
2345                                        }
2346                                }
2347                                catch (RecognitionException pe) {
2348                                        synPredMatched316 = false;
2349                                }
2350                                rewind(_m316);
2351inputState.guessing--;
2352                        }
2353                        if ( synPredMatched316 ) {
2354                                lambdaExpression();
2355                                astFactory.addASTChild(currentAST, returnAST);
2356                        }
2357                        else if ((_tokenSet_16.member(LA(1))) && (_tokenSet_21.member(LA(2)))) {
2358                                assignmentExpression();
2359                                astFactory.addASTChild(currentAST, returnAST);
2360                        }
2361                        else {
2362                                throw new NoViableAltException(LT(1), getFilename());
2363                        }
2364                        
2365                        }
2366                        AST tmp46_AST = null;
2367                        tmp46_AST = astFactory.create(LT(1));
2368                        astFactory.addASTChild(currentAST, tmp46_AST);
2369                        match(COLON);
2370                        {
2371                        boolean synPredMatched319 = false;
2372                        if (((_tokenSet_19.member(LA(1))) && (_tokenSet_20.member(LA(2))))) {
2373                                int _m319 = mark();
2374                                synPredMatched319 = true;
2375                                inputState.guessing++;
2376                                try {
2377                                        {
2378                                        lambdaExpression();
2379                                        }
2380                                }
2381                                catch (RecognitionException pe) {
2382                                        synPredMatched319 = false;
2383                                }
2384                                rewind(_m319);
2385inputState.guessing--;
2386                        }
2387                        if ( synPredMatched319 ) {
2388                                lambdaExpression();
2389                                astFactory.addASTChild(currentAST, returnAST);
2390                        }
2391                        else if ((_tokenSet_16.member(LA(1))) && (_tokenSet_22.member(LA(2)))) {
2392                                conditionalExpression();
2393                                astFactory.addASTChild(currentAST, returnAST);
2394                        }
2395                        else {
2396                                throw new NoViableAltException(LT(1), getFilename());
2397                        }
2398                        
2399                        }
2400                        break;
2401                }
2402                case FINAL:
2403                case ABSTRACT:
2404                case STRICTFP:
2405                case SEMI:
2406                case RBRACK:
2407                case LITERAL_void:
2408                case LITERAL_boolean:
2409                case LITERAL_byte:
2410                case LITERAL_char:
2411                case LITERAL_short:
2412                case LITERAL_int:
2413                case LITERAL_float:
2414                case LITERAL_long:
2415                case LITERAL_double:
2416                case IDENT:
2417                case STAR:
2418                case LITERAL_private:
2419                case LITERAL_public:
2420                case LITERAL_protected:
2421                case LITERAL_static:
2422                case LITERAL_transient:
2423                case LITERAL_native:
2424                case LITERAL_synchronized:
2425                case LITERAL_volatile:
2426                case LITERAL_class:
2427                case LITERAL_interface:
2428                case LCURLY:
2429                case RCURLY:
2430                case COMMA:
2431                case LPAREN:
2432                case RPAREN:
2433                case LITERAL_this:
2434                case LITERAL_super:
2435                case ASSIGN:
2436                case COLON:
2437                case LITERAL_if:
2438                case LITERAL_while:
2439                case LITERAL_do:
2440                case LITERAL_break:
2441                case LITERAL_continue:
2442                case LITERAL_return:
2443                case LITERAL_switch:
2444                case LITERAL_throw:
2445                case LITERAL_for:
2446                case LITERAL_else:
2447                case LITERAL_case:
2448                case LITERAL_default:
2449                case LITERAL_try:
2450                case PLUS_ASSIGN:
2451                case MINUS_ASSIGN:
2452                case STAR_ASSIGN:
2453                case DIV_ASSIGN:
2454                case MOD_ASSIGN:
2455                case SR_ASSIGN:
2456                case BSR_ASSIGN:
2457                case SL_ASSIGN:
2458                case BAND_ASSIGN:
2459                case BXOR_ASSIGN:
2460                case BOR_ASSIGN:
2461                case LT:
2462                case GT:
2463                case LE:
2464                case GE:
2465                case LITERAL_instanceof:
2466                case SL:
2467                case SR:
2468                case BSR:
2469                case PLUS:
2470                case MINUS:
2471                case DIV:
2472                case MOD:
2473                case INC:
2474                case DEC:
2475                case BNOT:
2476                case LNOT:
2477                case LITERAL_true:
2478                case LITERAL_false:
2479                case LITERAL_null:
2480                case LITERAL_new:
2481                case NUM_INT:
2482                case CHAR_LITERAL:
2483                case STRING_LITERAL:
2484                case NUM_FLOAT:
2485                case NUM_LONG:
2486                case NUM_DOUBLE:
2487                case ASSERT:
2488                case ENUM:
2489                case AT:
2490                case LITERAL_record:
2491                {
2492                        break;
2493                }
2494                default:
2495                {
2496                        throw new NoViableAltException(LT(1), getFilename());
2497                }
2498                }
2499                }
2500                conditionalExpression_AST = (AST)currentAST.root;
2501                returnAST = conditionalExpression_AST;
2502        }
2503        
2504        public final void typeParameters() throws RecognitionException, TokenStreamException {
2505                
2506                returnAST = null;
2507                ASTPair currentAST = new ASTPair();
2508                AST typeParameters_AST = null;
2509                Token  lt = null;
2510                AST lt_AST = null;
2511                int currentLtLevel = 0;
2512                
2513                if ( inputState.guessing==0 ) {
2514                        currentLtLevel = ltCounter;
2515                }
2516                lt = LT(1);
2517                lt_AST = astFactory.create(lt);
2518                astFactory.addASTChild(currentAST, lt_AST);
2519                match(LT);
2520                if ( inputState.guessing==0 ) {
2521                        lt_AST.setType(GENERIC_START); ltCounter++;
2522                }
2523                typeParameter();
2524                astFactory.addASTChild(currentAST, returnAST);
2525                {
2526                _loop124:
2527                do {
2528                        if ((LA(1)==COMMA)) {
2529                                AST tmp47_AST = null;
2530                                tmp47_AST = astFactory.create(LT(1));
2531                                astFactory.addASTChild(currentAST, tmp47_AST);
2532                                match(COMMA);
2533                                typeParameter();
2534                                astFactory.addASTChild(currentAST, returnAST);
2535                        }
2536                        else {
2537                                break _loop124;
2538                        }
2539                        
2540                } while (true);
2541                }
2542                {
2543                switch ( LA(1)) {
2544                case GT:
2545                case SR:
2546                case BSR:
2547                {
2548                        typeArgumentsOrParametersEnd();
2549                        astFactory.addASTChild(currentAST, returnAST);
2550                        break;
2551                }
2552                case LITERAL_void:
2553                case LITERAL_boolean:
2554                case LITERAL_byte:
2555                case LITERAL_char:
2556                case LITERAL_short:
2557                case LITERAL_int:
2558                case LITERAL_float:
2559                case LITERAL_long:
2560                case LITERAL_double:
2561                case IDENT:
2562                case LITERAL_extends:
2563                case LCURLY:
2564                case LITERAL_implements:
2565                case LPAREN:
2566                case AT:
2567                case LITERAL_record:
2568                {
2569                        break;
2570                }
2571                default:
2572                {
2573                        throw new NoViableAltException(LT(1), getFilename());
2574                }
2575                }
2576                }
2577                if ( inputState.guessing==0 ) {
2578                        
2579                        if (isThereASingleGtToEmit()) {
2580                        astFactory.addASTChild(currentAST, emitSingleGt());
2581                        }
2582                        
2583                }
2584                if (!(areLtsAndGtsBalanced(currentLtLevel)))
2585                  throw new SemanticException("areLtsAndGtsBalanced(currentLtLevel)");
2586                if ( inputState.guessing==0 ) {
2587                        typeParameters_AST = (AST)currentAST.root;
2588                        typeParameters_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE_PARAMETERS,"TYPE_PARAMETERS")).add(typeParameters_AST));
2589                        currentAST.root = typeParameters_AST;
2590                        currentAST.child = typeParameters_AST!=null &&typeParameters_AST.getFirstChild()!=null ?
2591                                typeParameters_AST.getFirstChild() : typeParameters_AST;
2592                        currentAST.advanceChildToEnd();
2593                }
2594                typeParameters_AST = (AST)currentAST.root;
2595                returnAST = typeParameters_AST;
2596        }
2597        
2598        public final void recordComponentsList() throws RecognitionException, TokenStreamException {
2599                
2600                returnAST = null;
2601                ASTPair currentAST = new ASTPair();
2602                AST recordComponentsList_AST = null;
2603                
2604                AST tmp48_AST = null;
2605                tmp48_AST = astFactory.create(LT(1));
2606                match(LPAREN);
2607                recordComponents();
2608                AST tmp49_AST = null;
2609                tmp49_AST = astFactory.create(LT(1));
2610                match(RPAREN);
2611                returnAST = recordComponentsList_AST;
2612        }
2613        
2614        public final void implementsClause() throws RecognitionException, TokenStreamException {
2615                
2616                returnAST = null;
2617                ASTPair currentAST = new ASTPair();
2618                AST implementsClause_AST = null;
2619                Token  i = null;
2620                AST i_AST = null;
2621                
2622                {
2623                switch ( LA(1)) {
2624                case LITERAL_implements:
2625                {
2626                        i = LT(1);
2627                        i_AST = astFactory.create(i);
2628                        astFactory.makeASTRoot(currentAST, i_AST);
2629                        match(LITERAL_implements);
2630                        if ( inputState.guessing==0 ) {
2631                                i_AST.setType(IMPLEMENTS_CLAUSE);
2632                        }
2633                        classOrInterfaceType(false);
2634                        astFactory.addASTChild(currentAST, returnAST);
2635                        {
2636                        _loop171:
2637                        do {
2638                                if ((LA(1)==COMMA)) {
2639                                        AST tmp50_AST = null;
2640                                        tmp50_AST = astFactory.create(LT(1));
2641                                        astFactory.addASTChild(currentAST, tmp50_AST);
2642                                        match(COMMA);
2643                                        classOrInterfaceType(false);
2644                                        astFactory.addASTChild(currentAST, returnAST);
2645                                }
2646                                else {
2647                                        break _loop171;
2648                                }
2649                                
2650                        } while (true);
2651                        }
2652                        break;
2653                }
2654                case LCURLY:
2655                {
2656                        break;
2657                }
2658                default:
2659                {
2660                        throw new NoViableAltException(LT(1), getFilename());
2661                }
2662                }
2663                }
2664                implementsClause_AST = (AST)currentAST.root;
2665                returnAST = implementsClause_AST;
2666        }
2667        
2668        public final void recordBodyDeclaration() throws RecognitionException, TokenStreamException {
2669                
2670                returnAST = null;
2671                ASTPair currentAST = new ASTPair();
2672                AST recordBodyDeclaration_AST = null;
2673                
2674                AST tmp51_AST = null;
2675                tmp51_AST = astFactory.create(LT(1));
2676                match(LCURLY);
2677                {
2678                _loop112:
2679                do {
2680                        boolean synPredMatched111 = false;
2681                        if (((_tokenSet_23.member(LA(1))) && (_tokenSet_24.member(LA(2))))) {
2682                                int _m111 = mark();
2683                                synPredMatched111 = true;
2684                                inputState.guessing++;
2685                                try {
2686                                        {
2687                                        compactConstructorDeclaration();
2688                                        }
2689                                }
2690                                catch (RecognitionException pe) {
2691                                        synPredMatched111 = false;
2692                                }
2693                                rewind(_m111);
2694inputState.guessing--;
2695                        }
2696                        if ( synPredMatched111 ) {
2697                                compactConstructorDeclaration();
2698                        }
2699                        else if ((_tokenSet_25.member(LA(1))) && (_tokenSet_26.member(LA(2)))) {
2700                                field();
2701                        }
2702                        else if ((LA(1)==SEMI)) {
2703                                AST tmp52_AST = null;
2704                                tmp52_AST = astFactory.create(LT(1));
2705                                match(SEMI);
2706                        }
2707                        else {
2708                                break _loop112;
2709                        }
2710                        
2711                } while (true);
2712                }
2713                AST tmp53_AST = null;
2714                tmp53_AST = astFactory.create(LT(1));
2715                match(RCURLY);
2716                returnAST = recordBodyDeclaration_AST;
2717        }
2718        
2719        public final void recordComponents() throws RecognitionException, TokenStreamException {
2720                
2721                returnAST = null;
2722                ASTPair currentAST = new ASTPair();
2723                AST recordComponents_AST = null;
2724                
2725                {
2726                boolean synPredMatched100 = false;
2727                if (((_tokenSet_12.member(LA(1))) && (_tokenSet_27.member(LA(2))))) {
2728                        int _m100 = mark();
2729                        synPredMatched100 = true;
2730                        inputState.guessing++;
2731                        try {
2732                                {
2733                                recordComponent();
2734                                }
2735                        }
2736                        catch (RecognitionException pe) {
2737                                synPredMatched100 = false;
2738                        }
2739                        rewind(_m100);
2740inputState.guessing--;
2741                }
2742                if ( synPredMatched100 ) {
2743                        recordComponent();
2744                        {
2745                        _loop104:
2746                        do {
2747                                boolean synPredMatched103 = false;
2748                                if (((LA(1)==COMMA) && (_tokenSet_12.member(LA(2))))) {
2749                                        int _m103 = mark();
2750                                        synPredMatched103 = true;
2751                                        inputState.guessing++;
2752                                        try {
2753                                                {
2754                                                match(COMMA);
2755                                                recordComponent();
2756                                                }
2757                                        }
2758                                        catch (RecognitionException pe) {
2759                                                synPredMatched103 = false;
2760                                        }
2761                                        rewind(_m103);
2762inputState.guessing--;
2763                                }
2764                                if ( synPredMatched103 ) {
2765                                        AST tmp54_AST = null;
2766                                        tmp54_AST = astFactory.create(LT(1));
2767                                        match(COMMA);
2768                                        recordComponent();
2769                                }
2770                                else {
2771                                        break _loop104;
2772                                }
2773                                
2774                        } while (true);
2775                        }
2776                        {
2777                        switch ( LA(1)) {
2778                        case COMMA:
2779                        {
2780                                AST tmp55_AST = null;
2781                                tmp55_AST = astFactory.create(LT(1));
2782                                match(COMMA);
2783                                recordComponentVariableLength();
2784                                break;
2785                        }
2786                        case RPAREN:
2787                        {
2788                                break;
2789                        }
2790                        default:
2791                        {
2792                                throw new NoViableAltException(LT(1), getFilename());
2793                        }
2794                        }
2795                        }
2796                }
2797                else if ((_tokenSet_28.member(LA(1))) && (_tokenSet_29.member(LA(2)))) {
2798                        recordComponentVariableLength();
2799                }
2800                else if ((LA(1)==RPAREN)) {
2801                }
2802                else {
2803                        throw new NoViableAltException(LT(1), getFilename());
2804                }
2805                
2806                }
2807                returnAST = recordComponents_AST;
2808        }
2809        
2810        public final void recordComponent() throws RecognitionException, TokenStreamException {
2811                
2812                returnAST = null;
2813                ASTPair currentAST = new ASTPair();
2814                AST recordComponent_AST = null;
2815                
2816                annotations();
2817                typeSpec(false);
2818                id();
2819                returnAST = recordComponent_AST;
2820        }
2821        
2822        public final void recordComponentVariableLength() throws RecognitionException, TokenStreamException {
2823                
2824                returnAST = null;
2825                ASTPair currentAST = new ASTPair();
2826                AST recordComponentVariableLength_AST = null;
2827                AST t_AST = null;
2828                
2829                parameterModifier();
2830                variableLengthParameterTypeSpec();
2831                t_AST = (AST)returnAST;
2832                AST tmp56_AST = null;
2833                tmp56_AST = astFactory.create(LT(1));
2834                match(ELLIPSIS);
2835                id();
2836                declaratorBrackets(t_AST);
2837                returnAST = recordComponentVariableLength_AST;
2838        }
2839        
2840        public final void parameterModifier() throws RecognitionException, TokenStreamException {
2841                
2842                returnAST = null;
2843                ASTPair currentAST = new ASTPair();
2844                AST parameterModifier_AST = null;
2845                Token  f = null;
2846                AST f_AST = null;
2847                
2848                {
2849                _loop224:
2850                do {
2851                        if ((LA(1)==AT) && (LA(2)==IDENT||LA(2)==LITERAL_record)) {
2852                                annotation();
2853                                astFactory.addASTChild(currentAST, returnAST);
2854                        }
2855                        else {
2856                                break _loop224;
2857                        }
2858                        
2859                } while (true);
2860                }
2861                {
2862                switch ( LA(1)) {
2863                case FINAL:
2864                {
2865                        f = LT(1);
2866                        f_AST = astFactory.create(f);
2867                        astFactory.addASTChild(currentAST, f_AST);
2868                        match(FINAL);
2869                        break;
2870                }
2871                case LITERAL_void:
2872                case LITERAL_boolean:
2873                case LITERAL_byte:
2874                case LITERAL_char:
2875                case LITERAL_short:
2876                case LITERAL_int:
2877                case LITERAL_float:
2878                case LITERAL_long:
2879                case LITERAL_double:
2880                case IDENT:
2881                case LITERAL_this:
2882                case AT:
2883                case LITERAL_record:
2884                {
2885                        break;
2886                }
2887                default:
2888                {
2889                        throw new NoViableAltException(LT(1), getFilename());
2890                }
2891                }
2892                }
2893                {
2894                _loop227:
2895                do {
2896                        if ((LA(1)==AT) && (LA(2)==IDENT||LA(2)==LITERAL_record)) {
2897                                annotation();
2898                                astFactory.addASTChild(currentAST, returnAST);
2899                        }
2900                        else {
2901                                break _loop227;
2902                        }
2903                        
2904                } while (true);
2905                }
2906                if ( inputState.guessing==0 ) {
2907                        parameterModifier_AST = (AST)currentAST.root;
2908                        parameterModifier_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(MODIFIERS,"MODIFIERS")).add(parameterModifier_AST));
2909                        currentAST.root = parameterModifier_AST;
2910                        currentAST.child = parameterModifier_AST!=null &&parameterModifier_AST.getFirstChild()!=null ?
2911                                parameterModifier_AST.getFirstChild() : parameterModifier_AST;
2912                        currentAST.advanceChildToEnd();
2913                }
2914                parameterModifier_AST = (AST)currentAST.root;
2915                returnAST = parameterModifier_AST;
2916        }
2917        
2918        public final void declaratorBrackets(
2919                AST typ
2920        ) throws RecognitionException, TokenStreamException {
2921                
2922                returnAST = null;
2923                ASTPair currentAST = new ASTPair();
2924                AST declaratorBrackets_AST = null;
2925                AST an_AST = null;
2926                Token  lb = null;
2927                AST lb_AST = null;
2928                Token  rb = null;
2929                AST rb_AST = null;
2930                AST db_AST = null;
2931                
2932                if ((LA(1)==LBRACK||LA(1)==AT) && (_tokenSet_5.member(LA(2)))) {
2933                        {
2934                        if (((LA(1)==LBRACK||LA(1)==AT) && (_tokenSet_5.member(LA(2))))&&(LA(1) == AT)) {
2935                                annotations();
2936                                an_AST = (AST)returnAST;
2937                        }
2938                        else if ((LA(1)==LBRACK) && (LA(2)==RBRACK)) {
2939                        }
2940                        else {
2941                                throw new NoViableAltException(LT(1), getFilename());
2942                        }
2943                        
2944                        }
2945                        lb = LT(1);
2946                        lb_AST = astFactory.create(lb);
2947                        match(LBRACK);
2948                        if ( inputState.guessing==0 ) {
2949                                lb_AST.setType(ARRAY_DECLARATOR);
2950                        }
2951                        rb = LT(1);
2952                        rb_AST = astFactory.create(rb);
2953                        match(RBRACK);
2954                        declaratorBrackets((AST)astFactory.make( (new ASTArray(4)).add(lb_AST).add(typ).add(an_AST).add(rb_AST)));
2955                        db_AST = (AST)returnAST;
2956                        if ( inputState.guessing==0 ) {
2957                                declaratorBrackets_AST = (AST)currentAST.root;
2958                                declaratorBrackets_AST = db_AST;
2959                                currentAST.root = declaratorBrackets_AST;
2960                                currentAST.child = declaratorBrackets_AST!=null &&declaratorBrackets_AST.getFirstChild()!=null ?
2961                                        declaratorBrackets_AST.getFirstChild() : declaratorBrackets_AST;
2962                                currentAST.advanceChildToEnd();
2963                        }
2964                }
2965                else if ((_tokenSet_30.member(LA(1))) && (_tokenSet_31.member(LA(2)))) {
2966                        if ( inputState.guessing==0 ) {
2967                                declaratorBrackets_AST = (AST)currentAST.root;
2968                                declaratorBrackets_AST = typ;
2969                                currentAST.root = declaratorBrackets_AST;
2970                                currentAST.child = declaratorBrackets_AST!=null &&declaratorBrackets_AST.getFirstChild()!=null ?
2971                                        declaratorBrackets_AST.getFirstChild() : declaratorBrackets_AST;
2972                                currentAST.advanceChildToEnd();
2973                        }
2974                }
2975                else {
2976                        throw new NoViableAltException(LT(1), getFilename());
2977                }
2978                
2979                returnAST = declaratorBrackets_AST;
2980        }
2981        
2982        public final void compactConstructorDeclaration() throws RecognitionException, TokenStreamException {
2983                
2984                returnAST = null;
2985                ASTPair currentAST = new ASTPair();
2986                AST compactConstructorDeclaration_AST = null;
2987                
2988                annotations();
2989                modifiers();
2990                id();
2991                constructorBody();
2992                returnAST = compactConstructorDeclaration_AST;
2993        }
2994        
2995        public final void field() throws RecognitionException, TokenStreamException {
2996                
2997                returnAST = null;
2998                ASTPair currentAST = new ASTPair();
2999                AST field_AST = null;
3000                AST mods_AST = null;
3001                AST td_AST = null;
3002                AST tp_AST = null;
3003                AST h_AST = null;
3004                AST s_AST = null;
3005                AST t_AST = null;
3006                AST id_AST = null;
3007                AST param_AST = null;
3008                AST rt_AST = null;
3009                AST tc_AST = null;
3010                AST s2_AST = null;
3011                Token  s5 = null;
3012                AST s5_AST = null;
3013                AST v_AST = null;
3014                Token  s6 = null;
3015                AST s6_AST = null;
3016                Token  si = null;
3017                AST si_AST = null;
3018                AST s3_AST = null;
3019                AST s4_AST = null;
3020                
3021                if ((_tokenSet_32.member(LA(1))) && (_tokenSet_33.member(LA(2)))) {
3022                        modifiers();
3023                        mods_AST = (AST)returnAST;
3024                        {
3025                        if ((_tokenSet_34.member(LA(1))) && (_tokenSet_35.member(LA(2)))) {
3026                                typeDefinitionInternal(mods_AST);
3027                                td_AST = (AST)returnAST;
3028                                if ( inputState.guessing==0 ) {
3029                                        field_AST = (AST)currentAST.root;
3030                                        field_AST = td_AST;
3031                                        currentAST.root = field_AST;
3032                                        currentAST.child = field_AST!=null &&field_AST.getFirstChild()!=null ?
3033                                                field_AST.getFirstChild() : field_AST;
3034                                        currentAST.advanceChildToEnd();
3035                                }
3036                        }
3037                        else if ((_tokenSet_36.member(LA(1))) && (_tokenSet_13.member(LA(2)))) {
3038                                {
3039                                switch ( LA(1)) {
3040                                case LT:
3041                                {
3042                                        typeParameters();
3043                                        tp_AST = (AST)returnAST;
3044                                        break;
3045                                }
3046                                case LITERAL_void:
3047                                case LITERAL_boolean:
3048                                case LITERAL_byte:
3049                                case LITERAL_char:
3050                                case LITERAL_short:
3051                                case LITERAL_int:
3052                                case LITERAL_float:
3053                                case LITERAL_long:
3054                                case LITERAL_double:
3055                                case IDENT:
3056                                case AT:
3057                                case LITERAL_record:
3058                                {
3059                                        break;
3060                                }
3061                                default:
3062                                {
3063                                        throw new NoViableAltException(LT(1), getFilename());
3064                                }
3065                                }
3066                                }
3067                                {
3068                                if ((LA(1)==IDENT||LA(1)==LITERAL_record) && (LA(2)==LPAREN)) {
3069                                        ctorHead();
3070                                        h_AST = (AST)returnAST;
3071                                        constructorBody();
3072                                        s_AST = (AST)returnAST;
3073                                        if ( inputState.guessing==0 ) {
3074                                                field_AST = (AST)currentAST.root;
3075                                                field_AST = (AST)astFactory.make( (new ASTArray(5)).add(astFactory.create(CTOR_DEF,"CTOR_DEF")).add(mods_AST).add(tp_AST).add(h_AST).add(s_AST));
3076                                                currentAST.root = field_AST;
3077                                                currentAST.child = field_AST!=null &&field_AST.getFirstChild()!=null ?
3078                                                        field_AST.getFirstChild() : field_AST;
3079                                                currentAST.advanceChildToEnd();
3080                                        }
3081                                }
3082                                else if ((_tokenSet_12.member(LA(1))) && (_tokenSet_27.member(LA(2)))) {
3083                                        typeSpec(false);
3084                                        t_AST = (AST)returnAST;
3085                                        {
3086                                        if ((LA(1)==IDENT||LA(1)==LITERAL_record) && (LA(2)==LPAREN)) {
3087                                                id();
3088                                                id_AST = (AST)returnAST;
3089                                                AST tmp57_AST = null;
3090                                                tmp57_AST = astFactory.create(LT(1));
3091                                                match(LPAREN);
3092                                                parameterDeclarationList();
3093                                                param_AST = (AST)returnAST;
3094                                                AST tmp58_AST = null;
3095                                                tmp58_AST = astFactory.create(LT(1));
3096                                                match(RPAREN);
3097                                                declaratorBrackets(t_AST);
3098                                                rt_AST = (AST)returnAST;
3099                                                {
3100                                                switch ( LA(1)) {
3101                                                case LITERAL_throws:
3102                                                {
3103                                                        throwsClause();
3104                                                        tc_AST = (AST)returnAST;
3105                                                        break;
3106                                                }
3107                                                case SEMI:
3108                                                case LCURLY:
3109                                                {
3110                                                        break;
3111                                                }
3112                                                default:
3113                                                {
3114                                                        throw new NoViableAltException(LT(1), getFilename());
3115                                                }
3116                                                }
3117                                                }
3118                                                {
3119                                                switch ( LA(1)) {
3120                                                case LCURLY:
3121                                                {
3122                                                        compoundStatement();
3123                                                        s2_AST = (AST)returnAST;
3124                                                        break;
3125                                                }
3126                                                case SEMI:
3127                                                {
3128                                                        s5 = LT(1);
3129                                                        s5_AST = astFactory.create(s5);
3130                                                        match(SEMI);
3131                                                        break;
3132                                                }
3133                                                default:
3134                                                {
3135                                                        throw new NoViableAltException(LT(1), getFilename());
3136                                                }
3137                                                }
3138                                                }
3139                                                if ( inputState.guessing==0 ) {
3140                                                        field_AST = (AST)currentAST.root;
3141                                                        field_AST = (AST)astFactory.make( (new ASTArray(11)).add(astFactory.create(METHOD_DEF,"METHOD_DEF")).add(mods_AST).add(tp_AST).add((AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE,"TYPE")).add(rt_AST))).add(id_AST).add(tmp57_AST).add(param_AST).add(tmp58_AST).add(tc_AST).add(s2_AST).add(s5_AST));
3142                                                        currentAST.root = field_AST;
3143                                                        currentAST.child = field_AST!=null &&field_AST.getFirstChild()!=null ?
3144                                                                field_AST.getFirstChild() : field_AST;
3145                                                        currentAST.advanceChildToEnd();
3146                                                }
3147                                        }
3148                                        else if ((LA(1)==IDENT||LA(1)==LITERAL_record) && (_tokenSet_37.member(LA(2)))) {
3149                                                variableDefinitions(mods_AST,t_AST);
3150                                                v_AST = (AST)returnAST;
3151                                                {
3152                                                if ((LA(1)==SEMI) && (_tokenSet_38.member(LA(2)))) {
3153                                                        s6 = LT(1);
3154                                                        s6_AST = astFactory.create(s6);
3155                                                        match(SEMI);
3156                                                }
3157                                                else if ((_tokenSet_38.member(LA(1))) && (_tokenSet_39.member(LA(2)))) {
3158                                                }
3159                                                else {
3160                                                        throw new NoViableAltException(LT(1), getFilename());
3161                                                }
3162                                                
3163                                                }
3164                                                if ( inputState.guessing==0 ) {
3165                                                        field_AST = (AST)currentAST.root;
3166                                                        
3167                                                        field_AST = v_AST;
3168                                                        v_AST.addChild(s6_AST);
3169                                                        
3170                                                        currentAST.root = field_AST;
3171                                                        currentAST.child = field_AST!=null &&field_AST.getFirstChild()!=null ?
3172                                                                field_AST.getFirstChild() : field_AST;
3173                                                        currentAST.advanceChildToEnd();
3174                                                }
3175                                        }
3176                                        else {
3177                                                throw new NoViableAltException(LT(1), getFilename());
3178                                        }
3179                                        
3180                                        }
3181                                }
3182                                else {
3183                                        throw new NoViableAltException(LT(1), getFilename());
3184                                }
3185                                
3186                                }
3187                        }
3188                        else {
3189                                throw new NoViableAltException(LT(1), getFilename());
3190                        }
3191                        
3192                        }
3193                }
3194                else if ((LA(1)==LITERAL_static) && (LA(2)==LCURLY)) {
3195                        si = LT(1);
3196                        si_AST = astFactory.create(si);
3197                        match(LITERAL_static);
3198                        compoundStatement();
3199                        s3_AST = (AST)returnAST;
3200                        if ( inputState.guessing==0 ) {
3201                                field_AST = (AST)currentAST.root;
3202                                si_AST.setType(STATIC_INIT);
3203                                si_AST.setText("STATIC_INIT");
3204                                field_AST = (AST)astFactory.make( (new ASTArray(2)).add(si_AST).add(s3_AST));
3205                                currentAST.root = field_AST;
3206                                currentAST.child = field_AST!=null &&field_AST.getFirstChild()!=null ?
3207                                        field_AST.getFirstChild() : field_AST;
3208                                currentAST.advanceChildToEnd();
3209                        }
3210                }
3211                else if ((LA(1)==LCURLY)) {
3212                        compoundStatement();
3213                        s4_AST = (AST)returnAST;
3214                        if ( inputState.guessing==0 ) {
3215                                field_AST = (AST)currentAST.root;
3216                                field_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(INSTANCE_INIT,"INSTANCE_INIT")).add(s4_AST));
3217                                currentAST.root = field_AST;
3218                                currentAST.child = field_AST!=null &&field_AST.getFirstChild()!=null ?
3219                                        field_AST.getFirstChild() : field_AST;
3220                                currentAST.advanceChildToEnd();
3221                        }
3222                }
3223                else {
3224                        throw new NoViableAltException(LT(1), getFilename());
3225                }
3226                
3227                returnAST = field_AST;
3228        }
3229        
3230        public final void constructorBody() throws RecognitionException, TokenStreamException {
3231                
3232                returnAST = null;
3233                ASTPair currentAST = new ASTPair();
3234                AST constructorBody_AST = null;
3235                Token  lc = null;
3236                AST lc_AST = null;
3237                
3238                lc = LT(1);
3239                lc_AST = astFactory.create(lc);
3240                astFactory.makeASTRoot(currentAST, lc_AST);
3241                match(LCURLY);
3242                if ( inputState.guessing==0 ) {
3243                        lc_AST.setType(SLIST);
3244                }
3245                {
3246                boolean synPredMatched183 = false;
3247                if (((_tokenSet_40.member(LA(1))) && (_tokenSet_41.member(LA(2))))) {
3248                        int _m183 = mark();
3249                        synPredMatched183 = true;
3250                        inputState.guessing++;
3251                        try {
3252                                {
3253                                explicitConstructorInvocation();
3254                                }
3255                        }
3256                        catch (RecognitionException pe) {
3257                                synPredMatched183 = false;
3258                        }
3259                        rewind(_m183);
3260inputState.guessing--;
3261                }
3262                if ( synPredMatched183 ) {
3263                        explicitConstructorInvocation();
3264                        astFactory.addASTChild(currentAST, returnAST);
3265                }
3266                else if ((_tokenSet_42.member(LA(1))) && (_tokenSet_43.member(LA(2)))) {
3267                }
3268                else {
3269                        throw new NoViableAltException(LT(1), getFilename());
3270                }
3271                
3272                }
3273                {
3274                _loop185:
3275                do {
3276                        if ((_tokenSet_44.member(LA(1)))) {
3277                                statement();
3278                                astFactory.addASTChild(currentAST, returnAST);
3279                        }
3280                        else {
3281                                break _loop185;
3282                        }
3283                        
3284                } while (true);
3285                }
3286                AST tmp59_AST = null;
3287                tmp59_AST = astFactory.create(LT(1));
3288                astFactory.addASTChild(currentAST, tmp59_AST);
3289                match(RCURLY);
3290                constructorBody_AST = (AST)currentAST.root;
3291                returnAST = constructorBody_AST;
3292        }
3293        
3294        public final void superClassClause() throws RecognitionException, TokenStreamException {
3295                
3296                returnAST = null;
3297                ASTPair currentAST = new ASTPair();
3298                AST superClassClause_AST = null;
3299                Token  e = null;
3300                AST e_AST = null;
3301                AST c_AST = null;
3302                
3303                {
3304                switch ( LA(1)) {
3305                case LITERAL_extends:
3306                {
3307                        e = LT(1);
3308                        e_AST = astFactory.create(e);
3309                        astFactory.makeASTRoot(currentAST, e_AST);
3310                        match(LITERAL_extends);
3311                        if ( inputState.guessing==0 ) {
3312                                e_AST.setType(EXTENDS_CLAUSE);
3313                        }
3314                        classOrInterfaceType(false);
3315                        c_AST = (AST)returnAST;
3316                        astFactory.addASTChild(currentAST, returnAST);
3317                        break;
3318                }
3319                case LCURLY:
3320                case LITERAL_implements:
3321                {
3322                        break;
3323                }
3324                default:
3325                {
3326                        throw new NoViableAltException(LT(1), getFilename());
3327                }
3328                }
3329                }
3330                superClassClause_AST = (AST)currentAST.root;
3331                returnAST = superClassClause_AST;
3332        }
3333        
3334        public final void classBlock() throws RecognitionException, TokenStreamException {
3335                
3336                returnAST = null;
3337                ASTPair currentAST = new ASTPair();
3338                AST classBlock_AST = null;
3339                
3340                AST tmp60_AST = null;
3341                tmp60_AST = astFactory.create(LT(1));
3342                astFactory.addASTChild(currentAST, tmp60_AST);
3343                match(LCURLY);
3344                {
3345                _loop163:
3346                do {
3347                        switch ( LA(1)) {
3348                        case FINAL:
3349                        case ABSTRACT:
3350                        case STRICTFP:
3351                        case LITERAL_void:
3352                        case LITERAL_boolean:
3353                        case LITERAL_byte:
3354                        case LITERAL_char:
3355                        case LITERAL_short:
3356                        case LITERAL_int:
3357                        case LITERAL_float:
3358                        case LITERAL_long:
3359                        case LITERAL_double:
3360                        case IDENT:
3361                        case LITERAL_private:
3362                        case LITERAL_public:
3363                        case LITERAL_protected:
3364                        case LITERAL_static:
3365                        case LITERAL_transient:
3366                        case LITERAL_native:
3367                        case LITERAL_synchronized:
3368                        case LITERAL_volatile:
3369                        case LITERAL_class:
3370                        case LITERAL_interface:
3371                        case LCURLY:
3372                        case LITERAL_default:
3373                        case LT:
3374                        case ENUM:
3375                        case AT:
3376                        case LITERAL_record:
3377                        {
3378                                field();
3379                                astFactory.addASTChild(currentAST, returnAST);
3380                                break;
3381                        }
3382                        case SEMI:
3383                        {
3384                                AST tmp61_AST = null;
3385                                tmp61_AST = astFactory.create(LT(1));
3386                                astFactory.addASTChild(currentAST, tmp61_AST);
3387                                match(SEMI);
3388                                break;
3389                        }
3390                        default:
3391                        {
3392                                break _loop163;
3393                        }
3394                        }
3395                } while (true);
3396                }
3397                AST tmp62_AST = null;
3398                tmp62_AST = astFactory.create(LT(1));
3399                astFactory.addASTChild(currentAST, tmp62_AST);
3400                match(RCURLY);
3401                if ( inputState.guessing==0 ) {
3402                        classBlock_AST = (AST)currentAST.root;
3403                        classBlock_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(OBJBLOCK,"OBJBLOCK")).add(classBlock_AST));
3404                        currentAST.root = classBlock_AST;
3405                        currentAST.child = classBlock_AST!=null &&classBlock_AST.getFirstChild()!=null ?
3406                                classBlock_AST.getFirstChild() : classBlock_AST;
3407                        currentAST.advanceChildToEnd();
3408                }
3409                classBlock_AST = (AST)currentAST.root;
3410                returnAST = classBlock_AST;
3411        }
3412        
3413        public final void interfaceExtends() throws RecognitionException, TokenStreamException {
3414                
3415                returnAST = null;
3416                ASTPair currentAST = new ASTPair();
3417                AST interfaceExtends_AST = null;
3418                Token  e = null;
3419                AST e_AST = null;
3420                
3421                {
3422                switch ( LA(1)) {
3423                case LITERAL_extends:
3424                {
3425                        e = LT(1);
3426                        e_AST = astFactory.create(e);
3427                        astFactory.makeASTRoot(currentAST, e_AST);
3428                        match(LITERAL_extends);
3429                        if ( inputState.guessing==0 ) {
3430                                e_AST.setType(EXTENDS_CLAUSE);
3431                        }
3432                        classOrInterfaceType(false);
3433                        astFactory.addASTChild(currentAST, returnAST);
3434                        {
3435                        _loop167:
3436                        do {
3437                                if ((LA(1)==COMMA)) {
3438                                        AST tmp63_AST = null;
3439                                        tmp63_AST = astFactory.create(LT(1));
3440                                        astFactory.addASTChild(currentAST, tmp63_AST);
3441                                        match(COMMA);
3442                                        classOrInterfaceType(false);
3443                                        astFactory.addASTChild(currentAST, returnAST);
3444                                }
3445                                else {
3446                                        break _loop167;
3447                                }
3448                                
3449                        } while (true);
3450                        }
3451                        break;
3452                }
3453                case LCURLY:
3454                {
3455                        break;
3456                }
3457                default:
3458                {
3459                        throw new NoViableAltException(LT(1), getFilename());
3460                }
3461                }
3462                }
3463                interfaceExtends_AST = (AST)currentAST.root;
3464                returnAST = interfaceExtends_AST;
3465        }
3466        
3467        public final void enumBlock() throws RecognitionException, TokenStreamException {
3468                
3469                returnAST = null;
3470                ASTPair currentAST = new ASTPair();
3471                AST enumBlock_AST = null;
3472                
3473                AST tmp64_AST = null;
3474                tmp64_AST = astFactory.create(LT(1));
3475                astFactory.addASTChild(currentAST, tmp64_AST);
3476                match(LCURLY);
3477                {
3478                switch ( LA(1)) {
3479                case IDENT:
3480                case AT:
3481                case LITERAL_record:
3482                {
3483                        enumConstant();
3484                        astFactory.addASTChild(currentAST, returnAST);
3485                        {
3486                        _loop144:
3487                        do {
3488                                if ((LA(1)==COMMA) && (_tokenSet_7.member(LA(2)))) {
3489                                        AST tmp65_AST = null;
3490                                        tmp65_AST = astFactory.create(LT(1));
3491                                        astFactory.addASTChild(currentAST, tmp65_AST);
3492                                        match(COMMA);
3493                                        enumConstant();
3494                                        astFactory.addASTChild(currentAST, returnAST);
3495                                }
3496                                else {
3497                                        break _loop144;
3498                                }
3499                                
3500                        } while (true);
3501                        }
3502                        {
3503                        switch ( LA(1)) {
3504                        case COMMA:
3505                        {
3506                                AST tmp66_AST = null;
3507                                tmp66_AST = astFactory.create(LT(1));
3508                                astFactory.addASTChild(currentAST, tmp66_AST);
3509                                match(COMMA);
3510                                break;
3511                        }
3512                        case SEMI:
3513                        case RCURLY:
3514                        {
3515                                break;
3516                        }
3517                        default:
3518                        {
3519                                throw new NoViableAltException(LT(1), getFilename());
3520                        }
3521                        }
3522                        }
3523                        break;
3524                }
3525                case SEMI:
3526                case RCURLY:
3527                {
3528                        break;
3529                }
3530                default:
3531                {
3532                        throw new NoViableAltException(LT(1), getFilename());
3533                }
3534                }
3535                }
3536                {
3537                switch ( LA(1)) {
3538                case SEMI:
3539                {
3540                        AST tmp67_AST = null;
3541                        tmp67_AST = astFactory.create(LT(1));
3542                        astFactory.addASTChild(currentAST, tmp67_AST);
3543                        match(SEMI);
3544                        {
3545                        _loop148:
3546                        do {
3547                                switch ( LA(1)) {
3548                                case FINAL:
3549                                case ABSTRACT:
3550                                case STRICTFP:
3551                                case LITERAL_void:
3552                                case LITERAL_boolean:
3553                                case LITERAL_byte:
3554                                case LITERAL_char:
3555                                case LITERAL_short:
3556                                case LITERAL_int:
3557                                case LITERAL_float:
3558                                case LITERAL_long:
3559                                case LITERAL_double:
3560                                case IDENT:
3561                                case LITERAL_private:
3562                                case LITERAL_public:
3563                                case LITERAL_protected:
3564                                case LITERAL_static:
3565                                case LITERAL_transient:
3566                                case LITERAL_native:
3567                                case LITERAL_synchronized:
3568                                case LITERAL_volatile:
3569                                case LITERAL_class:
3570                                case LITERAL_interface:
3571                                case LCURLY:
3572                                case LITERAL_default:
3573                                case LT:
3574                                case ENUM:
3575                                case AT:
3576                                case LITERAL_record:
3577                                {
3578                                        field();
3579                                        astFactory.addASTChild(currentAST, returnAST);
3580                                        break;
3581                                }
3582                                case SEMI:
3583                                {
3584                                        AST tmp68_AST = null;
3585                                        tmp68_AST = astFactory.create(LT(1));
3586                                        astFactory.addASTChild(currentAST, tmp68_AST);
3587                                        match(SEMI);
3588                                        break;
3589                                }
3590                                default:
3591                                {
3592                                        break _loop148;
3593                                }
3594                                }
3595                        } while (true);
3596                        }
3597                        break;
3598                }
3599                case RCURLY:
3600                {
3601                        break;
3602                }
3603                default:
3604                {
3605                        throw new NoViableAltException(LT(1), getFilename());
3606                }
3607                }
3608                }
3609                AST tmp69_AST = null;
3610                tmp69_AST = astFactory.create(LT(1));
3611                astFactory.addASTChild(currentAST, tmp69_AST);
3612                match(RCURLY);
3613                if ( inputState.guessing==0 ) {
3614                        enumBlock_AST = (AST)currentAST.root;
3615                        enumBlock_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(OBJBLOCK,"OBJBLOCK")).add(enumBlock_AST));
3616                        currentAST.root = enumBlock_AST;
3617                        currentAST.child = enumBlock_AST!=null &&enumBlock_AST.getFirstChild()!=null ?
3618                                enumBlock_AST.getFirstChild() : enumBlock_AST;
3619                        currentAST.advanceChildToEnd();
3620                }
3621                enumBlock_AST = (AST)currentAST.root;
3622                returnAST = enumBlock_AST;
3623        }
3624        
3625        public final void annotationBlock() throws RecognitionException, TokenStreamException {
3626                
3627                returnAST = null;
3628                ASTPair currentAST = new ASTPair();
3629                AST annotationBlock_AST = null;
3630                
3631                AST tmp70_AST = null;
3632                tmp70_AST = astFactory.create(LT(1));
3633                astFactory.addASTChild(currentAST, tmp70_AST);
3634                match(LCURLY);
3635                {
3636                _loop135:
3637                do {
3638                        switch ( LA(1)) {
3639                        case FINAL:
3640                        case ABSTRACT:
3641                        case STRICTFP:
3642                        case LITERAL_void:
3643                        case LITERAL_boolean:
3644                        case LITERAL_byte:
3645                        case LITERAL_char:
3646                        case LITERAL_short:
3647                        case LITERAL_int:
3648                        case LITERAL_float:
3649                        case LITERAL_long:
3650                        case LITERAL_double:
3651                        case IDENT:
3652                        case LITERAL_private:
3653                        case LITERAL_public:
3654                        case LITERAL_protected:
3655                        case LITERAL_static:
3656                        case LITERAL_transient:
3657                        case LITERAL_native:
3658                        case LITERAL_synchronized:
3659                        case LITERAL_volatile:
3660                        case LITERAL_class:
3661                        case LITERAL_interface:
3662                        case LITERAL_default:
3663                        case ENUM:
3664                        case AT:
3665                        case LITERAL_record:
3666                        {
3667                                annotationField();
3668                                astFactory.addASTChild(currentAST, returnAST);
3669                                break;
3670                        }
3671                        case SEMI:
3672                        {
3673                                AST tmp71_AST = null;
3674                                tmp71_AST = astFactory.create(LT(1));
3675                                astFactory.addASTChild(currentAST, tmp71_AST);
3676                                match(SEMI);
3677                                break;
3678                        }
3679                        default:
3680                        {
3681                                break _loop135;
3682                        }
3683                        }
3684                } while (true);
3685                }
3686                AST tmp72_AST = null;
3687                tmp72_AST = astFactory.create(LT(1));
3688                astFactory.addASTChild(currentAST, tmp72_AST);
3689                match(RCURLY);
3690                if ( inputState.guessing==0 ) {
3691                        annotationBlock_AST = (AST)currentAST.root;
3692                        annotationBlock_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(OBJBLOCK,"OBJBLOCK")).add(annotationBlock_AST));
3693                        currentAST.root = annotationBlock_AST;
3694                        currentAST.child = annotationBlock_AST!=null &&annotationBlock_AST.getFirstChild()!=null ?
3695                                annotationBlock_AST.getFirstChild() : annotationBlock_AST;
3696                        currentAST.advanceChildToEnd();
3697                }
3698                annotationBlock_AST = (AST)currentAST.root;
3699                returnAST = annotationBlock_AST;
3700        }
3701        
3702        public final void typeParameter() throws RecognitionException, TokenStreamException {
3703                
3704                returnAST = null;
3705                ASTPair currentAST = new ASTPair();
3706                AST typeParameter_AST = null;
3707                AST id_AST = null;
3708                
3709                {
3710                if (((_tokenSet_7.member(LA(1))) && (_tokenSet_45.member(LA(2))))&&(LA(1) == AT)) {
3711                        annotations();
3712                        astFactory.addASTChild(currentAST, returnAST);
3713                }
3714                else if ((LA(1)==IDENT||LA(1)==LITERAL_record) && (_tokenSet_45.member(LA(2)))) {
3715                }
3716                else {
3717                        throw new NoViableAltException(LT(1), getFilename());
3718                }
3719                
3720                }
3721                {
3722                id();
3723                id_AST = (AST)returnAST;
3724                astFactory.addASTChild(currentAST, returnAST);
3725                }
3726                {
3727                if ((LA(1)==LITERAL_extends) && (_tokenSet_7.member(LA(2)))) {
3728                        typeParameterBounds();
3729                        astFactory.addASTChild(currentAST, returnAST);
3730                }
3731                else if ((_tokenSet_45.member(LA(1))) && (_tokenSet_46.member(LA(2)))) {
3732                }
3733                else {
3734                        throw new NoViableAltException(LT(1), getFilename());
3735                }
3736                
3737                }
3738                if ( inputState.guessing==0 ) {
3739                        typeParameter_AST = (AST)currentAST.root;
3740                        typeParameter_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE_PARAMETER,"TYPE_PARAMETER")).add(typeParameter_AST));
3741                        currentAST.root = typeParameter_AST;
3742                        currentAST.child = typeParameter_AST!=null &&typeParameter_AST.getFirstChild()!=null ?
3743                                typeParameter_AST.getFirstChild() : typeParameter_AST;
3744                        currentAST.advanceChildToEnd();
3745                }
3746                typeParameter_AST = (AST)currentAST.root;
3747                returnAST = typeParameter_AST;
3748        }
3749        
3750        public final void typeParameterBounds() throws RecognitionException, TokenStreamException {
3751                
3752                returnAST = null;
3753                ASTPair currentAST = new ASTPair();
3754                AST typeParameterBounds_AST = null;
3755                Token  e = null;
3756                AST e_AST = null;
3757                Token  b = null;
3758                AST b_AST = null;
3759                
3760                e = LT(1);
3761                e_AST = astFactory.create(e);
3762                astFactory.makeASTRoot(currentAST, e_AST);
3763                match(LITERAL_extends);
3764                classOrInterfaceType(true);
3765                astFactory.addASTChild(currentAST, returnAST);
3766                {
3767                _loop132:
3768                do {
3769                        if ((LA(1)==BAND)) {
3770                                b = LT(1);
3771                                b_AST = astFactory.create(b);
3772                                astFactory.addASTChild(currentAST, b_AST);
3773                                match(BAND);
3774                                if ( inputState.guessing==0 ) {
3775                                        b_AST.setType(TYPE_EXTENSION_AND);
3776                                }
3777                                classOrInterfaceType(true);
3778                                astFactory.addASTChild(currentAST, returnAST);
3779                        }
3780                        else {
3781                                break _loop132;
3782                        }
3783                        
3784                } while (true);
3785                }
3786                if ( inputState.guessing==0 ) {
3787                        e_AST.setType(TYPE_UPPER_BOUNDS);
3788                }
3789                typeParameterBounds_AST = (AST)currentAST.root;
3790                returnAST = typeParameterBounds_AST;
3791        }
3792        
3793        public final void annotationField() throws RecognitionException, TokenStreamException {
3794                
3795                returnAST = null;
3796                ASTPair currentAST = new ASTPair();
3797                AST annotationField_AST = null;
3798                AST mods_AST = null;
3799                AST td_AST = null;
3800                AST t_AST = null;
3801                AST i_AST = null;
3802                AST rt_AST = null;
3803                AST d_AST = null;
3804                Token  s = null;
3805                AST s_AST = null;
3806                AST v_AST = null;
3807                Token  s6 = null;
3808                AST s6_AST = null;
3809                
3810                modifiers();
3811                mods_AST = (AST)returnAST;
3812                {
3813                if ((_tokenSet_34.member(LA(1))) && (_tokenSet_35.member(LA(2)))) {
3814                        typeDefinitionInternal(mods_AST);
3815                        td_AST = (AST)returnAST;
3816                        if ( inputState.guessing==0 ) {
3817                                annotationField_AST = (AST)currentAST.root;
3818                                annotationField_AST = td_AST;
3819                                currentAST.root = annotationField_AST;
3820                                currentAST.child = annotationField_AST!=null &&annotationField_AST.getFirstChild()!=null ?
3821                                        annotationField_AST.getFirstChild() : annotationField_AST;
3822                                currentAST.advanceChildToEnd();
3823                        }
3824                }
3825                else if ((_tokenSet_12.member(LA(1))) && (_tokenSet_27.member(LA(2)))) {
3826                        typeSpec(false);
3827                        t_AST = (AST)returnAST;
3828                        {
3829                        if ((LA(1)==IDENT||LA(1)==LITERAL_record) && (LA(2)==LPAREN)) {
3830                                id();
3831                                i_AST = (AST)returnAST;
3832                                AST tmp73_AST = null;
3833                                tmp73_AST = astFactory.create(LT(1));
3834                                match(LPAREN);
3835                                AST tmp74_AST = null;
3836                                tmp74_AST = astFactory.create(LT(1));
3837                                match(RPAREN);
3838                                declaratorBrackets(t_AST);
3839                                rt_AST = (AST)returnAST;
3840                                {
3841                                switch ( LA(1)) {
3842                                case LITERAL_default:
3843                                {
3844                                        annotationDefault();
3845                                        d_AST = (AST)returnAST;
3846                                        break;
3847                                }
3848                                case SEMI:
3849                                {
3850                                        break;
3851                                }
3852                                default:
3853                                {
3854                                        throw new NoViableAltException(LT(1), getFilename());
3855                                }
3856                                }
3857                                }
3858                                s = LT(1);
3859                                s_AST = astFactory.create(s);
3860                                match(SEMI);
3861                                if ( inputState.guessing==0 ) {
3862                                        annotationField_AST = (AST)currentAST.root;
3863                                        annotationField_AST =
3864                                        (AST)astFactory.make( (new ASTArray(8)).add(astFactory.create(ANNOTATION_FIELD_DEF,"ANNOTATION_FIELD_DEF")).add(mods_AST).add((AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE,"TYPE")).add(rt_AST))).add(i_AST).add(tmp73_AST).add(tmp74_AST).add(d_AST).add(s_AST));
3865                                        currentAST.root = annotationField_AST;
3866                                        currentAST.child = annotationField_AST!=null &&annotationField_AST.getFirstChild()!=null ?
3867                                                annotationField_AST.getFirstChild() : annotationField_AST;
3868                                        currentAST.advanceChildToEnd();
3869                                }
3870                        }
3871                        else if ((LA(1)==IDENT||LA(1)==LITERAL_record) && (_tokenSet_47.member(LA(2)))) {
3872                                variableDefinitions(mods_AST,t_AST);
3873                                v_AST = (AST)returnAST;
3874                                s6 = LT(1);
3875                                s6_AST = astFactory.create(s6);
3876                                match(SEMI);
3877                                if ( inputState.guessing==0 ) {
3878                                        annotationField_AST = (AST)currentAST.root;
3879                                        
3880                                        annotationField_AST = v_AST;
3881                                        v_AST.addChild(s6_AST);
3882                                        
3883                                        currentAST.root = annotationField_AST;
3884                                        currentAST.child = annotationField_AST!=null &&annotationField_AST.getFirstChild()!=null ?
3885                                                annotationField_AST.getFirstChild() : annotationField_AST;
3886                                        currentAST.advanceChildToEnd();
3887                                }
3888                        }
3889                        else {
3890                                throw new NoViableAltException(LT(1), getFilename());
3891                        }
3892                        
3893                        }
3894                }
3895                else {
3896                        throw new NoViableAltException(LT(1), getFilename());
3897                }
3898                
3899                }
3900                returnAST = annotationField_AST;
3901        }
3902        
3903        public final void annotationDefault() throws RecognitionException, TokenStreamException {
3904                
3905                returnAST = null;
3906                ASTPair currentAST = new ASTPair();
3907                AST annotationDefault_AST = null;
3908                
3909                AST tmp75_AST = null;
3910                tmp75_AST = astFactory.create(LT(1));
3911                astFactory.makeASTRoot(currentAST, tmp75_AST);
3912                match(LITERAL_default);
3913                annotationMemberValueInitializer();
3914                astFactory.addASTChild(currentAST, returnAST);
3915                annotationDefault_AST = (AST)currentAST.root;
3916                returnAST = annotationDefault_AST;
3917        }
3918        
3919        public final void enumConstant() throws RecognitionException, TokenStreamException {
3920                
3921                returnAST = null;
3922                ASTPair currentAST = new ASTPair();
3923                AST enumConstant_AST = null;
3924                AST an_AST = null;
3925                AST i_AST = null;
3926                Token  l = null;
3927                AST l_AST = null;
3928                AST args_AST = null;
3929                Token  r = null;
3930                AST r_AST = null;
3931                AST b_AST = null;
3932                
3933                annotations();
3934                an_AST = (AST)returnAST;
3935                id();
3936                i_AST = (AST)returnAST;
3937                {
3938                switch ( LA(1)) {
3939                case LPAREN:
3940                {
3941                        l = LT(1);
3942                        l_AST = astFactory.create(l);
3943                        match(LPAREN);
3944                        argList();
3945                        args_AST = (AST)returnAST;
3946                        r = LT(1);
3947                        r_AST = astFactory.create(r);
3948                        match(RPAREN);
3949                        break;
3950                }
3951                case SEMI:
3952                case LCURLY:
3953                case RCURLY:
3954                case COMMA:
3955                {
3956                        break;
3957                }
3958                default:
3959                {
3960                        throw new NoViableAltException(LT(1), getFilename());
3961                }
3962                }
3963                }
3964                {
3965                switch ( LA(1)) {
3966                case LCURLY:
3967                {
3968                        enumConstantBlock();
3969                        b_AST = (AST)returnAST;
3970                        break;
3971                }
3972                case SEMI:
3973                case RCURLY:
3974                case COMMA:
3975                {
3976                        break;
3977                }
3978                default:
3979                {
3980                        throw new NoViableAltException(LT(1), getFilename());
3981                }
3982                }
3983                }
3984                if ( inputState.guessing==0 ) {
3985                        enumConstant_AST = (AST)currentAST.root;
3986                        enumConstant_AST = (AST)astFactory.make( (new ASTArray(7)).add(astFactory.create(ENUM_CONSTANT_DEF,"ENUM_CONSTANT_DEF")).add(an_AST).add(i_AST).add(l_AST).add(args_AST).add(r_AST).add(b_AST));
3987                        currentAST.root = enumConstant_AST;
3988                        currentAST.child = enumConstant_AST!=null &&enumConstant_AST.getFirstChild()!=null ?
3989                                enumConstant_AST.getFirstChild() : enumConstant_AST;
3990                        currentAST.advanceChildToEnd();
3991                }
3992                returnAST = enumConstant_AST;
3993        }
3994        
3995        public final void argList() throws RecognitionException, TokenStreamException {
3996                
3997                returnAST = null;
3998                ASTPair currentAST = new ASTPair();
3999                AST argList_AST = null;
4000                
4001                {
4002                if (((_tokenSet_16.member(LA(1))))&&(LA(1)!=RPAREN)) {
4003                        expressionList();
4004                        astFactory.addASTChild(currentAST, returnAST);
4005                }
4006                else if ((LA(1)==RPAREN)) {
4007                        if ( inputState.guessing==0 ) {
4008                                argList_AST = (AST)currentAST.root;
4009                                argList_AST = astFactory.create(ELIST,"ELIST");
4010                                currentAST.root = argList_AST;
4011                                currentAST.child = argList_AST!=null &&argList_AST.getFirstChild()!=null ?
4012                                        argList_AST.getFirstChild() : argList_AST;
4013                                currentAST.advanceChildToEnd();
4014                        }
4015                }
4016                else {
4017                        throw new NoViableAltException(LT(1), getFilename());
4018                }
4019                
4020                }
4021                argList_AST = (AST)currentAST.root;
4022                returnAST = argList_AST;
4023        }
4024        
4025        public final void enumConstantBlock() throws RecognitionException, TokenStreamException {
4026                
4027                returnAST = null;
4028                ASTPair currentAST = new ASTPair();
4029                AST enumConstantBlock_AST = null;
4030                
4031                AST tmp76_AST = null;
4032                tmp76_AST = astFactory.create(LT(1));
4033                astFactory.addASTChild(currentAST, tmp76_AST);
4034                match(LCURLY);
4035                {
4036                _loop154:
4037                do {
4038                        switch ( LA(1)) {
4039                        case FINAL:
4040                        case ABSTRACT:
4041                        case STRICTFP:
4042                        case LITERAL_void:
4043                        case LITERAL_boolean:
4044                        case LITERAL_byte:
4045                        case LITERAL_char:
4046                        case LITERAL_short:
4047                        case LITERAL_int:
4048                        case LITERAL_float:
4049                        case LITERAL_long:
4050                        case LITERAL_double:
4051                        case IDENT:
4052                        case LITERAL_private:
4053                        case LITERAL_public:
4054                        case LITERAL_protected:
4055                        case LITERAL_static:
4056                        case LITERAL_transient:
4057                        case LITERAL_native:
4058                        case LITERAL_synchronized:
4059                        case LITERAL_volatile:
4060                        case LITERAL_class:
4061                        case LITERAL_interface:
4062                        case LCURLY:
4063                        case LITERAL_default:
4064                        case LT:
4065                        case ENUM:
4066                        case AT:
4067                        case LITERAL_record:
4068                        {
4069                                enumConstantField();
4070                                astFactory.addASTChild(currentAST, returnAST);
4071                                break;
4072                        }
4073                        case SEMI:
4074                        {
4075                                AST tmp77_AST = null;
4076                                tmp77_AST = astFactory.create(LT(1));
4077                                astFactory.addASTChild(currentAST, tmp77_AST);
4078                                match(SEMI);
4079                                break;
4080                        }
4081                        default:
4082                        {
4083                                break _loop154;
4084                        }
4085                        }
4086                } while (true);
4087                }
4088                AST tmp78_AST = null;
4089                tmp78_AST = astFactory.create(LT(1));
4090                astFactory.addASTChild(currentAST, tmp78_AST);
4091                match(RCURLY);
4092                if ( inputState.guessing==0 ) {
4093                        enumConstantBlock_AST = (AST)currentAST.root;
4094                        enumConstantBlock_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(OBJBLOCK,"OBJBLOCK")).add(enumConstantBlock_AST));
4095                        currentAST.root = enumConstantBlock_AST;
4096                        currentAST.child = enumConstantBlock_AST!=null &&enumConstantBlock_AST.getFirstChild()!=null ?
4097                                enumConstantBlock_AST.getFirstChild() : enumConstantBlock_AST;
4098                        currentAST.advanceChildToEnd();
4099                }
4100                enumConstantBlock_AST = (AST)currentAST.root;
4101                returnAST = enumConstantBlock_AST;
4102        }
4103        
4104        public final void enumConstantField() throws RecognitionException, TokenStreamException {
4105                
4106                returnAST = null;
4107                ASTPair currentAST = new ASTPair();
4108                AST enumConstantField_AST = null;
4109                AST mods_AST = null;
4110                AST td_AST = null;
4111                AST tp_AST = null;
4112                AST t_AST = null;
4113                AST id_AST = null;
4114                AST param_AST = null;
4115                AST rt_AST = null;
4116                AST tc_AST = null;
4117                AST s2_AST = null;
4118                Token  s3 = null;
4119                AST s3_AST = null;
4120                AST v_AST = null;
4121                Token  s6 = null;
4122                AST s6_AST = null;
4123                AST s4_AST = null;
4124                
4125                switch ( LA(1)) {
4126                case FINAL:
4127                case ABSTRACT:
4128                case STRICTFP:
4129                case LITERAL_void:
4130                case LITERAL_boolean:
4131                case LITERAL_byte:
4132                case LITERAL_char:
4133                case LITERAL_short:
4134                case LITERAL_int:
4135                case LITERAL_float:
4136                case LITERAL_long:
4137                case LITERAL_double:
4138                case IDENT:
4139                case LITERAL_private:
4140                case LITERAL_public:
4141                case LITERAL_protected:
4142                case LITERAL_static:
4143                case LITERAL_transient:
4144                case LITERAL_native:
4145                case LITERAL_synchronized:
4146                case LITERAL_volatile:
4147                case LITERAL_class:
4148                case LITERAL_interface:
4149                case LITERAL_default:
4150                case LT:
4151                case ENUM:
4152                case AT:
4153                case LITERAL_record:
4154                {
4155                        modifiers();
4156                        mods_AST = (AST)returnAST;
4157                        {
4158                        if ((_tokenSet_34.member(LA(1))) && (_tokenSet_35.member(LA(2)))) {
4159                                typeDefinitionInternal(mods_AST);
4160                                td_AST = (AST)returnAST;
4161                                if ( inputState.guessing==0 ) {
4162                                        enumConstantField_AST = (AST)currentAST.root;
4163                                        enumConstantField_AST = td_AST;
4164                                        currentAST.root = enumConstantField_AST;
4165                                        currentAST.child = enumConstantField_AST!=null &&enumConstantField_AST.getFirstChild()!=null ?
4166                                                enumConstantField_AST.getFirstChild() : enumConstantField_AST;
4167                                        currentAST.advanceChildToEnd();
4168                                }
4169                        }
4170                        else if ((_tokenSet_36.member(LA(1))) && (_tokenSet_27.member(LA(2)))) {
4171                                {
4172                                switch ( LA(1)) {
4173                                case LT:
4174                                {
4175                                        typeParameters();
4176                                        tp_AST = (AST)returnAST;
4177                                        break;
4178                                }
4179                                case LITERAL_void:
4180                                case LITERAL_boolean:
4181                                case LITERAL_byte:
4182                                case LITERAL_char:
4183                                case LITERAL_short:
4184                                case LITERAL_int:
4185                                case LITERAL_float:
4186                                case LITERAL_long:
4187                                case LITERAL_double:
4188                                case IDENT:
4189                                case AT:
4190                                case LITERAL_record:
4191                                {
4192                                        break;
4193                                }
4194                                default:
4195                                {
4196                                        throw new NoViableAltException(LT(1), getFilename());
4197                                }
4198                                }
4199                                }
4200                                typeSpec(false);
4201                                t_AST = (AST)returnAST;
4202                                {
4203                                if ((LA(1)==IDENT||LA(1)==LITERAL_record) && (LA(2)==LPAREN)) {
4204                                        id();
4205                                        id_AST = (AST)returnAST;
4206                                        AST tmp79_AST = null;
4207                                        tmp79_AST = astFactory.create(LT(1));
4208                                        match(LPAREN);
4209                                        parameterDeclarationList();
4210                                        param_AST = (AST)returnAST;
4211                                        AST tmp80_AST = null;
4212                                        tmp80_AST = astFactory.create(LT(1));
4213                                        match(RPAREN);
4214                                        declaratorBrackets(t_AST);
4215                                        rt_AST = (AST)returnAST;
4216                                        {
4217                                        switch ( LA(1)) {
4218                                        case LITERAL_throws:
4219                                        {
4220                                                throwsClause();
4221                                                tc_AST = (AST)returnAST;
4222                                                break;
4223                                        }
4224                                        case SEMI:
4225                                        case LCURLY:
4226                                        {
4227                                                break;
4228                                        }
4229                                        default:
4230                                        {
4231                                                throw new NoViableAltException(LT(1), getFilename());
4232                                        }
4233                                        }
4234                                        }
4235                                        {
4236                                        switch ( LA(1)) {
4237                                        case LCURLY:
4238                                        {
4239                                                compoundStatement();
4240                                                s2_AST = (AST)returnAST;
4241                                                break;
4242                                        }
4243                                        case SEMI:
4244                                        {
4245                                                s3 = LT(1);
4246                                                s3_AST = astFactory.create(s3);
4247                                                match(SEMI);
4248                                                break;
4249                                        }
4250                                        default:
4251                                        {
4252                                                throw new NoViableAltException(LT(1), getFilename());
4253                                        }
4254                                        }
4255                                        }
4256                                        if ( inputState.guessing==0 ) {
4257                                                enumConstantField_AST = (AST)currentAST.root;
4258                                                enumConstantField_AST = (AST)astFactory.make( (new ASTArray(11)).add(astFactory.create(METHOD_DEF,"METHOD_DEF")).add(mods_AST).add(tp_AST).add((AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE,"TYPE")).add(rt_AST))).add(id_AST).add(tmp79_AST).add(param_AST).add(tmp80_AST).add(tc_AST).add(s2_AST).add(s3_AST));
4259                                                currentAST.root = enumConstantField_AST;
4260                                                currentAST.child = enumConstantField_AST!=null &&enumConstantField_AST.getFirstChild()!=null ?
4261                                                        enumConstantField_AST.getFirstChild() : enumConstantField_AST;
4262                                                currentAST.advanceChildToEnd();
4263                                        }
4264                                }
4265                                else if ((LA(1)==IDENT||LA(1)==LITERAL_record) && (_tokenSet_47.member(LA(2)))) {
4266                                        variableDefinitions(mods_AST,t_AST);
4267                                        v_AST = (AST)returnAST;
4268                                        s6 = LT(1);
4269                                        s6_AST = astFactory.create(s6);
4270                                        match(SEMI);
4271                                        if ( inputState.guessing==0 ) {
4272                                                enumConstantField_AST = (AST)currentAST.root;
4273                                                
4274                                                enumConstantField_AST = v_AST;
4275                                                v_AST.addChild(s6_AST);
4276                                                
4277                                                currentAST.root = enumConstantField_AST;
4278                                                currentAST.child = enumConstantField_AST!=null &&enumConstantField_AST.getFirstChild()!=null ?
4279                                                        enumConstantField_AST.getFirstChild() : enumConstantField_AST;
4280                                                currentAST.advanceChildToEnd();
4281                                        }
4282                                }
4283                                else {
4284                                        throw new NoViableAltException(LT(1), getFilename());
4285                                }
4286                                
4287                                }
4288                        }
4289                        else {
4290                                throw new NoViableAltException(LT(1), getFilename());
4291                        }
4292                        
4293                        }
4294                        break;
4295                }
4296                case LCURLY:
4297                {
4298                        compoundStatement();
4299                        s4_AST = (AST)returnAST;
4300                        if ( inputState.guessing==0 ) {
4301                                enumConstantField_AST = (AST)currentAST.root;
4302                                enumConstantField_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(INSTANCE_INIT,"INSTANCE_INIT")).add(s4_AST));
4303                                currentAST.root = enumConstantField_AST;
4304                                currentAST.child = enumConstantField_AST!=null &&enumConstantField_AST.getFirstChild()!=null ?
4305                                        enumConstantField_AST.getFirstChild() : enumConstantField_AST;
4306                                currentAST.advanceChildToEnd();
4307                        }
4308                        break;
4309                }
4310                default:
4311                {
4312                        throw new NoViableAltException(LT(1), getFilename());
4313                }
4314                }
4315                returnAST = enumConstantField_AST;
4316        }
4317        
4318        public final void parameterDeclarationList() throws RecognitionException, TokenStreamException {
4319                
4320                returnAST = null;
4321                ASTPair currentAST = new ASTPair();
4322                AST parameterDeclarationList_AST = null;
4323                
4324                {
4325                boolean synPredMatched215 = false;
4326                if (((_tokenSet_48.member(LA(1))) && (_tokenSet_49.member(LA(2))))) {
4327                        int _m215 = mark();
4328                        synPredMatched215 = true;
4329                        inputState.guessing++;
4330                        try {
4331                                {
4332                                parameterDeclaration();
4333                                }
4334                        }
4335                        catch (RecognitionException pe) {
4336                                synPredMatched215 = false;
4337                        }
4338                        rewind(_m215);
4339inputState.guessing--;
4340                }
4341                if ( synPredMatched215 ) {
4342                        parameterDeclaration();
4343                        astFactory.addASTChild(currentAST, returnAST);
4344                        {
4345                        _loop219:
4346                        do {
4347                                boolean synPredMatched218 = false;
4348                                if (((LA(1)==COMMA) && (_tokenSet_48.member(LA(2))))) {
4349                                        int _m218 = mark();
4350                                        synPredMatched218 = true;
4351                                        inputState.guessing++;
4352                                        try {
4353                                                {
4354                                                match(COMMA);
4355                                                parameterDeclaration();
4356                                                }
4357                                        }
4358                                        catch (RecognitionException pe) {
4359                                                synPredMatched218 = false;
4360                                        }
4361                                        rewind(_m218);
4362inputState.guessing--;
4363                                }
4364                                if ( synPredMatched218 ) {
4365                                        AST tmp81_AST = null;
4366                                        tmp81_AST = astFactory.create(LT(1));
4367                                        astFactory.addASTChild(currentAST, tmp81_AST);
4368                                        match(COMMA);
4369                                        parameterDeclaration();
4370                                        astFactory.addASTChild(currentAST, returnAST);
4371                                }
4372                                else {
4373                                        break _loop219;
4374                                }
4375                                
4376                        } while (true);
4377                        }
4378                        {
4379                        switch ( LA(1)) {
4380                        case COMMA:
4381                        {
4382                                AST tmp82_AST = null;
4383                                tmp82_AST = astFactory.create(LT(1));
4384                                astFactory.addASTChild(currentAST, tmp82_AST);
4385                                match(COMMA);
4386                                variableLengthParameterDeclaration();
4387                                astFactory.addASTChild(currentAST, returnAST);
4388                                break;
4389                        }
4390                        case RPAREN:
4391                        {
4392                                break;
4393                        }
4394                        default:
4395                        {
4396                                throw new NoViableAltException(LT(1), getFilename());
4397                        }
4398                        }
4399                        }
4400                }
4401                else if ((_tokenSet_28.member(LA(1))) && (_tokenSet_29.member(LA(2)))) {
4402                        variableLengthParameterDeclaration();
4403                        astFactory.addASTChild(currentAST, returnAST);
4404                }
4405                else if ((LA(1)==RPAREN)) {
4406                }
4407                else {
4408                        throw new NoViableAltException(LT(1), getFilename());
4409                }
4410                
4411                }
4412                if ( inputState.guessing==0 ) {
4413                        parameterDeclarationList_AST = (AST)currentAST.root;
4414                        parameterDeclarationList_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(PARAMETERS,"PARAMETERS")).add(parameterDeclarationList_AST));
4415                        currentAST.root = parameterDeclarationList_AST;
4416                        currentAST.child = parameterDeclarationList_AST!=null &&parameterDeclarationList_AST.getFirstChild()!=null ?
4417                                parameterDeclarationList_AST.getFirstChild() : parameterDeclarationList_AST;
4418                        currentAST.advanceChildToEnd();
4419                }
4420                parameterDeclarationList_AST = (AST)currentAST.root;
4421                returnAST = parameterDeclarationList_AST;
4422        }
4423        
4424        public final void throwsClause() throws RecognitionException, TokenStreamException {
4425                
4426                returnAST = null;
4427                ASTPair currentAST = new ASTPair();
4428                AST throwsClause_AST = null;
4429                
4430                AST tmp83_AST = null;
4431                tmp83_AST = astFactory.create(LT(1));
4432                astFactory.makeASTRoot(currentAST, tmp83_AST);
4433                match(LITERAL_throws);
4434                {
4435                if (((_tokenSet_7.member(LA(1))) && (_tokenSet_50.member(LA(2))))&&(LA(1) == AT)) {
4436                        annotations();
4437                        astFactory.addASTChild(currentAST, returnAST);
4438                }
4439                else if ((LA(1)==IDENT||LA(1)==LITERAL_record) && (_tokenSet_51.member(LA(2)))) {
4440                }
4441                else {
4442                        throw new NoViableAltException(LT(1), getFilename());
4443                }
4444                
4445                }
4446                identifier();
4447                astFactory.addASTChild(currentAST, returnAST);
4448                {
4449                _loop211:
4450                do {
4451                        if ((LA(1)==COMMA)) {
4452                                AST tmp84_AST = null;
4453                                tmp84_AST = astFactory.create(LT(1));
4454                                astFactory.addASTChild(currentAST, tmp84_AST);
4455                                match(COMMA);
4456                                {
4457                                if (((_tokenSet_7.member(LA(1))) && (_tokenSet_50.member(LA(2))))&&(LA(1) == AT)) {
4458                                        annotations();
4459                                        astFactory.addASTChild(currentAST, returnAST);
4460                                }
4461                                else if ((LA(1)==IDENT||LA(1)==LITERAL_record) && (_tokenSet_51.member(LA(2)))) {
4462                                }
4463                                else {
4464                                        throw new NoViableAltException(LT(1), getFilename());
4465                                }
4466                                
4467                                }
4468                                identifier();
4469                                astFactory.addASTChild(currentAST, returnAST);
4470                        }
4471                        else {
4472                                break _loop211;
4473                        }
4474                        
4475                } while (true);
4476                }
4477                throwsClause_AST = (AST)currentAST.root;
4478                returnAST = throwsClause_AST;
4479        }
4480        
4481        public final void compoundStatement() throws RecognitionException, TokenStreamException {
4482                
4483                returnAST = null;
4484                ASTPair currentAST = new ASTPair();
4485                AST compoundStatement_AST = null;
4486                Token  lc = null;
4487                AST lc_AST = null;
4488                
4489                lc = LT(1);
4490                lc_AST = astFactory.create(lc);
4491                astFactory.makeASTRoot(currentAST, lc_AST);
4492                match(LCURLY);
4493                if ( inputState.guessing==0 ) {
4494                        lc_AST.setType(SLIST);
4495                }
4496                {
4497                _loop239:
4498                do {
4499                        if ((_tokenSet_44.member(LA(1)))) {
4500                                statement();
4501                                astFactory.addASTChild(currentAST, returnAST);
4502                        }
4503                        else {
4504                                break _loop239;
4505                        }
4506                        
4507                } while (true);
4508                }
4509                AST tmp85_AST = null;
4510                tmp85_AST = astFactory.create(LT(1));
4511                astFactory.addASTChild(currentAST, tmp85_AST);
4512                match(RCURLY);
4513                compoundStatement_AST = (AST)currentAST.root;
4514                returnAST = compoundStatement_AST;
4515        }
4516        
4517        public final void ctorHead() throws RecognitionException, TokenStreamException {
4518                
4519                returnAST = null;
4520                ASTPair currentAST = new ASTPair();
4521                AST ctorHead_AST = null;
4522                
4523                id();
4524                astFactory.addASTChild(currentAST, returnAST);
4525                AST tmp86_AST = null;
4526                tmp86_AST = astFactory.create(LT(1));
4527                astFactory.addASTChild(currentAST, tmp86_AST);
4528                match(LPAREN);
4529                parameterDeclarationList();
4530                astFactory.addASTChild(currentAST, returnAST);
4531                AST tmp87_AST = null;
4532                tmp87_AST = astFactory.create(LT(1));
4533                astFactory.addASTChild(currentAST, tmp87_AST);
4534                match(RPAREN);
4535                {
4536                switch ( LA(1)) {
4537                case LITERAL_throws:
4538                {
4539                        throwsClause();
4540                        astFactory.addASTChild(currentAST, returnAST);
4541                        break;
4542                }
4543                case LCURLY:
4544                {
4545                        break;
4546                }
4547                default:
4548                {
4549                        throw new NoViableAltException(LT(1), getFilename());
4550                }
4551                }
4552                }
4553                ctorHead_AST = (AST)currentAST.root;
4554                returnAST = ctorHead_AST;
4555        }
4556        
4557        public final void explicitConstructorInvocation() throws RecognitionException, TokenStreamException {
4558                
4559                returnAST = null;
4560                ASTPair currentAST = new ASTPair();
4561                AST explicitConstructorInvocation_AST = null;
4562                Token  t = null;
4563                AST t_AST = null;
4564                Token  s = null;
4565                AST s_AST = null;
4566                Token  s1 = null;
4567                AST s1_AST = null;
4568                
4569                {
4570                if ((_tokenSet_52.member(LA(1))) && (_tokenSet_53.member(LA(2)))) {
4571                        {
4572                        switch ( LA(1)) {
4573                        case LT:
4574                        {
4575                                typeArguments(false);
4576                                astFactory.addASTChild(currentAST, returnAST);
4577                                break;
4578                        }
4579                        case LITERAL_this:
4580                        case LITERAL_super:
4581                        {
4582                                break;
4583                        }
4584                        default:
4585                        {
4586                                throw new NoViableAltException(LT(1), getFilename());
4587                        }
4588                        }
4589                        }
4590                        {
4591                        switch ( LA(1)) {
4592                        case LITERAL_this:
4593                        {
4594                                t = LT(1);
4595                                t_AST = astFactory.create(t);
4596                                astFactory.makeASTRoot(currentAST, t_AST);
4597                                match(LITERAL_this);
4598                                AST tmp88_AST = null;
4599                                tmp88_AST = astFactory.create(LT(1));
4600                                astFactory.addASTChild(currentAST, tmp88_AST);
4601                                match(LPAREN);
4602                                argList();
4603                                astFactory.addASTChild(currentAST, returnAST);
4604                                AST tmp89_AST = null;
4605                                tmp89_AST = astFactory.create(LT(1));
4606                                astFactory.addASTChild(currentAST, tmp89_AST);
4607                                match(RPAREN);
4608                                AST tmp90_AST = null;
4609                                tmp90_AST = astFactory.create(LT(1));
4610                                astFactory.addASTChild(currentAST, tmp90_AST);
4611                                match(SEMI);
4612                                if ( inputState.guessing==0 ) {
4613                                        t_AST.setType(CTOR_CALL);
4614                                }
4615                                break;
4616                        }
4617                        case LITERAL_super:
4618                        {
4619                                s = LT(1);
4620                                s_AST = astFactory.create(s);
4621                                astFactory.makeASTRoot(currentAST, s_AST);
4622                                match(LITERAL_super);
4623                                AST tmp91_AST = null;
4624                                tmp91_AST = astFactory.create(LT(1));
4625                                astFactory.addASTChild(currentAST, tmp91_AST);
4626                                match(LPAREN);
4627                                argList();
4628                                astFactory.addASTChild(currentAST, returnAST);
4629                                AST tmp92_AST = null;
4630                                tmp92_AST = astFactory.create(LT(1));
4631                                astFactory.addASTChild(currentAST, tmp92_AST);
4632                                match(RPAREN);
4633                                AST tmp93_AST = null;
4634                                tmp93_AST = astFactory.create(LT(1));
4635                                astFactory.addASTChild(currentAST, tmp93_AST);
4636                                match(SEMI);
4637                                if ( inputState.guessing==0 ) {
4638                                        s_AST.setType(SUPER_CTOR_CALL);
4639                                }
4640                                break;
4641                        }
4642                        default:
4643                        {
4644                                throw new NoViableAltException(LT(1), getFilename());
4645                        }
4646                        }
4647                        }
4648                }
4649                else if ((_tokenSet_54.member(LA(1))) && (_tokenSet_55.member(LA(2)))) {
4650                        primaryExpression();
4651                        astFactory.addASTChild(currentAST, returnAST);
4652                        AST tmp94_AST = null;
4653                        tmp94_AST = astFactory.create(LT(1));
4654                        astFactory.addASTChild(currentAST, tmp94_AST);
4655                        match(DOT);
4656                        {
4657                        switch ( LA(1)) {
4658                        case LT:
4659                        {
4660                                typeArguments(false);
4661                                astFactory.addASTChild(currentAST, returnAST);
4662                                break;
4663                        }
4664                        case LITERAL_super:
4665                        {
4666                                break;
4667                        }
4668                        default:
4669                        {
4670                                throw new NoViableAltException(LT(1), getFilename());
4671                        }
4672                        }
4673                        }
4674                        s1 = LT(1);
4675                        s1_AST = astFactory.create(s1);
4676                        astFactory.makeASTRoot(currentAST, s1_AST);
4677                        match(LITERAL_super);
4678                        AST tmp95_AST = null;
4679                        tmp95_AST = astFactory.create(LT(1));
4680                        astFactory.addASTChild(currentAST, tmp95_AST);
4681                        match(LPAREN);
4682                        argList();
4683                        astFactory.addASTChild(currentAST, returnAST);
4684                        AST tmp96_AST = null;
4685                        tmp96_AST = astFactory.create(LT(1));
4686                        astFactory.addASTChild(currentAST, tmp96_AST);
4687                        match(RPAREN);
4688                        AST tmp97_AST = null;
4689                        tmp97_AST = astFactory.create(LT(1));
4690                        astFactory.addASTChild(currentAST, tmp97_AST);
4691                        match(SEMI);
4692                        if ( inputState.guessing==0 ) {
4693                                s1_AST.setType(SUPER_CTOR_CALL);
4694                        }
4695                }
4696                else {
4697                        throw new NoViableAltException(LT(1), getFilename());
4698                }
4699                
4700                }
4701                explicitConstructorInvocation_AST = (AST)currentAST.root;
4702                returnAST = explicitConstructorInvocation_AST;
4703        }
4704        
4705        public final void statement() throws RecognitionException, TokenStreamException {
4706                
4707                returnAST = null;
4708                ASTPair currentAST = new ASTPair();
4709                AST statement_AST = null;
4710                
4711                switch ( LA(1)) {
4712                case FINAL:
4713                case ABSTRACT:
4714                case STRICTFP:
4715                case SEMI:
4716                case LITERAL_void:
4717                case LITERAL_boolean:
4718                case LITERAL_byte:
4719                case LITERAL_char:
4720                case LITERAL_short:
4721                case LITERAL_int:
4722                case LITERAL_float:
4723                case LITERAL_long:
4724                case LITERAL_double:
4725                case IDENT:
4726                case LITERAL_private:
4727                case LITERAL_public:
4728                case LITERAL_protected:
4729                case LITERAL_static:
4730                case LITERAL_transient:
4731                case LITERAL_native:
4732                case LITERAL_synchronized:
4733                case LITERAL_volatile:
4734                case LITERAL_class:
4735                case LCURLY:
4736                case LPAREN:
4737                case LITERAL_this:
4738                case LITERAL_super:
4739                case LITERAL_if:
4740                case LITERAL_while:
4741                case LITERAL_do:
4742                case LITERAL_break:
4743                case LITERAL_continue:
4744                case LITERAL_return:
4745                case LITERAL_switch:
4746                case LITERAL_throw:
4747                case LITERAL_for:
4748                case LITERAL_default:
4749                case LITERAL_try:
4750                case PLUS:
4751                case MINUS:
4752                case INC:
4753                case DEC:
4754                case BNOT:
4755                case LNOT:
4756                case LITERAL_true:
4757                case LITERAL_false:
4758                case LITERAL_null:
4759                case LITERAL_new:
4760                case NUM_INT:
4761                case CHAR_LITERAL:
4762                case STRING_LITERAL:
4763                case NUM_FLOAT:
4764                case NUM_LONG:
4765                case NUM_DOUBLE:
4766                case AT:
4767                case LITERAL_record:
4768                {
4769                        traditionalStatement();
4770                        astFactory.addASTChild(currentAST, returnAST);
4771                        statement_AST = (AST)currentAST.root;
4772                        break;
4773                }
4774                case ASSERT:
4775                {
4776                        assertStatement();
4777                        astFactory.addASTChild(currentAST, returnAST);
4778                        statement_AST = (AST)currentAST.root;
4779                        break;
4780                }
4781                default:
4782                {
4783                        throw new NoViableAltException(LT(1), getFilename());
4784                }
4785                }
4786                returnAST = statement_AST;
4787        }
4788        
4789        public final void primaryExpression() throws RecognitionException, TokenStreamException {
4790                
4791                returnAST = null;
4792                ASTPair currentAST = new ASTPair();
4793                AST primaryExpression_AST = null;
4794                Token  lbt = null;
4795                AST lbt_AST = null;
4796                
4797                switch ( LA(1)) {
4798                case NUM_INT:
4799                case CHAR_LITERAL:
4800                case STRING_LITERAL:
4801                case NUM_FLOAT:
4802                case NUM_LONG:
4803                case NUM_DOUBLE:
4804                {
4805                        constant();
4806                        astFactory.addASTChild(currentAST, returnAST);
4807                        primaryExpression_AST = (AST)currentAST.root;
4808                        break;
4809                }
4810                case LITERAL_true:
4811                {
4812                        AST tmp98_AST = null;
4813                        tmp98_AST = astFactory.create(LT(1));
4814                        astFactory.addASTChild(currentAST, tmp98_AST);
4815                        match(LITERAL_true);
4816                        primaryExpression_AST = (AST)currentAST.root;
4817                        break;
4818                }
4819                case LITERAL_false:
4820                {
4821                        AST tmp99_AST = null;
4822                        tmp99_AST = astFactory.create(LT(1));
4823                        astFactory.addASTChild(currentAST, tmp99_AST);
4824                        match(LITERAL_false);
4825                        primaryExpression_AST = (AST)currentAST.root;
4826                        break;
4827                }
4828                case LITERAL_this:
4829                {
4830                        AST tmp100_AST = null;
4831                        tmp100_AST = astFactory.create(LT(1));
4832                        astFactory.addASTChild(currentAST, tmp100_AST);
4833                        match(LITERAL_this);
4834                        primaryExpression_AST = (AST)currentAST.root;
4835                        break;
4836                }
4837                case LITERAL_null:
4838                {
4839                        AST tmp101_AST = null;
4840                        tmp101_AST = astFactory.create(LT(1));
4841                        astFactory.addASTChild(currentAST, tmp101_AST);
4842                        match(LITERAL_null);
4843                        primaryExpression_AST = (AST)currentAST.root;
4844                        break;
4845                }
4846                case LITERAL_new:
4847                {
4848                        newExpression();
4849                        astFactory.addASTChild(currentAST, returnAST);
4850                        primaryExpression_AST = (AST)currentAST.root;
4851                        break;
4852                }
4853                case LPAREN:
4854                {
4855                        AST tmp102_AST = null;
4856                        tmp102_AST = astFactory.create(LT(1));
4857                        astFactory.addASTChild(currentAST, tmp102_AST);
4858                        match(LPAREN);
4859                        {
4860                        boolean synPredMatched393 = false;
4861                        if (((_tokenSet_19.member(LA(1))) && (_tokenSet_20.member(LA(2))))) {
4862                                int _m393 = mark();
4863                                synPredMatched393 = true;
4864                                inputState.guessing++;
4865                                try {
4866                                        {
4867                                        lambdaExpression();
4868                                        }
4869                                }
4870                                catch (RecognitionException pe) {
4871                                        synPredMatched393 = false;
4872                                }
4873                                rewind(_m393);
4874inputState.guessing--;
4875                        }
4876                        if ( synPredMatched393 ) {
4877                                lambdaExpression();
4878                                astFactory.addASTChild(currentAST, returnAST);
4879                        }
4880                        else if ((_tokenSet_16.member(LA(1))) && (_tokenSet_56.member(LA(2)))) {
4881                                assignmentExpression();
4882                                astFactory.addASTChild(currentAST, returnAST);
4883                        }
4884                        else {
4885                                throw new NoViableAltException(LT(1), getFilename());
4886                        }
4887                        
4888                        }
4889                        AST tmp103_AST = null;
4890                        tmp103_AST = astFactory.create(LT(1));
4891                        astFactory.addASTChild(currentAST, tmp103_AST);
4892                        match(RPAREN);
4893                        primaryExpression_AST = (AST)currentAST.root;
4894                        break;
4895                }
4896                case LITERAL_super:
4897                {
4898                        AST tmp104_AST = null;
4899                        tmp104_AST = astFactory.create(LT(1));
4900                        astFactory.addASTChild(currentAST, tmp104_AST);
4901                        match(LITERAL_super);
4902                        primaryExpression_AST = (AST)currentAST.root;
4903                        break;
4904                }
4905                default:
4906                        boolean synPredMatched390 = false;
4907                        if (((_tokenSet_12.member(LA(1))) && (_tokenSet_22.member(LA(2))))) {
4908                                int _m390 = mark();
4909                                synPredMatched390 = true;
4910                                inputState.guessing++;
4911                                try {
4912                                        {
4913                                        typeSpec(false);
4914                                        match(DOUBLE_COLON);
4915                                        }
4916                                }
4917                                catch (RecognitionException pe) {
4918                                        synPredMatched390 = false;
4919                                }
4920                                rewind(_m390);
4921inputState.guessing--;
4922                        }
4923                        if ( synPredMatched390 ) {
4924                                typeSpec(false);
4925                                astFactory.addASTChild(currentAST, returnAST);
4926                                primaryExpression_AST = (AST)currentAST.root;
4927                        }
4928                        else if ((LA(1)==IDENT||LA(1)==LITERAL_record) && (_tokenSet_22.member(LA(2)))) {
4929                                id();
4930                                astFactory.addASTChild(currentAST, returnAST);
4931                                primaryExpression_AST = (AST)currentAST.root;
4932                        }
4933                        else if (((LA(1) >= LITERAL_void && LA(1) <= LITERAL_double)) && (_tokenSet_22.member(LA(2)))) {
4934                                builtInType();
4935                                astFactory.addASTChild(currentAST, returnAST);
4936                                {
4937                                _loop395:
4938                                do {
4939                                        if ((LA(1)==LBRACK) && (LA(2)==RBRACK)) {
4940                                                lbt = LT(1);
4941                                                lbt_AST = astFactory.create(lbt);
4942                                                astFactory.makeASTRoot(currentAST, lbt_AST);
4943                                                match(LBRACK);
4944                                                if ( inputState.guessing==0 ) {
4945                                                        lbt_AST.setType(ARRAY_DECLARATOR);
4946                                                }
4947                                                AST tmp105_AST = null;
4948                                                tmp105_AST = astFactory.create(LT(1));
4949                                                astFactory.addASTChild(currentAST, tmp105_AST);
4950                                                match(RBRACK);
4951                                        }
4952                                        else {
4953                                                break _loop395;
4954                                        }
4955                                        
4956                                } while (true);
4957                                }
4958                                {
4959                                if ((LA(1)==DOT) && (LA(2)==LITERAL_class)) {
4960                                        AST tmp106_AST = null;
4961                                        tmp106_AST = astFactory.create(LT(1));
4962                                        astFactory.makeASTRoot(currentAST, tmp106_AST);
4963                                        match(DOT);
4964                                        AST tmp107_AST = null;
4965                                        tmp107_AST = astFactory.create(LT(1));
4966                                        astFactory.addASTChild(currentAST, tmp107_AST);
4967                                        match(LITERAL_class);
4968                                }
4969                                else if ((_tokenSet_22.member(LA(1))) && (_tokenSet_57.member(LA(2)))) {
4970                                }
4971                                else {
4972                                        throw new NoViableAltException(LT(1), getFilename());
4973                                }
4974                                
4975                                }
4976                                primaryExpression_AST = (AST)currentAST.root;
4977                        }
4978                else {
4979                        throw new NoViableAltException(LT(1), getFilename());
4980                }
4981                }
4982                returnAST = primaryExpression_AST;
4983        }
4984        
4985/** Declaration of a variable.  This can be a class/instance variable,
4986 *   or a local variable in a method.
4987    @param mods declaration mods.
4988    @param t variable declaration type.
4989    @throws RecognitionException if recognition problem occurs.
4990    @throws TokenStreamException if problem occurs while generating a stream of tokens.
4991 * It can also include possible initialization.
4992 */
4993        public final void variableDeclarator(
4994                AST mods, AST t
4995        ) throws RecognitionException, TokenStreamException {
4996                
4997                returnAST = null;
4998                ASTPair currentAST = new ASTPair();
4999                AST variableDeclarator_AST = null;
5000                AST id_AST = null;
5001                AST d_AST = null;
5002                AST v_AST = null;
5003                
5004                id();
5005                id_AST = (AST)returnAST;
5006                declaratorBrackets(t);
5007                d_AST = (AST)returnAST;
5008                varInitializer();
5009                v_AST = (AST)returnAST;
5010                if ( inputState.guessing==0 ) {
5011                        variableDeclarator_AST = (AST)currentAST.root;
5012                        variableDeclarator_AST = (AST)astFactory.make( (new ASTArray(5)).add(astFactory.create(VARIABLE_DEF,"VARIABLE_DEF")).add(mods).add((AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE,"TYPE")).add(d_AST))).add(id_AST).add(v_AST));
5013                        currentAST.root = variableDeclarator_AST;
5014                        currentAST.child = variableDeclarator_AST!=null &&variableDeclarator_AST.getFirstChild()!=null ?
5015                                variableDeclarator_AST.getFirstChild() : variableDeclarator_AST;
5016                        currentAST.advanceChildToEnd();
5017                }
5018                returnAST = variableDeclarator_AST;
5019        }
5020        
5021        public final void varInitializer() throws RecognitionException, TokenStreamException {
5022                
5023                returnAST = null;
5024                ASTPair currentAST = new ASTPair();
5025                AST varInitializer_AST = null;
5026                
5027                {
5028                switch ( LA(1)) {
5029                case ASSIGN:
5030                {
5031                        AST tmp108_AST = null;
5032                        tmp108_AST = astFactory.create(LT(1));
5033                        astFactory.makeASTRoot(currentAST, tmp108_AST);
5034                        match(ASSIGN);
5035                        initializer();
5036                        astFactory.addASTChild(currentAST, returnAST);
5037                        break;
5038                }
5039                case FINAL:
5040                case ABSTRACT:
5041                case STRICTFP:
5042                case SEMI:
5043                case LITERAL_void:
5044                case LITERAL_boolean:
5045                case LITERAL_byte:
5046                case LITERAL_char:
5047                case LITERAL_short:
5048                case LITERAL_int:
5049                case LITERAL_float:
5050                case LITERAL_long:
5051                case LITERAL_double:
5052                case IDENT:
5053                case LITERAL_private:
5054                case LITERAL_public:
5055                case LITERAL_protected:
5056                case LITERAL_static:
5057                case LITERAL_transient:
5058                case LITERAL_native:
5059                case LITERAL_synchronized:
5060                case LITERAL_volatile:
5061                case LITERAL_class:
5062                case LITERAL_interface:
5063                case LCURLY:
5064                case RCURLY:
5065                case COMMA:
5066                case RPAREN:
5067                case LITERAL_default:
5068                case LT:
5069                case ENUM:
5070                case AT:
5071                case LITERAL_record:
5072                {
5073                        break;
5074                }
5075                default:
5076                {
5077                        throw new NoViableAltException(LT(1), getFilename());
5078                }
5079                }
5080                }
5081                varInitializer_AST = (AST)currentAST.root;
5082                returnAST = varInitializer_AST;
5083        }
5084        
5085        public final void initializer() throws RecognitionException, TokenStreamException {
5086                
5087                returnAST = null;
5088                ASTPair currentAST = new ASTPair();
5089                AST initializer_AST = null;
5090                
5091                switch ( LA(1)) {
5092                case LITERAL_void:
5093                case LITERAL_boolean:
5094                case LITERAL_byte:
5095                case LITERAL_char:
5096                case LITERAL_short:
5097                case LITERAL_int:
5098                case LITERAL_float:
5099                case LITERAL_long:
5100                case LITERAL_double:
5101                case IDENT:
5102                case LPAREN:
5103                case LITERAL_this:
5104                case LITERAL_super:
5105                case PLUS:
5106                case MINUS:
5107                case INC:
5108                case DEC:
5109                case BNOT:
5110                case LNOT:
5111                case LITERAL_true:
5112                case LITERAL_false:
5113                case LITERAL_null:
5114                case LITERAL_new:
5115                case NUM_INT:
5116                case CHAR_LITERAL:
5117                case STRING_LITERAL:
5118                case NUM_FLOAT:
5119                case NUM_LONG:
5120                case NUM_DOUBLE:
5121                case AT:
5122                case LITERAL_record:
5123                {
5124                        expression();
5125                        astFactory.addASTChild(currentAST, returnAST);
5126                        initializer_AST = (AST)currentAST.root;
5127                        break;
5128                }
5129                case LCURLY:
5130                {
5131                        arrayInitializer();
5132                        astFactory.addASTChild(currentAST, returnAST);
5133                        initializer_AST = (AST)currentAST.root;
5134                        break;
5135                }
5136                default:
5137                {
5138                        throw new NoViableAltException(LT(1), getFilename());
5139                }
5140                }
5141                returnAST = initializer_AST;
5142        }
5143        
5144        public final void arrayInitializer() throws RecognitionException, TokenStreamException {
5145                
5146                returnAST = null;
5147                ASTPair currentAST = new ASTPair();
5148                AST arrayInitializer_AST = null;
5149                Token  lc = null;
5150                AST lc_AST = null;
5151                
5152                lc = LT(1);
5153                lc_AST = astFactory.create(lc);
5154                astFactory.makeASTRoot(currentAST, lc_AST);
5155                match(LCURLY);
5156                if ( inputState.guessing==0 ) {
5157                        lc_AST.setType(ARRAY_INIT);
5158                }
5159                {
5160                switch ( LA(1)) {
5161                case LITERAL_void:
5162                case LITERAL_boolean:
5163                case LITERAL_byte:
5164                case LITERAL_char:
5165                case LITERAL_short:
5166                case LITERAL_int:
5167                case LITERAL_float:
5168                case LITERAL_long:
5169                case LITERAL_double:
5170                case IDENT:
5171                case LCURLY:
5172                case LPAREN:
5173                case LITERAL_this:
5174                case LITERAL_super:
5175                case PLUS:
5176                case MINUS:
5177                case INC:
5178                case DEC:
5179                case BNOT:
5180                case LNOT:
5181                case LITERAL_true:
5182                case LITERAL_false:
5183                case LITERAL_null:
5184                case LITERAL_new:
5185                case NUM_INT:
5186                case CHAR_LITERAL:
5187                case STRING_LITERAL:
5188                case NUM_FLOAT:
5189                case NUM_LONG:
5190                case NUM_DOUBLE:
5191                case AT:
5192                case LITERAL_record:
5193                {
5194                        initializer();
5195                        astFactory.addASTChild(currentAST, returnAST);
5196                        {
5197                        _loop202:
5198                        do {
5199                                if ((LA(1)==COMMA) && (_tokenSet_14.member(LA(2)))) {
5200                                        AST tmp109_AST = null;
5201                                        tmp109_AST = astFactory.create(LT(1));
5202                                        astFactory.addASTChild(currentAST, tmp109_AST);
5203                                        match(COMMA);
5204                                        initializer();
5205                                        astFactory.addASTChild(currentAST, returnAST);
5206                                }
5207                                else {
5208                                        break _loop202;
5209                                }
5210                                
5211                        } while (true);
5212                        }
5213                        break;
5214                }
5215                case RCURLY:
5216                case COMMA:
5217                {
5218                        break;
5219                }
5220                default:
5221                {
5222                        throw new NoViableAltException(LT(1), getFilename());
5223                }
5224                }
5225                }
5226                {
5227                switch ( LA(1)) {
5228                case COMMA:
5229                {
5230                        AST tmp110_AST = null;
5231                        tmp110_AST = astFactory.create(LT(1));
5232                        astFactory.addASTChild(currentAST, tmp110_AST);
5233                        match(COMMA);
5234                        break;
5235                }
5236                case RCURLY:
5237                {
5238                        break;
5239                }
5240                default:
5241                {
5242                        throw new NoViableAltException(LT(1), getFilename());
5243                }
5244                }
5245                }
5246                AST tmp111_AST = null;
5247                tmp111_AST = astFactory.create(LT(1));
5248                astFactory.addASTChild(currentAST, tmp111_AST);
5249                match(RCURLY);
5250                arrayInitializer_AST = (AST)currentAST.root;
5251                returnAST = arrayInitializer_AST;
5252        }
5253        
5254        public final void expression() throws RecognitionException, TokenStreamException {
5255                
5256                returnAST = null;
5257                ASTPair currentAST = new ASTPair();
5258                AST expression_AST = null;
5259                
5260                boolean synPredMatched302 = false;
5261                if (((_tokenSet_19.member(LA(1))) && (_tokenSet_20.member(LA(2))))) {
5262                        int _m302 = mark();
5263                        synPredMatched302 = true;
5264                        inputState.guessing++;
5265                        try {
5266                                {
5267                                lambdaExpression();
5268                                }
5269                        }
5270                        catch (RecognitionException pe) {
5271                                synPredMatched302 = false;
5272                        }
5273                        rewind(_m302);
5274inputState.guessing--;
5275                }
5276                if ( synPredMatched302 ) {
5277                        lambdaExpression();
5278                        astFactory.addASTChild(currentAST, returnAST);
5279                        expression_AST = (AST)currentAST.root;
5280                }
5281                else if (((_tokenSet_16.member(LA(1))) && (_tokenSet_22.member(LA(2))))&&(LA(1)!=RPAREN)) {
5282                        assignmentExpression();
5283                        astFactory.addASTChild(currentAST, returnAST);
5284                        if ( inputState.guessing==0 ) {
5285                                expression_AST = (AST)currentAST.root;
5286                                expression_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(EXPR,"EXPR")).add(expression_AST));
5287                                currentAST.root = expression_AST;
5288                                currentAST.child = expression_AST!=null &&expression_AST.getFirstChild()!=null ?
5289                                        expression_AST.getFirstChild() : expression_AST;
5290                                currentAST.advanceChildToEnd();
5291                        }
5292                        expression_AST = (AST)currentAST.root;
5293                }
5294                else {
5295                        throw new NoViableAltException(LT(1), getFilename());
5296                }
5297                
5298                returnAST = expression_AST;
5299        }
5300        
5301        public final void parameterDeclaration() throws RecognitionException, TokenStreamException {
5302                
5303                returnAST = null;
5304                ASTPair currentAST = new ASTPair();
5305                AST parameterDeclaration_AST = null;
5306                AST pm_AST = null;
5307                AST t_AST = null;
5308                AST id_AST = null;
5309                AST pd_AST = null;
5310                
5311                parameterModifier();
5312                pm_AST = (AST)returnAST;
5313                {
5314                if ((_tokenSet_12.member(LA(1))) && (_tokenSet_58.member(LA(2)))) {
5315                        typeSpec(false);
5316                        t_AST = (AST)returnAST;
5317                }
5318                else if ((_tokenSet_59.member(LA(1))) && (_tokenSet_60.member(LA(2)))) {
5319                }
5320                else {
5321                        throw new NoViableAltException(LT(1), getFilename());
5322                }
5323                
5324                }
5325                parameterIdent();
5326                id_AST = (AST)returnAST;
5327                declaratorBrackets(t_AST);
5328                pd_AST = (AST)returnAST;
5329                if ( inputState.guessing==0 ) {
5330                        parameterDeclaration_AST = (AST)currentAST.root;
5331                        parameterDeclaration_AST = (AST)astFactory.make( (new ASTArray(4)).add(astFactory.create(PARAMETER_DEF,"PARAMETER_DEF")).add(pm_AST).add((AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE,"TYPE")).add(pd_AST))).add(id_AST));
5332                        currentAST.root = parameterDeclaration_AST;
5333                        currentAST.child = parameterDeclaration_AST!=null &&parameterDeclaration_AST.getFirstChild()!=null ?
5334                                parameterDeclaration_AST.getFirstChild() : parameterDeclaration_AST;
5335                        currentAST.advanceChildToEnd();
5336                }
5337                returnAST = parameterDeclaration_AST;
5338        }
5339        
5340        public final void variableLengthParameterDeclaration() throws RecognitionException, TokenStreamException {
5341                
5342                returnAST = null;
5343                ASTPair currentAST = new ASTPair();
5344                AST variableLengthParameterDeclaration_AST = null;
5345                AST pm_AST = null;
5346                AST t_AST = null;
5347                Token  td = null;
5348                AST td_AST = null;
5349                AST id_AST = null;
5350                AST pd_AST = null;
5351                
5352                parameterModifier();
5353                pm_AST = (AST)returnAST;
5354                variableLengthParameterTypeSpec();
5355                t_AST = (AST)returnAST;
5356                td = LT(1);
5357                td_AST = astFactory.create(td);
5358                match(ELLIPSIS);
5359                id();
5360                id_AST = (AST)returnAST;
5361                declaratorBrackets(t_AST);
5362                pd_AST = (AST)returnAST;
5363                if ( inputState.guessing==0 ) {
5364                        variableLengthParameterDeclaration_AST = (AST)currentAST.root;
5365                        variableLengthParameterDeclaration_AST = (AST)astFactory.make( (new ASTArray(5)).add(astFactory.create(PARAMETER_DEF,"PARAMETER_DEF")).add(pm_AST).add((AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE,"TYPE")).add(pd_AST))).add(td_AST).add(id_AST));
5366                        currentAST.root = variableLengthParameterDeclaration_AST;
5367                        currentAST.child = variableLengthParameterDeclaration_AST!=null &&variableLengthParameterDeclaration_AST.getFirstChild()!=null ?
5368                                variableLengthParameterDeclaration_AST.getFirstChild() : variableLengthParameterDeclaration_AST;
5369                        currentAST.advanceChildToEnd();
5370                }
5371                returnAST = variableLengthParameterDeclaration_AST;
5372        }
5373        
5374        public final void parameterIdent() throws RecognitionException, TokenStreamException {
5375                
5376                returnAST = null;
5377                ASTPair currentAST = new ASTPair();
5378                AST parameterIdent_AST = null;
5379                
5380                switch ( LA(1)) {
5381                case LITERAL_this:
5382                {
5383                        AST tmp112_AST = null;
5384                        tmp112_AST = astFactory.create(LT(1));
5385                        astFactory.addASTChild(currentAST, tmp112_AST);
5386                        match(LITERAL_this);
5387                        parameterIdent_AST = (AST)currentAST.root;
5388                        break;
5389                }
5390                case IDENT:
5391                case LITERAL_record:
5392                {
5393                        {
5394                        id();
5395                        astFactory.addASTChild(currentAST, returnAST);
5396                        {
5397                        switch ( LA(1)) {
5398                        case DOT:
5399                        {
5400                                AST tmp113_AST = null;
5401                                tmp113_AST = astFactory.create(LT(1));
5402                                astFactory.makeASTRoot(currentAST, tmp113_AST);
5403                                match(DOT);
5404                                AST tmp114_AST = null;
5405                                tmp114_AST = astFactory.create(LT(1));
5406                                astFactory.addASTChild(currentAST, tmp114_AST);
5407                                match(LITERAL_this);
5408                                break;
5409                        }
5410                        case LBRACK:
5411                        case COMMA:
5412                        case RPAREN:
5413                        case AT:
5414                        {
5415                                break;
5416                        }
5417                        default:
5418                        {
5419                                throw new NoViableAltException(LT(1), getFilename());
5420                        }
5421                        }
5422                        }
5423                        }
5424                        parameterIdent_AST = (AST)currentAST.root;
5425                        break;
5426                }
5427                default:
5428                {
5429                        throw new NoViableAltException(LT(1), getFilename());
5430                }
5431                }
5432                returnAST = parameterIdent_AST;
5433        }
5434        
5435        public final void catchParameterDeclaration() throws RecognitionException, TokenStreamException {
5436                
5437                returnAST = null;
5438                ASTPair currentAST = new ASTPair();
5439                AST catchParameterDeclaration_AST = null;
5440                AST pm_AST = null;
5441                AST mct_AST = null;
5442                AST id_AST = null;
5443                
5444                parameterModifier();
5445                pm_AST = (AST)returnAST;
5446                multiCatchTypes();
5447                mct_AST = (AST)returnAST;
5448                id();
5449                id_AST = (AST)returnAST;
5450                if ( inputState.guessing==0 ) {
5451                        catchParameterDeclaration_AST = (AST)currentAST.root;
5452                        catchParameterDeclaration_AST =
5453                        (AST)astFactory.make( (new ASTArray(4)).add(astFactory.create(PARAMETER_DEF,"PARAMETER_DEF")).add(pm_AST).add((AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE,"TYPE")).add(mct_AST))).add(id_AST));
5454                        currentAST.root = catchParameterDeclaration_AST;
5455                        currentAST.child = catchParameterDeclaration_AST!=null &&catchParameterDeclaration_AST.getFirstChild()!=null ?
5456                                catchParameterDeclaration_AST.getFirstChild() : catchParameterDeclaration_AST;
5457                        currentAST.advanceChildToEnd();
5458                }
5459                returnAST = catchParameterDeclaration_AST;
5460        }
5461        
5462        public final void multiCatchTypes() throws RecognitionException, TokenStreamException {
5463                
5464                returnAST = null;
5465                ASTPair currentAST = new ASTPair();
5466                AST multiCatchTypes_AST = null;
5467                
5468                typeSpec(false);
5469                astFactory.addASTChild(currentAST, returnAST);
5470                {
5471                _loop236:
5472                do {
5473                        if ((LA(1)==BOR)) {
5474                                AST tmp115_AST = null;
5475                                tmp115_AST = astFactory.create(LT(1));
5476                                astFactory.makeASTRoot(currentAST, tmp115_AST);
5477                                match(BOR);
5478                                typeSpec(false);
5479                                astFactory.addASTChild(currentAST, returnAST);
5480                        }
5481                        else {
5482                                break _loop236;
5483                        }
5484                        
5485                } while (true);
5486                }
5487                multiCatchTypes_AST = (AST)currentAST.root;
5488                returnAST = multiCatchTypes_AST;
5489        }
5490        
5491        public final void traditionalStatement() throws RecognitionException, TokenStreamException {
5492                
5493                returnAST = null;
5494                ASTPair currentAST = new ASTPair();
5495                AST traditionalStatement_AST = null;
5496                AST m_AST = null;
5497                Token  c = null;
5498                AST c_AST = null;
5499                Token  w = null;
5500                AST w_AST = null;
5501                Token  s = null;
5502                AST s_AST = null;
5503                
5504                switch ( LA(1)) {
5505                case LCURLY:
5506                {
5507                        compoundStatement();
5508                        astFactory.addASTChild(currentAST, returnAST);
5509                        traditionalStatement_AST = (AST)currentAST.root;
5510                        break;
5511                }
5512                case LITERAL_if:
5513                {
5514                        AST tmp116_AST = null;
5515                        tmp116_AST = astFactory.create(LT(1));
5516                        astFactory.makeASTRoot(currentAST, tmp116_AST);
5517                        match(LITERAL_if);
5518                        AST tmp117_AST = null;
5519                        tmp117_AST = astFactory.create(LT(1));
5520                        astFactory.addASTChild(currentAST, tmp117_AST);
5521                        match(LPAREN);
5522                        expression();
5523                        astFactory.addASTChild(currentAST, returnAST);
5524                        AST tmp118_AST = null;
5525                        tmp118_AST = astFactory.create(LT(1));
5526                        astFactory.addASTChild(currentAST, tmp118_AST);
5527                        match(RPAREN);
5528                        statement();
5529                        astFactory.addASTChild(currentAST, returnAST);
5530                        {
5531                        if ((LA(1)==LITERAL_else) && (_tokenSet_44.member(LA(2)))) {
5532                                elseStatement();
5533                                astFactory.addASTChild(currentAST, returnAST);
5534                        }
5535                        else if ((_tokenSet_61.member(LA(1))) && (_tokenSet_62.member(LA(2)))) {
5536                        }
5537                        else {
5538                                throw new NoViableAltException(LT(1), getFilename());
5539                        }
5540                        
5541                        }
5542                        traditionalStatement_AST = (AST)currentAST.root;
5543                        break;
5544                }
5545                case LITERAL_for:
5546                {
5547                        forStatement();
5548                        astFactory.addASTChild(currentAST, returnAST);
5549                        traditionalStatement_AST = (AST)currentAST.root;
5550                        break;
5551                }
5552                case LITERAL_while:
5553                {
5554                        AST tmp119_AST = null;
5555                        tmp119_AST = astFactory.create(LT(1));
5556                        astFactory.makeASTRoot(currentAST, tmp119_AST);
5557                        match(LITERAL_while);
5558                        AST tmp120_AST = null;
5559                        tmp120_AST = astFactory.create(LT(1));
5560                        astFactory.addASTChild(currentAST, tmp120_AST);
5561                        match(LPAREN);
5562                        expression();
5563                        astFactory.addASTChild(currentAST, returnAST);
5564                        AST tmp121_AST = null;
5565                        tmp121_AST = astFactory.create(LT(1));
5566                        astFactory.addASTChild(currentAST, tmp121_AST);
5567                        match(RPAREN);
5568                        statement();
5569                        astFactory.addASTChild(currentAST, returnAST);
5570                        traditionalStatement_AST = (AST)currentAST.root;
5571                        break;
5572                }
5573                case LITERAL_do:
5574                {
5575                        AST tmp122_AST = null;
5576                        tmp122_AST = astFactory.create(LT(1));
5577                        astFactory.makeASTRoot(currentAST, tmp122_AST);
5578                        match(LITERAL_do);
5579                        statement();
5580                        astFactory.addASTChild(currentAST, returnAST);
5581                        w = LT(1);
5582                        w_AST = astFactory.create(w);
5583                        astFactory.addASTChild(currentAST, w_AST);
5584                        match(LITERAL_while);
5585                        if ( inputState.guessing==0 ) {
5586                                w_AST.setType(DO_WHILE);
5587                        }
5588                        AST tmp123_AST = null;
5589                        tmp123_AST = astFactory.create(LT(1));
5590                        astFactory.addASTChild(currentAST, tmp123_AST);
5591                        match(LPAREN);
5592                        expression();
5593                        astFactory.addASTChild(currentAST, returnAST);
5594                        AST tmp124_AST = null;
5595                        tmp124_AST = astFactory.create(LT(1));
5596                        astFactory.addASTChild(currentAST, tmp124_AST);
5597                        match(RPAREN);
5598                        AST tmp125_AST = null;
5599                        tmp125_AST = astFactory.create(LT(1));
5600                        astFactory.addASTChild(currentAST, tmp125_AST);
5601                        match(SEMI);
5602                        traditionalStatement_AST = (AST)currentAST.root;
5603                        break;
5604                }
5605                case LITERAL_break:
5606                {
5607                        AST tmp126_AST = null;
5608                        tmp126_AST = astFactory.create(LT(1));
5609                        astFactory.makeASTRoot(currentAST, tmp126_AST);
5610                        match(LITERAL_break);
5611                        {
5612                        switch ( LA(1)) {
5613                        case IDENT:
5614                        case LITERAL_record:
5615                        {
5616                                id();
5617                                astFactory.addASTChild(currentAST, returnAST);
5618                                break;
5619                        }
5620                        case SEMI:
5621                        {
5622                                break;
5623                        }
5624                        default:
5625                        {
5626                                throw new NoViableAltException(LT(1), getFilename());
5627                        }
5628                        }
5629                        }
5630                        AST tmp127_AST = null;
5631                        tmp127_AST = astFactory.create(LT(1));
5632                        astFactory.addASTChild(currentAST, tmp127_AST);
5633                        match(SEMI);
5634                        traditionalStatement_AST = (AST)currentAST.root;
5635                        break;
5636                }
5637                case LITERAL_continue:
5638                {
5639                        AST tmp128_AST = null;
5640                        tmp128_AST = astFactory.create(LT(1));
5641                        astFactory.makeASTRoot(currentAST, tmp128_AST);
5642                        match(LITERAL_continue);
5643                        {
5644                        switch ( LA(1)) {
5645                        case IDENT:
5646                        case LITERAL_record:
5647                        {
5648                                id();
5649                                astFactory.addASTChild(currentAST, returnAST);
5650                                break;
5651                        }
5652                        case SEMI:
5653                        {
5654                                break;
5655                        }
5656                        default:
5657                        {
5658                                throw new NoViableAltException(LT(1), getFilename());
5659                        }
5660                        }
5661                        }
5662                        AST tmp129_AST = null;
5663                        tmp129_AST = astFactory.create(LT(1));
5664                        astFactory.addASTChild(currentAST, tmp129_AST);
5665                        match(SEMI);
5666                        traditionalStatement_AST = (AST)currentAST.root;
5667                        break;
5668                }
5669                case LITERAL_return:
5670                {
5671                        AST tmp130_AST = null;
5672                        tmp130_AST = astFactory.create(LT(1));
5673                        astFactory.makeASTRoot(currentAST, tmp130_AST);
5674                        match(LITERAL_return);
5675                        {
5676                        switch ( LA(1)) {
5677                        case LITERAL_void:
5678                        case LITERAL_boolean:
5679                        case LITERAL_byte:
5680                        case LITERAL_char:
5681                        case LITERAL_short:
5682                        case LITERAL_int:
5683                        case LITERAL_float:
5684                        case LITERAL_long:
5685                        case LITERAL_double:
5686                        case IDENT:
5687                        case LPAREN:
5688                        case LITERAL_this:
5689                        case LITERAL_super:
5690                        case PLUS:
5691                        case MINUS:
5692                        case INC:
5693                        case DEC:
5694                        case BNOT:
5695                        case LNOT:
5696                        case LITERAL_true:
5697                        case LITERAL_false:
5698                        case LITERAL_null:
5699                        case LITERAL_new:
5700                        case NUM_INT:
5701                        case CHAR_LITERAL:
5702                        case STRING_LITERAL:
5703                        case NUM_FLOAT:
5704                        case NUM_LONG:
5705                        case NUM_DOUBLE:
5706                        case AT:
5707                        case LITERAL_record:
5708                        {
5709                                expression();
5710                                astFactory.addASTChild(currentAST, returnAST);
5711                                break;
5712                        }
5713                        case SEMI:
5714                        {
5715                                break;
5716                        }
5717                        default:
5718                        {
5719                                throw new NoViableAltException(LT(1), getFilename());
5720                        }
5721                        }
5722                        }
5723                        AST tmp131_AST = null;
5724                        tmp131_AST = astFactory.create(LT(1));
5725                        astFactory.addASTChild(currentAST, tmp131_AST);
5726                        match(SEMI);
5727                        traditionalStatement_AST = (AST)currentAST.root;
5728                        break;
5729                }
5730                case LITERAL_switch:
5731                {
5732                        AST tmp132_AST = null;
5733                        tmp132_AST = astFactory.create(LT(1));
5734                        astFactory.makeASTRoot(currentAST, tmp132_AST);
5735                        match(LITERAL_switch);
5736                        AST tmp133_AST = null;
5737                        tmp133_AST = astFactory.create(LT(1));
5738                        astFactory.addASTChild(currentAST, tmp133_AST);
5739                        match(LPAREN);
5740                        expression();
5741                        astFactory.addASTChild(currentAST, returnAST);
5742                        AST tmp134_AST = null;
5743                        tmp134_AST = astFactory.create(LT(1));
5744                        astFactory.addASTChild(currentAST, tmp134_AST);
5745                        match(RPAREN);
5746                        AST tmp135_AST = null;
5747                        tmp135_AST = astFactory.create(LT(1));
5748                        astFactory.addASTChild(currentAST, tmp135_AST);
5749                        match(LCURLY);
5750                        {
5751                        _loop255:
5752                        do {
5753                                if ((LA(1)==LITERAL_case||LA(1)==LITERAL_default)) {
5754                                        casesGroup();
5755                                        astFactory.addASTChild(currentAST, returnAST);
5756                                }
5757                                else {
5758                                        break _loop255;
5759                                }
5760                                
5761                        } while (true);
5762                        }
5763                        AST tmp136_AST = null;
5764                        tmp136_AST = astFactory.create(LT(1));
5765                        astFactory.addASTChild(currentAST, tmp136_AST);
5766                        match(RCURLY);
5767                        traditionalStatement_AST = (AST)currentAST.root;
5768                        break;
5769                }
5770                case LITERAL_try:
5771                {
5772                        tryBlock();
5773                        astFactory.addASTChild(currentAST, returnAST);
5774                        traditionalStatement_AST = (AST)currentAST.root;
5775                        break;
5776                }
5777                case LITERAL_throw:
5778                {
5779                        AST tmp137_AST = null;
5780                        tmp137_AST = astFactory.create(LT(1));
5781                        astFactory.makeASTRoot(currentAST, tmp137_AST);
5782                        match(LITERAL_throw);
5783                        expression();
5784                        astFactory.addASTChild(currentAST, returnAST);
5785                        AST tmp138_AST = null;
5786                        tmp138_AST = astFactory.create(LT(1));
5787                        astFactory.addASTChild(currentAST, tmp138_AST);
5788                        match(SEMI);
5789                        traditionalStatement_AST = (AST)currentAST.root;
5790                        break;
5791                }
5792                case SEMI:
5793                {
5794                        s = LT(1);
5795                        s_AST = astFactory.create(s);
5796                        astFactory.addASTChild(currentAST, s_AST);
5797                        match(SEMI);
5798                        if ( inputState.guessing==0 ) {
5799                                s_AST.setType(EMPTY_STAT);
5800                        }
5801                        traditionalStatement_AST = (AST)currentAST.root;
5802                        break;
5803                }
5804                default:
5805                        boolean synPredMatched245 = false;
5806                        if (((_tokenSet_63.member(LA(1))) && (_tokenSet_64.member(LA(2))))) {
5807                                int _m245 = mark();
5808                                synPredMatched245 = true;
5809                                inputState.guessing++;
5810                                try {
5811                                        {
5812                                        declaration();
5813                                        }
5814                                }
5815                                catch (RecognitionException pe) {
5816                                        synPredMatched245 = false;
5817                                }
5818                                rewind(_m245);
5819inputState.guessing--;
5820                        }
5821                        if ( synPredMatched245 ) {
5822                                declaration();
5823                                astFactory.addASTChild(currentAST, returnAST);
5824                                AST tmp139_AST = null;
5825                                tmp139_AST = astFactory.create(LT(1));
5826                                astFactory.addASTChild(currentAST, tmp139_AST);
5827                                match(SEMI);
5828                                traditionalStatement_AST = (AST)currentAST.root;
5829                        }
5830                        else if ((LA(1)==LITERAL_record) && (LA(2)==IDENT||LA(2)==LITERAL_record)) {
5831                                recordDefinition(null);
5832                                astFactory.addASTChild(currentAST, returnAST);
5833                                traditionalStatement_AST = (AST)currentAST.root;
5834                        }
5835                        else {
5836                                boolean synPredMatched248 = false;
5837                                if ((((_tokenSet_16.member(LA(1))) && (_tokenSet_65.member(LA(2))))&&(LA(2) != COLON))) {
5838                                        int _m248 = mark();
5839                                        synPredMatched248 = true;
5840                                        inputState.guessing++;
5841                                        try {
5842                                                {
5843                                                if (!(LA(2) != COLON))
5844                                                  throw new SemanticException("LA(2) != COLON");
5845                                                expression();
5846                                                {
5847                                                if ((LA(1)==SEMI)) {
5848                                                        match(SEMI);
5849                                                }
5850                                                else {
5851                                                }
5852                                                
5853                                                }
5854                                                }
5855                                        }
5856                                        catch (RecognitionException pe) {
5857                                                synPredMatched248 = false;
5858                                        }
5859                                        rewind(_m248);
5860inputState.guessing--;
5861                                }
5862                                if ( synPredMatched248 ) {
5863                                        expression();
5864                                        astFactory.addASTChild(currentAST, returnAST);
5865                                        {
5866                                        if ((LA(1)==SEMI) && (_tokenSet_61.member(LA(2)))) {
5867                                                AST tmp140_AST = null;
5868                                                tmp140_AST = astFactory.create(LT(1));
5869                                                astFactory.addASTChild(currentAST, tmp140_AST);
5870                                                match(SEMI);
5871                                        }
5872                                        else if ((_tokenSet_61.member(LA(1))) && (_tokenSet_62.member(LA(2)))) {
5873                                        }
5874                                        else {
5875                                                throw new NoViableAltException(LT(1), getFilename());
5876                                        }
5877                                        
5878                                        }
5879                                        traditionalStatement_AST = (AST)currentAST.root;
5880                                }
5881                                else if ((_tokenSet_66.member(LA(1))) && (_tokenSet_67.member(LA(2)))) {
5882                                        modifiers();
5883                                        m_AST = (AST)returnAST;
5884                                        classDefinition(m_AST);
5885                                        astFactory.addASTChild(currentAST, returnAST);
5886                                        traditionalStatement_AST = (AST)currentAST.root;
5887                                }
5888                                else if ((LA(1)==IDENT||LA(1)==LITERAL_record) && (LA(2)==COLON)) {
5889                                        id();
5890                                        astFactory.addASTChild(currentAST, returnAST);
5891                                        c = LT(1);
5892                                        c_AST = astFactory.create(c);
5893                                        astFactory.makeASTRoot(currentAST, c_AST);
5894                                        match(COLON);
5895                                        if ( inputState.guessing==0 ) {
5896                                                c_AST.setType(LABELED_STAT);
5897                                        }
5898                                        statement();
5899                                        astFactory.addASTChild(currentAST, returnAST);
5900                                        traditionalStatement_AST = (AST)currentAST.root;
5901                                }
5902                                else if ((LA(1)==LITERAL_synchronized) && (LA(2)==LPAREN)) {
5903                                        AST tmp141_AST = null;
5904                                        tmp141_AST = astFactory.create(LT(1));
5905                                        astFactory.makeASTRoot(currentAST, tmp141_AST);
5906                                        match(LITERAL_synchronized);
5907                                        AST tmp142_AST = null;
5908                                        tmp142_AST = astFactory.create(LT(1));
5909                                        astFactory.addASTChild(currentAST, tmp142_AST);
5910                                        match(LPAREN);
5911                                        expression();
5912                                        astFactory.addASTChild(currentAST, returnAST);
5913                                        AST tmp143_AST = null;
5914                                        tmp143_AST = astFactory.create(LT(1));
5915                                        astFactory.addASTChild(currentAST, tmp143_AST);
5916                                        match(RPAREN);
5917                                        compoundStatement();
5918                                        astFactory.addASTChild(currentAST, returnAST);
5919                                        traditionalStatement_AST = (AST)currentAST.root;
5920                                }
5921                        else {
5922                                throw new NoViableAltException(LT(1), getFilename());
5923                        }
5924                        }}
5925                        returnAST = traditionalStatement_AST;
5926                }
5927                
5928        public final void assertStatement() throws RecognitionException, TokenStreamException {
5929                
5930                returnAST = null;
5931                ASTPair currentAST = new ASTPair();
5932                AST assertStatement_AST = null;
5933                
5934                AST tmp144_AST = null;
5935                tmp144_AST = astFactory.create(LT(1));
5936                astFactory.makeASTRoot(currentAST, tmp144_AST);
5937                match(ASSERT);
5938                expression();
5939                astFactory.addASTChild(currentAST, returnAST);
5940                {
5941                switch ( LA(1)) {
5942                case COLON:
5943                {
5944                        AST tmp145_AST = null;
5945                        tmp145_AST = astFactory.create(LT(1));
5946                        astFactory.addASTChild(currentAST, tmp145_AST);
5947                        match(COLON);
5948                        expression();
5949                        astFactory.addASTChild(currentAST, returnAST);
5950                        break;
5951                }
5952                case SEMI:
5953                {
5954                        break;
5955                }
5956                default:
5957                {
5958                        throw new NoViableAltException(LT(1), getFilename());
5959                }
5960                }
5961                }
5962                AST tmp146_AST = null;
5963                tmp146_AST = astFactory.create(LT(1));
5964                astFactory.addASTChild(currentAST, tmp146_AST);
5965                match(SEMI);
5966                assertStatement_AST = (AST)currentAST.root;
5967                returnAST = assertStatement_AST;
5968        }
5969        
5970        public final void elseStatement() throws RecognitionException, TokenStreamException {
5971                
5972                returnAST = null;
5973                ASTPair currentAST = new ASTPair();
5974                AST elseStatement_AST = null;
5975                
5976                AST tmp147_AST = null;
5977                tmp147_AST = astFactory.create(LT(1));
5978                astFactory.makeASTRoot(currentAST, tmp147_AST);
5979                match(LITERAL_else);
5980                statement();
5981                astFactory.addASTChild(currentAST, returnAST);
5982                elseStatement_AST = (AST)currentAST.root;
5983                returnAST = elseStatement_AST;
5984        }
5985        
5986        public final void forStatement() throws RecognitionException, TokenStreamException {
5987                
5988                returnAST = null;
5989                ASTPair currentAST = new ASTPair();
5990                AST forStatement_AST = null;
5991                Token  f = null;
5992                AST f_AST = null;
5993                
5994                f = LT(1);
5995                f_AST = astFactory.create(f);
5996                astFactory.makeASTRoot(currentAST, f_AST);
5997                match(LITERAL_for);
5998                AST tmp148_AST = null;
5999                tmp148_AST = astFactory.create(LT(1));
6000                astFactory.addASTChild(currentAST, tmp148_AST);
6001                match(LPAREN);
6002                {
6003                boolean synPredMatched259 = false;
6004                if (((_tokenSet_68.member(LA(1))) && (_tokenSet_69.member(LA(2))))) {
6005                        int _m259 = mark();
6006                        synPredMatched259 = true;
6007                        inputState.guessing++;
6008                        try {
6009                                {
6010                                forInit();
6011                                match(SEMI);
6012                                }
6013                        }
6014                        catch (RecognitionException pe) {
6015                                synPredMatched259 = false;
6016                        }
6017                        rewind(_m259);
6018inputState.guessing--;
6019                }
6020                if ( synPredMatched259 ) {
6021                        traditionalForClause();
6022                        astFactory.addASTChild(currentAST, returnAST);
6023                }
6024                else if ((_tokenSet_63.member(LA(1))) && (_tokenSet_64.member(LA(2)))) {
6025                        forEachClause();
6026                        astFactory.addASTChild(currentAST, returnAST);
6027                }
6028                else {
6029                        throw new NoViableAltException(LT(1), getFilename());
6030                }
6031                
6032                }
6033                AST tmp149_AST = null;
6034                tmp149_AST = astFactory.create(LT(1));
6035                astFactory.addASTChild(currentAST, tmp149_AST);
6036                match(RPAREN);
6037                statement();
6038                astFactory.addASTChild(currentAST, returnAST);
6039                forStatement_AST = (AST)currentAST.root;
6040                returnAST = forStatement_AST;
6041        }
6042        
6043        public final void casesGroup() throws RecognitionException, TokenStreamException {
6044                
6045                returnAST = null;
6046                ASTPair currentAST = new ASTPair();
6047                AST casesGroup_AST = null;
6048                
6049                {
6050                int _cnt266=0;
6051                _loop266:
6052                do {
6053                        if ((LA(1)==LITERAL_case||LA(1)==LITERAL_default) && (_tokenSet_70.member(LA(2)))) {
6054                                aCase();
6055                                astFactory.addASTChild(currentAST, returnAST);
6056                        }
6057                        else {
6058                                if ( _cnt266>=1 ) { break _loop266; } else {throw new NoViableAltException(LT(1), getFilename());}
6059                        }
6060                        
6061                        _cnt266++;
6062                } while (true);
6063                }
6064                {
6065                if ((_tokenSet_44.member(LA(1))) && (_tokenSet_71.member(LA(2)))) {
6066                        caseSList();
6067                        astFactory.addASTChild(currentAST, returnAST);
6068                }
6069                else if ((_tokenSet_72.member(LA(1))) && (_tokenSet_61.member(LA(2)))) {
6070                }
6071                else {
6072                        throw new NoViableAltException(LT(1), getFilename());
6073                }
6074                
6075                }
6076                if ( inputState.guessing==0 ) {
6077                        casesGroup_AST = (AST)currentAST.root;
6078                        casesGroup_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(CASE_GROUP,"CASE_GROUP")).add(casesGroup_AST));
6079                        currentAST.root = casesGroup_AST;
6080                        currentAST.child = casesGroup_AST!=null &&casesGroup_AST.getFirstChild()!=null ?
6081                                casesGroup_AST.getFirstChild() : casesGroup_AST;
6082                        currentAST.advanceChildToEnd();
6083                }
6084                casesGroup_AST = (AST)currentAST.root;
6085                returnAST = casesGroup_AST;
6086        }
6087        
6088        public final void tryBlock() throws RecognitionException, TokenStreamException {
6089                
6090                returnAST = null;
6091                ASTPair currentAST = new ASTPair();
6092                AST tryBlock_AST = null;
6093                
6094                AST tmp150_AST = null;
6095                tmp150_AST = astFactory.create(LT(1));
6096                astFactory.makeASTRoot(currentAST, tmp150_AST);
6097                match(LITERAL_try);
6098                {
6099                switch ( LA(1)) {
6100                case LPAREN:
6101                {
6102                        resourceSpecification();
6103                        astFactory.addASTChild(currentAST, returnAST);
6104                        break;
6105                }
6106                case LCURLY:
6107                {
6108                        break;
6109                }
6110                default:
6111                {
6112                        throw new NoViableAltException(LT(1), getFilename());
6113                }
6114                }
6115                }
6116                compoundStatement();
6117                astFactory.addASTChild(currentAST, returnAST);
6118                {
6119                _loop284:
6120                do {
6121                        if ((LA(1)==LITERAL_catch)) {
6122                                handler();
6123                                astFactory.addASTChild(currentAST, returnAST);
6124                        }
6125                        else {
6126                                break _loop284;
6127                        }
6128                        
6129                } while (true);
6130                }
6131                {
6132                switch ( LA(1)) {
6133                case LITERAL_finally:
6134                {
6135                        finallyHandler();
6136                        astFactory.addASTChild(currentAST, returnAST);
6137                        break;
6138                }
6139                case FINAL:
6140                case ABSTRACT:
6141                case STRICTFP:
6142                case SEMI:
6143                case LITERAL_void:
6144                case LITERAL_boolean:
6145                case LITERAL_byte:
6146                case LITERAL_char:
6147                case LITERAL_short:
6148                case LITERAL_int:
6149                case LITERAL_float:
6150                case LITERAL_long:
6151                case LITERAL_double:
6152                case IDENT:
6153                case STAR:
6154                case LITERAL_private:
6155                case LITERAL_public:
6156                case LITERAL_protected:
6157                case LITERAL_static:
6158                case LITERAL_transient:
6159                case LITERAL_native:
6160                case LITERAL_synchronized:
6161                case LITERAL_volatile:
6162                case LITERAL_class:
6163                case LCURLY:
6164                case RCURLY:
6165                case LPAREN:
6166                case RPAREN:
6167                case LITERAL_this:
6168                case LITERAL_super:
6169                case COLON:
6170                case LITERAL_if:
6171                case LITERAL_while:
6172                case LITERAL_do:
6173                case LITERAL_break:
6174                case LITERAL_continue:
6175                case LITERAL_return:
6176                case LITERAL_switch:
6177                case LITERAL_throw:
6178                case LITERAL_for:
6179                case LITERAL_else:
6180                case LITERAL_case:
6181                case LITERAL_default:
6182                case LITERAL_try:
6183                case LT:
6184                case GT:
6185                case LE:
6186                case GE:
6187                case LITERAL_instanceof:
6188                case SL:
6189                case SR:
6190                case BSR:
6191                case PLUS:
6192                case MINUS:
6193                case DIV:
6194                case MOD:
6195                case INC:
6196                case DEC:
6197                case BNOT:
6198                case LNOT:
6199                case LITERAL_true:
6200                case LITERAL_false:
6201                case LITERAL_null:
6202                case LITERAL_new:
6203                case NUM_INT:
6204                case CHAR_LITERAL:
6205                case STRING_LITERAL:
6206                case NUM_FLOAT:
6207                case NUM_LONG:
6208                case NUM_DOUBLE:
6209                case ASSERT:
6210                case AT:
6211                case LITERAL_record:
6212                {
6213                        break;
6214                }
6215                default:
6216                {
6217                        throw new NoViableAltException(LT(1), getFilename());
6218                }
6219                }
6220                }
6221                tryBlock_AST = (AST)currentAST.root;
6222                returnAST = tryBlock_AST;
6223        }
6224        
6225        public final void forInit() throws RecognitionException, TokenStreamException {
6226                
6227                returnAST = null;
6228                ASTPair currentAST = new ASTPair();
6229                AST forInit_AST = null;
6230                
6231                {
6232                boolean synPredMatched276 = false;
6233                if (((_tokenSet_63.member(LA(1))) && (_tokenSet_64.member(LA(2))))) {
6234                        int _m276 = mark();
6235                        synPredMatched276 = true;
6236                        inputState.guessing++;
6237                        try {
6238                                {
6239                                declaration();
6240                                }
6241                        }
6242                        catch (RecognitionException pe) {
6243                                synPredMatched276 = false;
6244                        }
6245                        rewind(_m276);
6246inputState.guessing--;
6247                }
6248                if ( synPredMatched276 ) {
6249                        declaration();
6250                        astFactory.addASTChild(currentAST, returnAST);
6251                }
6252                else if ((_tokenSet_16.member(LA(1))) && (_tokenSet_73.member(LA(2)))) {
6253                        expressionList();
6254                        astFactory.addASTChild(currentAST, returnAST);
6255                }
6256                else if ((LA(1)==SEMI)) {
6257                }
6258                else {
6259                        throw new NoViableAltException(LT(1), getFilename());
6260                }
6261                
6262                }
6263                if ( inputState.guessing==0 ) {
6264                        forInit_AST = (AST)currentAST.root;
6265                        forInit_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(FOR_INIT,"FOR_INIT")).add(forInit_AST));
6266                        currentAST.root = forInit_AST;
6267                        currentAST.child = forInit_AST!=null &&forInit_AST.getFirstChild()!=null ?
6268                                forInit_AST.getFirstChild() : forInit_AST;
6269                        currentAST.advanceChildToEnd();
6270                }
6271                forInit_AST = (AST)currentAST.root;
6272                returnAST = forInit_AST;
6273        }
6274        
6275        public final void traditionalForClause() throws RecognitionException, TokenStreamException {
6276                
6277                returnAST = null;
6278                ASTPair currentAST = new ASTPair();
6279                AST traditionalForClause_AST = null;
6280                
6281                forInit();
6282                astFactory.addASTChild(currentAST, returnAST);
6283                AST tmp151_AST = null;
6284                tmp151_AST = astFactory.create(LT(1));
6285                astFactory.addASTChild(currentAST, tmp151_AST);
6286                match(SEMI);
6287                forCond();
6288                astFactory.addASTChild(currentAST, returnAST);
6289                AST tmp152_AST = null;
6290                tmp152_AST = astFactory.create(LT(1));
6291                astFactory.addASTChild(currentAST, tmp152_AST);
6292                match(SEMI);
6293                forIter();
6294                astFactory.addASTChild(currentAST, returnAST);
6295                traditionalForClause_AST = (AST)currentAST.root;
6296                returnAST = traditionalForClause_AST;
6297        }
6298        
6299        public final void forEachClause() throws RecognitionException, TokenStreamException {
6300                
6301                returnAST = null;
6302                ASTPair currentAST = new ASTPair();
6303                AST forEachClause_AST = null;
6304                
6305                forEachDeclarator();
6306                astFactory.addASTChild(currentAST, returnAST);
6307                AST tmp153_AST = null;
6308                tmp153_AST = astFactory.create(LT(1));
6309                astFactory.addASTChild(currentAST, tmp153_AST);
6310                match(COLON);
6311                expression();
6312                astFactory.addASTChild(currentAST, returnAST);
6313                if ( inputState.guessing==0 ) {
6314                        forEachClause_AST = (AST)currentAST.root;
6315                        forEachClause_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(FOR_EACH_CLAUSE,"FOR_EACH_CLAUSE")).add(forEachClause_AST));
6316                        currentAST.root = forEachClause_AST;
6317                        currentAST.child = forEachClause_AST!=null &&forEachClause_AST.getFirstChild()!=null ?
6318                                forEachClause_AST.getFirstChild() : forEachClause_AST;
6319                        currentAST.advanceChildToEnd();
6320                }
6321                forEachClause_AST = (AST)currentAST.root;
6322                returnAST = forEachClause_AST;
6323        }
6324        
6325        public final void forCond() throws RecognitionException, TokenStreamException {
6326                
6327                returnAST = null;
6328                ASTPair currentAST = new ASTPair();
6329                AST forCond_AST = null;
6330                
6331                {
6332                switch ( LA(1)) {
6333                case LITERAL_void:
6334                case LITERAL_boolean:
6335                case LITERAL_byte:
6336                case LITERAL_char:
6337                case LITERAL_short:
6338                case LITERAL_int:
6339                case LITERAL_float:
6340                case LITERAL_long:
6341                case LITERAL_double:
6342                case IDENT:
6343                case LPAREN:
6344                case LITERAL_this:
6345                case LITERAL_super:
6346                case PLUS:
6347                case MINUS:
6348                case INC:
6349                case DEC:
6350                case BNOT:
6351                case LNOT:
6352                case LITERAL_true:
6353                case LITERAL_false:
6354                case LITERAL_null:
6355                case LITERAL_new:
6356                case NUM_INT:
6357                case CHAR_LITERAL:
6358                case STRING_LITERAL:
6359                case NUM_FLOAT:
6360                case NUM_LONG:
6361                case NUM_DOUBLE:
6362                case AT:
6363                case LITERAL_record:
6364                {
6365                        expression();
6366                        astFactory.addASTChild(currentAST, returnAST);
6367                        break;
6368                }
6369                case SEMI:
6370                {
6371                        break;
6372                }
6373                default:
6374                {
6375                        throw new NoViableAltException(LT(1), getFilename());
6376                }
6377                }
6378                }
6379                if ( inputState.guessing==0 ) {
6380                        forCond_AST = (AST)currentAST.root;
6381                        forCond_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(FOR_CONDITION,"FOR_CONDITION")).add(forCond_AST));
6382                        currentAST.root = forCond_AST;
6383                        currentAST.child = forCond_AST!=null &&forCond_AST.getFirstChild()!=null ?
6384                                forCond_AST.getFirstChild() : forCond_AST;
6385                        currentAST.advanceChildToEnd();
6386                }
6387                forCond_AST = (AST)currentAST.root;
6388                returnAST = forCond_AST;
6389        }
6390        
6391        public final void forIter() throws RecognitionException, TokenStreamException {
6392                
6393                returnAST = null;
6394                ASTPair currentAST = new ASTPair();
6395                AST forIter_AST = null;
6396                
6397                {
6398                switch ( LA(1)) {
6399                case LITERAL_void:
6400                case LITERAL_boolean:
6401                case LITERAL_byte:
6402                case LITERAL_char:
6403                case LITERAL_short:
6404                case LITERAL_int:
6405                case LITERAL_float:
6406                case LITERAL_long:
6407                case LITERAL_double:
6408                case IDENT:
6409                case LPAREN:
6410                case LITERAL_this:
6411                case LITERAL_super:
6412                case PLUS:
6413                case MINUS:
6414                case INC:
6415                case DEC:
6416                case BNOT:
6417                case LNOT:
6418                case LITERAL_true:
6419                case LITERAL_false:
6420                case LITERAL_null:
6421                case LITERAL_new:
6422                case NUM_INT:
6423                case CHAR_LITERAL:
6424                case STRING_LITERAL:
6425                case NUM_FLOAT:
6426                case NUM_LONG:
6427                case NUM_DOUBLE:
6428                case AT:
6429                case LITERAL_record:
6430                {
6431                        expressionList();
6432                        astFactory.addASTChild(currentAST, returnAST);
6433                        break;
6434                }
6435                case RPAREN:
6436                {
6437                        break;
6438                }
6439                default:
6440                {
6441                        throw new NoViableAltException(LT(1), getFilename());
6442                }
6443                }
6444                }
6445                if ( inputState.guessing==0 ) {
6446                        forIter_AST = (AST)currentAST.root;
6447                        forIter_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(FOR_ITERATOR,"FOR_ITERATOR")).add(forIter_AST));
6448                        currentAST.root = forIter_AST;
6449                        currentAST.child = forIter_AST!=null &&forIter_AST.getFirstChild()!=null ?
6450                                forIter_AST.getFirstChild() : forIter_AST;
6451                        currentAST.advanceChildToEnd();
6452                }
6453                forIter_AST = (AST)currentAST.root;
6454                returnAST = forIter_AST;
6455        }
6456        
6457        public final void forEachDeclarator() throws RecognitionException, TokenStreamException {
6458                
6459                returnAST = null;
6460                ASTPair currentAST = new ASTPair();
6461                AST forEachDeclarator_AST = null;
6462                AST m_AST = null;
6463                AST t_AST = null;
6464                AST id_AST = null;
6465                AST d_AST = null;
6466                
6467                modifiers();
6468                m_AST = (AST)returnAST;
6469                typeSpec(false);
6470                t_AST = (AST)returnAST;
6471                id();
6472                id_AST = (AST)returnAST;
6473                declaratorBrackets(t_AST);
6474                d_AST = (AST)returnAST;
6475                if ( inputState.guessing==0 ) {
6476                        forEachDeclarator_AST = (AST)currentAST.root;
6477                        forEachDeclarator_AST = (AST)astFactory.make( (new ASTArray(4)).add(astFactory.create(VARIABLE_DEF,"VARIABLE_DEF")).add(m_AST).add((AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE,"TYPE")).add(d_AST))).add(id_AST));
6478                        currentAST.root = forEachDeclarator_AST;
6479                        currentAST.child = forEachDeclarator_AST!=null &&forEachDeclarator_AST.getFirstChild()!=null ?
6480                                forEachDeclarator_AST.getFirstChild() : forEachDeclarator_AST;
6481                        currentAST.advanceChildToEnd();
6482                }
6483                returnAST = forEachDeclarator_AST;
6484        }
6485        
6486        public final void aCase() throws RecognitionException, TokenStreamException {
6487                
6488                returnAST = null;
6489                ASTPair currentAST = new ASTPair();
6490                AST aCase_AST = null;
6491                
6492                {
6493                switch ( LA(1)) {
6494                case LITERAL_case:
6495                {
6496                        AST tmp154_AST = null;
6497                        tmp154_AST = astFactory.create(LT(1));
6498                        astFactory.makeASTRoot(currentAST, tmp154_AST);
6499                        match(LITERAL_case);
6500                        expression();
6501                        astFactory.addASTChild(currentAST, returnAST);
6502                        break;
6503                }
6504                case LITERAL_default:
6505                {
6506                        AST tmp155_AST = null;
6507                        tmp155_AST = astFactory.create(LT(1));
6508                        astFactory.makeASTRoot(currentAST, tmp155_AST);
6509                        match(LITERAL_default);
6510                        break;
6511                }
6512                default:
6513                {
6514                        throw new NoViableAltException(LT(1), getFilename());
6515                }
6516                }
6517                }
6518                AST tmp156_AST = null;
6519                tmp156_AST = astFactory.create(LT(1));
6520                astFactory.addASTChild(currentAST, tmp156_AST);
6521                match(COLON);
6522                aCase_AST = (AST)currentAST.root;
6523                returnAST = aCase_AST;
6524        }
6525        
6526        public final void caseSList() throws RecognitionException, TokenStreamException {
6527                
6528                returnAST = null;
6529                ASTPair currentAST = new ASTPair();
6530                AST caseSList_AST = null;
6531                
6532                {
6533                int _cnt272=0;
6534                _loop272:
6535                do {
6536                        if (((_tokenSet_44.member(LA(1))) && (_tokenSet_71.member(LA(2))))&&(LA(1)!=LITERAL_default)) {
6537                                statement();
6538                                astFactory.addASTChild(currentAST, returnAST);
6539                        }
6540                        else {
6541                                if ( _cnt272>=1 ) { break _loop272; } else {throw new NoViableAltException(LT(1), getFilename());}
6542                        }
6543                        
6544                        _cnt272++;
6545                } while (true);
6546                }
6547                if ( inputState.guessing==0 ) {
6548                        caseSList_AST = (AST)currentAST.root;
6549                        caseSList_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(SLIST,"SLIST")).add(caseSList_AST));
6550                        currentAST.root = caseSList_AST;
6551                        currentAST.child = caseSList_AST!=null &&caseSList_AST.getFirstChild()!=null ?
6552                                caseSList_AST.getFirstChild() : caseSList_AST;
6553                        currentAST.advanceChildToEnd();
6554                }
6555                caseSList_AST = (AST)currentAST.root;
6556                returnAST = caseSList_AST;
6557        }
6558        
6559        public final void expressionList() throws RecognitionException, TokenStreamException {
6560                
6561                returnAST = null;
6562                ASTPair currentAST = new ASTPair();
6563                AST expressionList_AST = null;
6564                
6565                expression();
6566                astFactory.addASTChild(currentAST, returnAST);
6567                {
6568                _loop305:
6569                do {
6570                        if ((LA(1)==COMMA)) {
6571                                AST tmp157_AST = null;
6572                                tmp157_AST = astFactory.create(LT(1));
6573                                astFactory.addASTChild(currentAST, tmp157_AST);
6574                                match(COMMA);
6575                                expression();
6576                                astFactory.addASTChild(currentAST, returnAST);
6577                        }
6578                        else {
6579                                break _loop305;
6580                        }
6581                        
6582                } while (true);
6583                }
6584                if ( inputState.guessing==0 ) {
6585                        expressionList_AST = (AST)currentAST.root;
6586                        expressionList_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(ELIST,"ELIST")).add(expressionList_AST));
6587                        currentAST.root = expressionList_AST;
6588                        currentAST.child = expressionList_AST!=null &&expressionList_AST.getFirstChild()!=null ?
6589                                expressionList_AST.getFirstChild() : expressionList_AST;
6590                        currentAST.advanceChildToEnd();
6591                }
6592                expressionList_AST = (AST)currentAST.root;
6593                returnAST = expressionList_AST;
6594        }
6595        
6596        public final void resourceSpecification() throws RecognitionException, TokenStreamException {
6597                
6598                returnAST = null;
6599                ASTPair currentAST = new ASTPair();
6600                AST resourceSpecification_AST = null;
6601                
6602                AST tmp158_AST = null;
6603                tmp158_AST = astFactory.create(LT(1));
6604                astFactory.addASTChild(currentAST, tmp158_AST);
6605                match(LPAREN);
6606                resources();
6607                astFactory.addASTChild(currentAST, returnAST);
6608                {
6609                switch ( LA(1)) {
6610                case SEMI:
6611                {
6612                        AST tmp159_AST = null;
6613                        tmp159_AST = astFactory.create(LT(1));
6614                        astFactory.addASTChild(currentAST, tmp159_AST);
6615                        match(SEMI);
6616                        break;
6617                }
6618                case RPAREN:
6619                {
6620                        break;
6621                }
6622                default:
6623                {
6624                        throw new NoViableAltException(LT(1), getFilename());
6625                }
6626                }
6627                }
6628                AST tmp160_AST = null;
6629                tmp160_AST = astFactory.create(LT(1));
6630                astFactory.addASTChild(currentAST, tmp160_AST);
6631                match(RPAREN);
6632                if ( inputState.guessing==0 ) {
6633                        resourceSpecification_AST = (AST)currentAST.root;
6634                        resourceSpecification_AST =
6635                        (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(RESOURCE_SPECIFICATION,"RESOURCE_SPECIFICATION")).add(resourceSpecification_AST));
6636                        currentAST.root = resourceSpecification_AST;
6637                        currentAST.child = resourceSpecification_AST!=null &&resourceSpecification_AST.getFirstChild()!=null ?
6638                                resourceSpecification_AST.getFirstChild() : resourceSpecification_AST;
6639                        currentAST.advanceChildToEnd();
6640                }
6641                resourceSpecification_AST = (AST)currentAST.root;
6642                returnAST = resourceSpecification_AST;
6643        }
6644        
6645        public final void handler() throws RecognitionException, TokenStreamException {
6646                
6647                returnAST = null;
6648                ASTPair currentAST = new ASTPair();
6649                AST handler_AST = null;
6650                
6651                AST tmp161_AST = null;
6652                tmp161_AST = astFactory.create(LT(1));
6653                astFactory.makeASTRoot(currentAST, tmp161_AST);
6654                match(LITERAL_catch);
6655                AST tmp162_AST = null;
6656                tmp162_AST = astFactory.create(LT(1));
6657                astFactory.addASTChild(currentAST, tmp162_AST);
6658                match(LPAREN);
6659                catchParameterDeclaration();
6660                astFactory.addASTChild(currentAST, returnAST);
6661                AST tmp163_AST = null;
6662                tmp163_AST = astFactory.create(LT(1));
6663                astFactory.addASTChild(currentAST, tmp163_AST);
6664                match(RPAREN);
6665                compoundStatement();
6666                astFactory.addASTChild(currentAST, returnAST);
6667                handler_AST = (AST)currentAST.root;
6668                returnAST = handler_AST;
6669        }
6670        
6671        public final void finallyHandler() throws RecognitionException, TokenStreamException {
6672                
6673                returnAST = null;
6674                ASTPair currentAST = new ASTPair();
6675                AST finallyHandler_AST = null;
6676                
6677                AST tmp164_AST = null;
6678                tmp164_AST = astFactory.create(LT(1));
6679                astFactory.makeASTRoot(currentAST, tmp164_AST);
6680                match(LITERAL_finally);
6681                compoundStatement();
6682                astFactory.addASTChild(currentAST, returnAST);
6683                finallyHandler_AST = (AST)currentAST.root;
6684                returnAST = finallyHandler_AST;
6685        }
6686        
6687        public final void resources() throws RecognitionException, TokenStreamException {
6688                
6689                returnAST = null;
6690                ASTPair currentAST = new ASTPair();
6691                AST resources_AST = null;
6692                
6693                resource();
6694                astFactory.addASTChild(currentAST, returnAST);
6695                {
6696                _loop290:
6697                do {
6698                        if ((LA(1)==SEMI) && (_tokenSet_74.member(LA(2)))) {
6699                                AST tmp165_AST = null;
6700                                tmp165_AST = astFactory.create(LT(1));
6701                                astFactory.addASTChild(currentAST, tmp165_AST);
6702                                match(SEMI);
6703                                resource();
6704                                astFactory.addASTChild(currentAST, returnAST);
6705                        }
6706                        else {
6707                                break _loop290;
6708                        }
6709                        
6710                } while (true);
6711                }
6712                if ( inputState.guessing==0 ) {
6713                        resources_AST = (AST)currentAST.root;
6714                        resources_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(RESOURCES,"RESOURCES")).add(resources_AST));
6715                        currentAST.root = resources_AST;
6716                        currentAST.child = resources_AST!=null &&resources_AST.getFirstChild()!=null ?
6717                                resources_AST.getFirstChild() : resources_AST;
6718                        currentAST.advanceChildToEnd();
6719                }
6720                resources_AST = (AST)currentAST.root;
6721                returnAST = resources_AST;
6722        }
6723        
6724        public final void resource() throws RecognitionException, TokenStreamException {
6725                
6726                returnAST = null;
6727                ASTPair currentAST = new ASTPair();
6728                AST resource_AST = null;
6729                
6730                boolean synPredMatched293 = false;
6731                if (((_tokenSet_28.member(LA(1))) && (_tokenSet_75.member(LA(2))))) {
6732                        int _m293 = mark();
6733                        synPredMatched293 = true;
6734                        inputState.guessing++;
6735                        try {
6736                                {
6737                                tryResourceDeclaration();
6738                                }
6739                        }
6740                        catch (RecognitionException pe) {
6741                                synPredMatched293 = false;
6742                        }
6743                        rewind(_m293);
6744inputState.guessing--;
6745                }
6746                if ( synPredMatched293 ) {
6747                        tryResourceDeclaration();
6748                        astFactory.addASTChild(currentAST, returnAST);
6749                        resource_AST = (AST)currentAST.root;
6750                }
6751                else if ((_tokenSet_54.member(LA(1))) && (_tokenSet_76.member(LA(2)))) {
6752                        {
6753                        _loop295:
6754                        do {
6755                                if ((_tokenSet_54.member(LA(1))) && (_tokenSet_55.member(LA(2)))) {
6756                                        primaryExpression();
6757                                        astFactory.addASTChild(currentAST, returnAST);
6758                                        AST tmp166_AST = null;
6759                                        tmp166_AST = astFactory.create(LT(1));
6760                                        astFactory.makeASTRoot(currentAST, tmp166_AST);
6761                                        match(DOT);
6762                                }
6763                                else {
6764                                        break _loop295;
6765                                }
6766                                
6767                        } while (true);
6768                        }
6769                        id();
6770                        astFactory.addASTChild(currentAST, returnAST);
6771                        if ( inputState.guessing==0 ) {
6772                                resource_AST = (AST)currentAST.root;
6773                                resource_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(RESOURCE,"RESOURCE")).add(resource_AST));
6774                                currentAST.root = resource_AST;
6775                                currentAST.child = resource_AST!=null &&resource_AST.getFirstChild()!=null ?
6776                                        resource_AST.getFirstChild() : resource_AST;
6777                                currentAST.advanceChildToEnd();
6778                        }
6779                        resource_AST = (AST)currentAST.root;
6780                }
6781                else {
6782                        throw new NoViableAltException(LT(1), getFilename());
6783                }
6784                
6785                returnAST = resource_AST;
6786        }
6787        
6788        public final void tryResourceDeclaration() throws RecognitionException, TokenStreamException {
6789                
6790                returnAST = null;
6791                ASTPair currentAST = new ASTPair();
6792                AST tryResourceDeclaration_AST = null;
6793                AST m_AST = null;
6794                AST t_AST = null;
6795                AST v_AST = null;
6796                
6797                parameterModifier();
6798                m_AST = (AST)returnAST;
6799                typeSpec(false);
6800                t_AST = (AST)returnAST;
6801                tryResourceDeclarator((AST) getASTFactory().dupTree(m_AST),
6802                                    //dupList as this also copies siblings (like TYPE_ARGUMENTS)
6803                                    (AST) getASTFactory().dupList(t_AST));
6804                v_AST = (AST)returnAST;
6805                if ( inputState.guessing==0 ) {
6806                        tryResourceDeclaration_AST = (AST)currentAST.root;
6807                        tryResourceDeclaration_AST = v_AST;
6808                        currentAST.root = tryResourceDeclaration_AST;
6809                        currentAST.child = tryResourceDeclaration_AST!=null &&tryResourceDeclaration_AST.getFirstChild()!=null ?
6810                                tryResourceDeclaration_AST.getFirstChild() : tryResourceDeclaration_AST;
6811                        currentAST.advanceChildToEnd();
6812                }
6813                returnAST = tryResourceDeclaration_AST;
6814        }
6815        
6816        public final void tryResourceDeclarator(
6817                AST mods, AST t
6818        ) throws RecognitionException, TokenStreamException {
6819                
6820                returnAST = null;
6821                ASTPair currentAST = new ASTPair();
6822                AST tryResourceDeclarator_AST = null;
6823                AST id_AST = null;
6824                AST d_AST = null;
6825                AST v_AST = null;
6826                
6827                id();
6828                id_AST = (AST)returnAST;
6829                declaratorBrackets(t);
6830                d_AST = (AST)returnAST;
6831                varInitializer();
6832                v_AST = (AST)returnAST;
6833                if ( inputState.guessing==0 ) {
6834                        tryResourceDeclarator_AST = (AST)currentAST.root;
6835                        tryResourceDeclarator_AST = (AST)astFactory.make( (new ASTArray(5)).add(astFactory.create(RESOURCE,"RESOURCE")).add(mods).add((AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE,"TYPE")).add(d_AST))).add(id_AST).add(v_AST));
6836                        currentAST.root = tryResourceDeclarator_AST;
6837                        currentAST.child = tryResourceDeclarator_AST!=null &&tryResourceDeclarator_AST.getFirstChild()!=null ?
6838                                tryResourceDeclarator_AST.getFirstChild() : tryResourceDeclarator_AST;
6839                        currentAST.advanceChildToEnd();
6840                }
6841                returnAST = tryResourceDeclarator_AST;
6842        }
6843        
6844        public final void lambdaExpression() throws RecognitionException, TokenStreamException {
6845                
6846                returnAST = null;
6847                ASTPair currentAST = new ASTPair();
6848                AST lambdaExpression_AST = null;
6849                
6850                lambdaParameters();
6851                astFactory.addASTChild(currentAST, returnAST);
6852                AST tmp167_AST = null;
6853                tmp167_AST = astFactory.create(LT(1));
6854                astFactory.makeASTRoot(currentAST, tmp167_AST);
6855                match(LAMBDA);
6856                lambdaBody();
6857                astFactory.addASTChild(currentAST, returnAST);
6858                lambdaExpression_AST = (AST)currentAST.root;
6859                returnAST = lambdaExpression_AST;
6860        }
6861        
6862        public final void assignmentExpression() throws RecognitionException, TokenStreamException {
6863                
6864                returnAST = null;
6865                ASTPair currentAST = new ASTPair();
6866                AST assignmentExpression_AST = null;
6867                
6868                conditionalExpression();
6869                astFactory.addASTChild(currentAST, returnAST);
6870                {
6871                switch ( LA(1)) {
6872                case ASSIGN:
6873                case PLUS_ASSIGN:
6874                case MINUS_ASSIGN:
6875                case STAR_ASSIGN:
6876                case DIV_ASSIGN:
6877                case MOD_ASSIGN:
6878                case SR_ASSIGN:
6879                case BSR_ASSIGN:
6880                case SL_ASSIGN:
6881                case BAND_ASSIGN:
6882                case BXOR_ASSIGN:
6883                case BOR_ASSIGN:
6884                {
6885                        {
6886                        switch ( LA(1)) {
6887                        case ASSIGN:
6888                        {
6889                                AST tmp168_AST = null;
6890                                tmp168_AST = astFactory.create(LT(1));
6891                                astFactory.makeASTRoot(currentAST, tmp168_AST);
6892                                match(ASSIGN);
6893                                break;
6894                        }
6895                        case PLUS_ASSIGN:
6896                        {
6897                                AST tmp169_AST = null;
6898                                tmp169_AST = astFactory.create(LT(1));
6899                                astFactory.makeASTRoot(currentAST, tmp169_AST);
6900                                match(PLUS_ASSIGN);
6901                                break;
6902                        }
6903                        case MINUS_ASSIGN:
6904                        {
6905                                AST tmp170_AST = null;
6906                                tmp170_AST = astFactory.create(LT(1));
6907                                astFactory.makeASTRoot(currentAST, tmp170_AST);
6908                                match(MINUS_ASSIGN);
6909                                break;
6910                        }
6911                        case STAR_ASSIGN:
6912                        {
6913                                AST tmp171_AST = null;
6914                                tmp171_AST = astFactory.create(LT(1));
6915                                astFactory.makeASTRoot(currentAST, tmp171_AST);
6916                                match(STAR_ASSIGN);
6917                                break;
6918                        }
6919                        case DIV_ASSIGN:
6920                        {
6921                                AST tmp172_AST = null;
6922                                tmp172_AST = astFactory.create(LT(1));
6923                                astFactory.makeASTRoot(currentAST, tmp172_AST);
6924                                match(DIV_ASSIGN);
6925                                break;
6926                        }
6927                        case MOD_ASSIGN:
6928                        {
6929                                AST tmp173_AST = null;
6930                                tmp173_AST = astFactory.create(LT(1));
6931                                astFactory.makeASTRoot(currentAST, tmp173_AST);
6932                                match(MOD_ASSIGN);
6933                                break;
6934                        }
6935                        case SR_ASSIGN:
6936                        {
6937                                AST tmp174_AST = null;
6938                                tmp174_AST = astFactory.create(LT(1));
6939                                astFactory.makeASTRoot(currentAST, tmp174_AST);
6940                                match(SR_ASSIGN);
6941                                break;
6942                        }
6943                        case BSR_ASSIGN:
6944                        {
6945                                AST tmp175_AST = null;
6946                                tmp175_AST = astFactory.create(LT(1));
6947                                astFactory.makeASTRoot(currentAST, tmp175_AST);
6948                                match(BSR_ASSIGN);
6949                                break;
6950                        }
6951                        case SL_ASSIGN:
6952                        {
6953                                AST tmp176_AST = null;
6954                                tmp176_AST = astFactory.create(LT(1));
6955                                astFactory.makeASTRoot(currentAST, tmp176_AST);
6956                                match(SL_ASSIGN);
6957                                break;
6958                        }
6959                        case BAND_ASSIGN:
6960                        {
6961                                AST tmp177_AST = null;
6962                                tmp177_AST = astFactory.create(LT(1));
6963                                astFactory.makeASTRoot(currentAST, tmp177_AST);
6964                                match(BAND_ASSIGN);
6965                                break;
6966                        }
6967                        case BXOR_ASSIGN:
6968                        {
6969                                AST tmp178_AST = null;
6970                                tmp178_AST = astFactory.create(LT(1));
6971                                astFactory.makeASTRoot(currentAST, tmp178_AST);
6972                                match(BXOR_ASSIGN);
6973                                break;
6974                        }
6975                        case BOR_ASSIGN:
6976                        {
6977                                AST tmp179_AST = null;
6978                                tmp179_AST = astFactory.create(LT(1));
6979                                astFactory.makeASTRoot(currentAST, tmp179_AST);
6980                                match(BOR_ASSIGN);
6981                                break;
6982                        }
6983                        default:
6984                        {
6985                                throw new NoViableAltException(LT(1), getFilename());
6986                        }
6987                        }
6988                        }
6989                        {
6990                        boolean synPredMatched311 = false;
6991                        if (((_tokenSet_19.member(LA(1))) && (_tokenSet_20.member(LA(2))))) {
6992                                int _m311 = mark();
6993                                synPredMatched311 = true;
6994                                inputState.guessing++;
6995                                try {
6996                                        {
6997                                        lambdaExpression();
6998                                        }
6999                                }
7000                                catch (RecognitionException pe) {
7001                                        synPredMatched311 = false;
7002                                }
7003                                rewind(_m311);
7004inputState.guessing--;
7005                        }
7006                        if ( synPredMatched311 ) {
7007                                lambdaExpression();
7008                                astFactory.addASTChild(currentAST, returnAST);
7009                        }
7010                        else if ((_tokenSet_16.member(LA(1))) && (_tokenSet_22.member(LA(2)))) {
7011                                assignmentExpression();
7012                                astFactory.addASTChild(currentAST, returnAST);
7013                        }
7014                        else {
7015                                throw new NoViableAltException(LT(1), getFilename());
7016                        }
7017                        
7018                        }
7019                        break;
7020                }
7021                case FINAL:
7022                case ABSTRACT:
7023                case STRICTFP:
7024                case SEMI:
7025                case RBRACK:
7026                case LITERAL_void:
7027                case LITERAL_boolean:
7028                case LITERAL_byte:
7029                case LITERAL_char:
7030                case LITERAL_short:
7031                case LITERAL_int:
7032                case LITERAL_float:
7033                case LITERAL_long:
7034                case LITERAL_double:
7035                case IDENT:
7036                case STAR:
7037                case LITERAL_private:
7038                case LITERAL_public:
7039                case LITERAL_protected:
7040                case LITERAL_static:
7041                case LITERAL_transient:
7042                case LITERAL_native:
7043                case LITERAL_synchronized:
7044                case LITERAL_volatile:
7045                case LITERAL_class:
7046                case LITERAL_interface:
7047                case LCURLY:
7048                case RCURLY:
7049                case COMMA:
7050                case LPAREN:
7051                case RPAREN:
7052                case LITERAL_this:
7053                case LITERAL_super:
7054                case COLON:
7055                case LITERAL_if:
7056                case LITERAL_while:
7057                case LITERAL_do:
7058                case LITERAL_break:
7059                case LITERAL_continue:
7060                case LITERAL_return:
7061                case LITERAL_switch:
7062                case LITERAL_throw:
7063                case LITERAL_for:
7064                case LITERAL_else:
7065                case LITERAL_case:
7066                case LITERAL_default:
7067                case LITERAL_try:
7068                case LT:
7069                case GT:
7070                case LE:
7071                case GE:
7072                case LITERAL_instanceof:
7073                case SL:
7074                case SR:
7075                case BSR:
7076                case PLUS:
7077                case MINUS:
7078                case DIV:
7079                case MOD:
7080                case INC:
7081                case DEC:
7082                case BNOT:
7083                case LNOT:
7084                case LITERAL_true:
7085                case LITERAL_false:
7086                case LITERAL_null:
7087                case LITERAL_new:
7088                case NUM_INT:
7089                case CHAR_LITERAL:
7090                case STRING_LITERAL:
7091                case NUM_FLOAT:
7092                case NUM_LONG:
7093                case NUM_DOUBLE:
7094                case ASSERT:
7095                case ENUM:
7096                case AT:
7097                case LITERAL_record:
7098                {
7099                        break;
7100                }
7101                default:
7102                {
7103                        throw new NoViableAltException(LT(1), getFilename());
7104                }
7105                }
7106                }
7107                assignmentExpression_AST = (AST)currentAST.root;
7108                returnAST = assignmentExpression_AST;
7109        }
7110        
7111        public final void logicalOrExpression() throws RecognitionException, TokenStreamException {
7112                
7113                returnAST = null;
7114                ASTPair currentAST = new ASTPair();
7115                AST logicalOrExpression_AST = null;
7116                
7117                logicalAndExpression();
7118                astFactory.addASTChild(currentAST, returnAST);
7119                {
7120                _loop322:
7121                do {
7122                        if ((LA(1)==LOR)) {
7123                                AST tmp180_AST = null;
7124                                tmp180_AST = astFactory.create(LT(1));
7125                                astFactory.makeASTRoot(currentAST, tmp180_AST);
7126                                match(LOR);
7127                                logicalAndExpression();
7128                                astFactory.addASTChild(currentAST, returnAST);
7129                        }
7130                        else {
7131                                break _loop322;
7132                        }
7133                        
7134                } while (true);
7135                }
7136                logicalOrExpression_AST = (AST)currentAST.root;
7137                returnAST = logicalOrExpression_AST;
7138        }
7139        
7140        public final void logicalAndExpression() throws RecognitionException, TokenStreamException {
7141                
7142                returnAST = null;
7143                ASTPair currentAST = new ASTPair();
7144                AST logicalAndExpression_AST = null;
7145                
7146                inclusiveOrExpression();
7147                astFactory.addASTChild(currentAST, returnAST);
7148                {
7149                _loop325:
7150                do {
7151                        if ((LA(1)==LAND)) {
7152                                AST tmp181_AST = null;
7153                                tmp181_AST = astFactory.create(LT(1));
7154                                astFactory.makeASTRoot(currentAST, tmp181_AST);
7155                                match(LAND);
7156                                inclusiveOrExpression();
7157                                astFactory.addASTChild(currentAST, returnAST);
7158                        }
7159                        else {
7160                                break _loop325;
7161                        }
7162                        
7163                } while (true);
7164                }
7165                logicalAndExpression_AST = (AST)currentAST.root;
7166                returnAST = logicalAndExpression_AST;
7167        }
7168        
7169        public final void inclusiveOrExpression() throws RecognitionException, TokenStreamException {
7170                
7171                returnAST = null;
7172                ASTPair currentAST = new ASTPair();
7173                AST inclusiveOrExpression_AST = null;
7174                
7175                exclusiveOrExpression();
7176                astFactory.addASTChild(currentAST, returnAST);
7177                {
7178                _loop328:
7179                do {
7180                        if ((LA(1)==BOR)) {
7181                                AST tmp182_AST = null;
7182                                tmp182_AST = astFactory.create(LT(1));
7183                                astFactory.makeASTRoot(currentAST, tmp182_AST);
7184                                match(BOR);
7185                                exclusiveOrExpression();
7186                                astFactory.addASTChild(currentAST, returnAST);
7187                        }
7188                        else {
7189                                break _loop328;
7190                        }
7191                        
7192                } while (true);
7193                }
7194                inclusiveOrExpression_AST = (AST)currentAST.root;
7195                returnAST = inclusiveOrExpression_AST;
7196        }
7197        
7198        public final void exclusiveOrExpression() throws RecognitionException, TokenStreamException {
7199                
7200                returnAST = null;
7201                ASTPair currentAST = new ASTPair();
7202                AST exclusiveOrExpression_AST = null;
7203                
7204                andExpression();
7205                astFactory.addASTChild(currentAST, returnAST);
7206                {
7207                _loop331:
7208                do {
7209                        if ((LA(1)==BXOR)) {
7210                                AST tmp183_AST = null;
7211                                tmp183_AST = astFactory.create(LT(1));
7212                                astFactory.makeASTRoot(currentAST, tmp183_AST);
7213                                match(BXOR);
7214                                andExpression();
7215                                astFactory.addASTChild(currentAST, returnAST);
7216                        }
7217                        else {
7218                                break _loop331;
7219                        }
7220                        
7221                } while (true);
7222                }
7223                exclusiveOrExpression_AST = (AST)currentAST.root;
7224                returnAST = exclusiveOrExpression_AST;
7225        }
7226        
7227        public final void andExpression() throws RecognitionException, TokenStreamException {
7228                
7229                returnAST = null;
7230                ASTPair currentAST = new ASTPair();
7231                AST andExpression_AST = null;
7232                
7233                equalityExpression();
7234                astFactory.addASTChild(currentAST, returnAST);
7235                {
7236                _loop334:
7237                do {
7238                        if ((LA(1)==BAND)) {
7239                                AST tmp184_AST = null;
7240                                tmp184_AST = astFactory.create(LT(1));
7241                                astFactory.makeASTRoot(currentAST, tmp184_AST);
7242                                match(BAND);
7243                                equalityExpression();
7244                                astFactory.addASTChild(currentAST, returnAST);
7245                        }
7246                        else {
7247                                break _loop334;
7248                        }
7249                        
7250                } while (true);
7251                }
7252                andExpression_AST = (AST)currentAST.root;
7253                returnAST = andExpression_AST;
7254        }
7255        
7256        public final void equalityExpression() throws RecognitionException, TokenStreamException {
7257                
7258                returnAST = null;
7259                ASTPair currentAST = new ASTPair();
7260                AST equalityExpression_AST = null;
7261                
7262                relationalExpression();
7263                astFactory.addASTChild(currentAST, returnAST);
7264                {
7265                _loop338:
7266                do {
7267                        if ((LA(1)==NOT_EQUAL||LA(1)==EQUAL)) {
7268                                {
7269                                switch ( LA(1)) {
7270                                case NOT_EQUAL:
7271                                {
7272                                        AST tmp185_AST = null;
7273                                        tmp185_AST = astFactory.create(LT(1));
7274                                        astFactory.makeASTRoot(currentAST, tmp185_AST);
7275                                        match(NOT_EQUAL);
7276                                        break;
7277                                }
7278                                case EQUAL:
7279                                {
7280                                        AST tmp186_AST = null;
7281                                        tmp186_AST = astFactory.create(LT(1));
7282                                        astFactory.makeASTRoot(currentAST, tmp186_AST);
7283                                        match(EQUAL);
7284                                        break;
7285                                }
7286                                default:
7287                                {
7288                                        throw new NoViableAltException(LT(1), getFilename());
7289                                }
7290                                }
7291                                }
7292                                relationalExpression();
7293                                astFactory.addASTChild(currentAST, returnAST);
7294                        }
7295                        else {
7296                                break _loop338;
7297                        }
7298                        
7299                } while (true);
7300                }
7301                equalityExpression_AST = (AST)currentAST.root;
7302                returnAST = equalityExpression_AST;
7303        }
7304        
7305        public final void relationalExpression() throws RecognitionException, TokenStreamException {
7306                
7307                returnAST = null;
7308                ASTPair currentAST = new ASTPair();
7309                AST relationalExpression_AST = null;
7310                
7311                shiftExpression();
7312                astFactory.addASTChild(currentAST, returnAST);
7313                {
7314                if ((LA(1)==LITERAL_instanceof) && (_tokenSet_12.member(LA(2)))) {
7315                        AST tmp187_AST = null;
7316                        tmp187_AST = astFactory.create(LT(1));
7317                        astFactory.makeASTRoot(currentAST, tmp187_AST);
7318                        match(LITERAL_instanceof);
7319                        {
7320                        boolean synPredMatched343 = false;
7321                        if (((_tokenSet_12.member(LA(1))) && (_tokenSet_27.member(LA(2))))) {
7322                                int _m343 = mark();
7323                                synPredMatched343 = true;
7324                                inputState.guessing++;
7325                                try {
7326                                        {
7327                                        typeSpec(true);
7328                                        match(IDENT);
7329                                        }
7330                                }
7331                                catch (RecognitionException pe) {
7332                                        synPredMatched343 = false;
7333                                }
7334                                rewind(_m343);
7335inputState.guessing--;
7336                        }
7337                        if ( synPredMatched343 ) {
7338                                patternDefinition();
7339                                astFactory.addASTChild(currentAST, returnAST);
7340                        }
7341                        else if ((_tokenSet_12.member(LA(1))) && (_tokenSet_77.member(LA(2)))) {
7342                                instanceofTypeSpec();
7343                                astFactory.addASTChild(currentAST, returnAST);
7344                        }
7345                        else {
7346                                throw new NoViableAltException(LT(1), getFilename());
7347                        }
7348                        
7349                        }
7350                }
7351                else if ((_tokenSet_78.member(LA(1))) && (_tokenSet_57.member(LA(2)))) {
7352                }
7353                else {
7354                        throw new NoViableAltException(LT(1), getFilename());
7355                }
7356                
7357                }
7358                {
7359                {
7360                _loop347:
7361                do {
7362                        if (((LA(1) >= LT && LA(1) <= GE)) && (_tokenSet_16.member(LA(2)))) {
7363                                {
7364                                switch ( LA(1)) {
7365                                case LT:
7366                                {
7367                                        AST tmp188_AST = null;
7368                                        tmp188_AST = astFactory.create(LT(1));
7369                                        astFactory.makeASTRoot(currentAST, tmp188_AST);
7370                                        match(LT);
7371                                        break;
7372                                }
7373                                case GT:
7374                                {
7375                                        AST tmp189_AST = null;
7376                                        tmp189_AST = astFactory.create(LT(1));
7377                                        astFactory.makeASTRoot(currentAST, tmp189_AST);
7378                                        match(GT);
7379                                        break;
7380                                }
7381                                case LE:
7382                                {
7383                                        AST tmp190_AST = null;
7384                                        tmp190_AST = astFactory.create(LT(1));
7385                                        astFactory.makeASTRoot(currentAST, tmp190_AST);
7386                                        match(LE);
7387                                        break;
7388                                }
7389                                case GE:
7390                                {
7391                                        AST tmp191_AST = null;
7392                                        tmp191_AST = astFactory.create(LT(1));
7393                                        astFactory.makeASTRoot(currentAST, tmp191_AST);
7394                                        match(GE);
7395                                        break;
7396                                }
7397                                default:
7398                                {
7399                                        throw new NoViableAltException(LT(1), getFilename());
7400                                }
7401                                }
7402                                }
7403                                shiftExpression();
7404                                astFactory.addASTChild(currentAST, returnAST);
7405                        }
7406                        else {
7407                                break _loop347;
7408                        }
7409                        
7410                } while (true);
7411                }
7412                }
7413                relationalExpression_AST = (AST)currentAST.root;
7414                returnAST = relationalExpression_AST;
7415        }
7416        
7417        public final void shiftExpression() throws RecognitionException, TokenStreamException {
7418                
7419                returnAST = null;
7420                ASTPair currentAST = new ASTPair();
7421                AST shiftExpression_AST = null;
7422                
7423                additiveExpression();
7424                astFactory.addASTChild(currentAST, returnAST);
7425                {
7426                _loop354:
7427                do {
7428                        if (((LA(1) >= SL && LA(1) <= BSR)) && (_tokenSet_16.member(LA(2)))) {
7429                                {
7430                                switch ( LA(1)) {
7431                                case SL:
7432                                {
7433                                        AST tmp192_AST = null;
7434                                        tmp192_AST = astFactory.create(LT(1));
7435                                        astFactory.makeASTRoot(currentAST, tmp192_AST);
7436                                        match(SL);
7437                                        break;
7438                                }
7439                                case SR:
7440                                {
7441                                        AST tmp193_AST = null;
7442                                        tmp193_AST = astFactory.create(LT(1));
7443                                        astFactory.makeASTRoot(currentAST, tmp193_AST);
7444                                        match(SR);
7445                                        break;
7446                                }
7447                                case BSR:
7448                                {
7449                                        AST tmp194_AST = null;
7450                                        tmp194_AST = astFactory.create(LT(1));
7451                                        astFactory.makeASTRoot(currentAST, tmp194_AST);
7452                                        match(BSR);
7453                                        break;
7454                                }
7455                                default:
7456                                {
7457                                        throw new NoViableAltException(LT(1), getFilename());
7458                                }
7459                                }
7460                                }
7461                                additiveExpression();
7462                                astFactory.addASTChild(currentAST, returnAST);
7463                        }
7464                        else {
7465                                break _loop354;
7466                        }
7467                        
7468                } while (true);
7469                }
7470                shiftExpression_AST = (AST)currentAST.root;
7471                returnAST = shiftExpression_AST;
7472        }
7473        
7474        public final void patternDefinition() throws RecognitionException, TokenStreamException {
7475                
7476                returnAST = null;
7477                ASTPair currentAST = new ASTPair();
7478                AST patternDefinition_AST = null;
7479                AST v_AST = null;
7480                
7481                patternVariableDefinition();
7482                v_AST = (AST)returnAST;
7483                if ( inputState.guessing==0 ) {
7484                        patternDefinition_AST = (AST)currentAST.root;
7485                        patternDefinition_AST = v_AST;
7486                        currentAST.root = patternDefinition_AST;
7487                        currentAST.child = patternDefinition_AST!=null &&patternDefinition_AST.getFirstChild()!=null ?
7488                                patternDefinition_AST.getFirstChild() : patternDefinition_AST;
7489                        currentAST.advanceChildToEnd();
7490                }
7491                returnAST = patternDefinition_AST;
7492        }
7493        
7494        public final void instanceofTypeSpec() throws RecognitionException, TokenStreamException {
7495                
7496                returnAST = null;
7497                ASTPair currentAST = new ASTPair();
7498                AST instanceofTypeSpec_AST = null;
7499                AST t_AST = null;
7500                
7501                typeSpec(true);
7502                t_AST = (AST)returnAST;
7503                if ( inputState.guessing==0 ) {
7504                        instanceofTypeSpec_AST = (AST)currentAST.root;
7505                        instanceofTypeSpec_AST = t_AST;
7506                        currentAST.root = instanceofTypeSpec_AST;
7507                        currentAST.child = instanceofTypeSpec_AST!=null &&instanceofTypeSpec_AST.getFirstChild()!=null ?
7508                                instanceofTypeSpec_AST.getFirstChild() : instanceofTypeSpec_AST;
7509                        currentAST.advanceChildToEnd();
7510                }
7511                returnAST = instanceofTypeSpec_AST;
7512        }
7513        
7514        public final void patternVariableDefinition() throws RecognitionException, TokenStreamException {
7515                
7516                returnAST = null;
7517                ASTPair currentAST = new ASTPair();
7518                AST patternVariableDefinition_AST = null;
7519                AST t_AST = null;
7520                Token  i = null;
7521                AST i_AST = null;
7522                
7523                typeSpec(true);
7524                t_AST = (AST)returnAST;
7525                i = LT(1);
7526                i_AST = astFactory.create(i);
7527                match(IDENT);
7528                if ( inputState.guessing==0 ) {
7529                        patternVariableDefinition_AST = (AST)currentAST.root;
7530                        patternVariableDefinition_AST = (AST)astFactory.make( (new ASTArray(3)).add(astFactory.create(PATTERN_VARIABLE_DEF,"PATTERN_VARIABLE_DEF")).add(t_AST).add(i_AST));
7531                        currentAST.root = patternVariableDefinition_AST;
7532                        currentAST.child = patternVariableDefinition_AST!=null &&patternVariableDefinition_AST.getFirstChild()!=null ?
7533                                patternVariableDefinition_AST.getFirstChild() : patternVariableDefinition_AST;
7534                        currentAST.advanceChildToEnd();
7535                }
7536                returnAST = patternVariableDefinition_AST;
7537        }
7538        
7539        public final void additiveExpression() throws RecognitionException, TokenStreamException {
7540                
7541                returnAST = null;
7542                ASTPair currentAST = new ASTPair();
7543                AST additiveExpression_AST = null;
7544                
7545                multiplicativeExpression();
7546                astFactory.addASTChild(currentAST, returnAST);
7547                {
7548                _loop358:
7549                do {
7550                        if ((LA(1)==PLUS||LA(1)==MINUS) && (_tokenSet_16.member(LA(2)))) {
7551                                {
7552                                switch ( LA(1)) {
7553                                case PLUS:
7554                                {
7555                                        AST tmp195_AST = null;
7556                                        tmp195_AST = astFactory.create(LT(1));
7557                                        astFactory.makeASTRoot(currentAST, tmp195_AST);
7558                                        match(PLUS);
7559                                        break;
7560                                }
7561                                case MINUS:
7562                                {
7563                                        AST tmp196_AST = null;
7564                                        tmp196_AST = astFactory.create(LT(1));
7565                                        astFactory.makeASTRoot(currentAST, tmp196_AST);
7566                                        match(MINUS);
7567                                        break;
7568                                }
7569                                default:
7570                                {
7571                                        throw new NoViableAltException(LT(1), getFilename());
7572                                }
7573                                }
7574                                }
7575                                multiplicativeExpression();
7576                                astFactory.addASTChild(currentAST, returnAST);
7577                        }
7578                        else {
7579                                break _loop358;
7580                        }
7581                        
7582                } while (true);
7583                }
7584                additiveExpression_AST = (AST)currentAST.root;
7585                returnAST = additiveExpression_AST;
7586        }
7587        
7588        public final void multiplicativeExpression() throws RecognitionException, TokenStreamException {
7589                
7590                returnAST = null;
7591                ASTPair currentAST = new ASTPair();
7592                AST multiplicativeExpression_AST = null;
7593                
7594                unaryExpression();
7595                astFactory.addASTChild(currentAST, returnAST);
7596                {
7597                _loop362:
7598                do {
7599                        if ((_tokenSet_79.member(LA(1))) && (_tokenSet_16.member(LA(2)))) {
7600                                {
7601                                switch ( LA(1)) {
7602                                case STAR:
7603                                {
7604                                        AST tmp197_AST = null;
7605                                        tmp197_AST = astFactory.create(LT(1));
7606                                        astFactory.makeASTRoot(currentAST, tmp197_AST);
7607                                        match(STAR);
7608                                        break;
7609                                }
7610                                case DIV:
7611                                {
7612                                        AST tmp198_AST = null;
7613                                        tmp198_AST = astFactory.create(LT(1));
7614                                        astFactory.makeASTRoot(currentAST, tmp198_AST);
7615                                        match(DIV);
7616                                        break;
7617                                }
7618                                case MOD:
7619                                {
7620                                        AST tmp199_AST = null;
7621                                        tmp199_AST = astFactory.create(LT(1));
7622                                        astFactory.makeASTRoot(currentAST, tmp199_AST);
7623                                        match(MOD);
7624                                        break;
7625                                }
7626                                default:
7627                                {
7628                                        throw new NoViableAltException(LT(1), getFilename());
7629                                }
7630                                }
7631                                }
7632                                unaryExpression();
7633                                astFactory.addASTChild(currentAST, returnAST);
7634                        }
7635                        else {
7636                                break _loop362;
7637                        }
7638                        
7639                } while (true);
7640                }
7641                multiplicativeExpression_AST = (AST)currentAST.root;
7642                returnAST = multiplicativeExpression_AST;
7643        }
7644        
7645        public final void unaryExpression() throws RecognitionException, TokenStreamException {
7646                
7647                returnAST = null;
7648                ASTPair currentAST = new ASTPair();
7649                AST unaryExpression_AST = null;
7650                
7651                switch ( LA(1)) {
7652                case INC:
7653                {
7654                        AST tmp200_AST = null;
7655                        tmp200_AST = astFactory.create(LT(1));
7656                        astFactory.makeASTRoot(currentAST, tmp200_AST);
7657                        match(INC);
7658                        unaryExpression();
7659                        astFactory.addASTChild(currentAST, returnAST);
7660                        unaryExpression_AST = (AST)currentAST.root;
7661                        break;
7662                }
7663                case DEC:
7664                {
7665                        AST tmp201_AST = null;
7666                        tmp201_AST = astFactory.create(LT(1));
7667                        astFactory.makeASTRoot(currentAST, tmp201_AST);
7668                        match(DEC);
7669                        unaryExpression();
7670                        astFactory.addASTChild(currentAST, returnAST);
7671                        unaryExpression_AST = (AST)currentAST.root;
7672                        break;
7673                }
7674                case MINUS:
7675                {
7676                        AST tmp202_AST = null;
7677                        tmp202_AST = astFactory.create(LT(1));
7678                        astFactory.makeASTRoot(currentAST, tmp202_AST);
7679                        match(MINUS);
7680                        if ( inputState.guessing==0 ) {
7681                                tmp202_AST.setType(UNARY_MINUS);
7682                        }
7683                        unaryExpression();
7684                        astFactory.addASTChild(currentAST, returnAST);
7685                        unaryExpression_AST = (AST)currentAST.root;
7686                        break;
7687                }
7688                case PLUS:
7689                {
7690                        AST tmp203_AST = null;
7691                        tmp203_AST = astFactory.create(LT(1));
7692                        astFactory.makeASTRoot(currentAST, tmp203_AST);
7693                        match(PLUS);
7694                        if ( inputState.guessing==0 ) {
7695                                tmp203_AST.setType(UNARY_PLUS);
7696                        }
7697                        unaryExpression();
7698                        astFactory.addASTChild(currentAST, returnAST);
7699                        unaryExpression_AST = (AST)currentAST.root;
7700                        break;
7701                }
7702                case LITERAL_void:
7703                case LITERAL_boolean:
7704                case LITERAL_byte:
7705                case LITERAL_char:
7706                case LITERAL_short:
7707                case LITERAL_int:
7708                case LITERAL_float:
7709                case LITERAL_long:
7710                case LITERAL_double:
7711                case IDENT:
7712                case LPAREN:
7713                case LITERAL_this:
7714                case LITERAL_super:
7715                case BNOT:
7716                case LNOT:
7717                case LITERAL_true:
7718                case LITERAL_false:
7719                case LITERAL_null:
7720                case LITERAL_new:
7721                case NUM_INT:
7722                case CHAR_LITERAL:
7723                case STRING_LITERAL:
7724                case NUM_FLOAT:
7725                case NUM_LONG:
7726                case NUM_DOUBLE:
7727                case AT:
7728                case LITERAL_record:
7729                {
7730                        unaryExpressionNotPlusMinus();
7731                        astFactory.addASTChild(currentAST, returnAST);
7732                        unaryExpression_AST = (AST)currentAST.root;
7733                        break;
7734                }
7735                default:
7736                {
7737                        throw new NoViableAltException(LT(1), getFilename());
7738                }
7739                }
7740                returnAST = unaryExpression_AST;
7741        }
7742        
7743        public final void unaryExpressionNotPlusMinus() throws RecognitionException, TokenStreamException {
7744                
7745                returnAST = null;
7746                ASTPair currentAST = new ASTPair();
7747                AST unaryExpressionNotPlusMinus_AST = null;
7748                Token  lpb = null;
7749                AST lpb_AST = null;
7750                Token  lp = null;
7751                AST lp_AST = null;
7752                Token  lpl = null;
7753                AST lpl_AST = null;
7754                
7755                switch ( LA(1)) {
7756                case BNOT:
7757                {
7758                        AST tmp204_AST = null;
7759                        tmp204_AST = astFactory.create(LT(1));
7760                        astFactory.makeASTRoot(currentAST, tmp204_AST);
7761                        match(BNOT);
7762                        unaryExpression();
7763                        astFactory.addASTChild(currentAST, returnAST);
7764                        unaryExpressionNotPlusMinus_AST = (AST)currentAST.root;
7765                        break;
7766                }
7767                case LNOT:
7768                {
7769                        AST tmp205_AST = null;
7770                        tmp205_AST = astFactory.create(LT(1));
7771                        astFactory.makeASTRoot(currentAST, tmp205_AST);
7772                        match(LNOT);
7773                        unaryExpression();
7774                        astFactory.addASTChild(currentAST, returnAST);
7775                        unaryExpressionNotPlusMinus_AST = (AST)currentAST.root;
7776                        break;
7777                }
7778                case LITERAL_void:
7779                case LITERAL_boolean:
7780                case LITERAL_byte:
7781                case LITERAL_char:
7782                case LITERAL_short:
7783                case LITERAL_int:
7784                case LITERAL_float:
7785                case LITERAL_long:
7786                case LITERAL_double:
7787                case IDENT:
7788                case LPAREN:
7789                case LITERAL_this:
7790                case LITERAL_super:
7791                case LITERAL_true:
7792                case LITERAL_false:
7793                case LITERAL_null:
7794                case LITERAL_new:
7795                case NUM_INT:
7796                case CHAR_LITERAL:
7797                case STRING_LITERAL:
7798                case NUM_FLOAT:
7799                case NUM_LONG:
7800                case NUM_DOUBLE:
7801                case AT:
7802                case LITERAL_record:
7803                {
7804                        {
7805                        boolean synPredMatched367 = false;
7806                        if (((LA(1)==LPAREN) && ((LA(2) >= LITERAL_void && LA(2) <= LITERAL_double)))) {
7807                                int _m367 = mark();
7808                                synPredMatched367 = true;
7809                                inputState.guessing++;
7810                                try {
7811                                        {
7812                                        match(LPAREN);
7813                                        builtInTypeSpec(true);
7814                                        match(RPAREN);
7815                                        unaryExpression();
7816                                        }
7817                                }
7818                                catch (RecognitionException pe) {
7819                                        synPredMatched367 = false;
7820                                }
7821                                rewind(_m367);
7822inputState.guessing--;
7823                        }
7824                        if ( synPredMatched367 ) {
7825                                lpb = LT(1);
7826                                lpb_AST = astFactory.create(lpb);
7827                                astFactory.makeASTRoot(currentAST, lpb_AST);
7828                                match(LPAREN);
7829                                if ( inputState.guessing==0 ) {
7830                                        lpb_AST.setType(TYPECAST);
7831                                }
7832                                builtInTypeSpec(true);
7833                                astFactory.addASTChild(currentAST, returnAST);
7834                                AST tmp206_AST = null;
7835                                tmp206_AST = astFactory.create(LT(1));
7836                                astFactory.addASTChild(currentAST, tmp206_AST);
7837                                match(RPAREN);
7838                                unaryExpression();
7839                                astFactory.addASTChild(currentAST, returnAST);
7840                        }
7841                        else {
7842                                boolean synPredMatched369 = false;
7843                                if (((LA(1)==LPAREN) && (_tokenSet_7.member(LA(2))))) {
7844                                        int _m369 = mark();
7845                                        synPredMatched369 = true;
7846                                        inputState.guessing++;
7847                                        try {
7848                                                {
7849                                                match(LPAREN);
7850                                                typeCastParameters();
7851                                                match(RPAREN);
7852                                                unaryExpressionNotPlusMinus();
7853                                                }
7854                                        }
7855                                        catch (RecognitionException pe) {
7856                                                synPredMatched369 = false;
7857                                        }
7858                                        rewind(_m369);
7859inputState.guessing--;
7860                                }
7861                                if ( synPredMatched369 ) {
7862                                        lp = LT(1);
7863                                        lp_AST = astFactory.create(lp);
7864                                        astFactory.makeASTRoot(currentAST, lp_AST);
7865                                        match(LPAREN);
7866                                        if ( inputState.guessing==0 ) {
7867                                                lp_AST.setType(TYPECAST);
7868                                        }
7869                                        typeCastParameters();
7870                                        astFactory.addASTChild(currentAST, returnAST);
7871                                        AST tmp207_AST = null;
7872                                        tmp207_AST = astFactory.create(LT(1));
7873                                        astFactory.addASTChild(currentAST, tmp207_AST);
7874                                        match(RPAREN);
7875                                        unaryExpressionNotPlusMinus();
7876                                        astFactory.addASTChild(currentAST, returnAST);
7877                                }
7878                                else {
7879                                        boolean synPredMatched371 = false;
7880                                        if (((LA(1)==LPAREN) && (_tokenSet_7.member(LA(2))))) {
7881                                                int _m371 = mark();
7882                                                synPredMatched371 = true;
7883                                                inputState.guessing++;
7884                                                try {
7885                                                        {
7886                                                        match(LPAREN);
7887                                                        typeCastParameters();
7888                                                        match(RPAREN);
7889                                                        lambdaExpression();
7890                                                        }
7891                                                }
7892                                                catch (RecognitionException pe) {
7893                                                        synPredMatched371 = false;
7894                                                }
7895                                                rewind(_m371);
7896inputState.guessing--;
7897                                        }
7898                                        if ( synPredMatched371 ) {
7899                                                lpl = LT(1);
7900                                                lpl_AST = astFactory.create(lpl);
7901                                                astFactory.makeASTRoot(currentAST, lpl_AST);
7902                                                match(LPAREN);
7903                                                if ( inputState.guessing==0 ) {
7904                                                        lpl_AST.setType(TYPECAST);
7905                                                }
7906                                                typeCastParameters();
7907                                                astFactory.addASTChild(currentAST, returnAST);
7908                                                AST tmp208_AST = null;
7909                                                tmp208_AST = astFactory.create(LT(1));
7910                                                astFactory.addASTChild(currentAST, tmp208_AST);
7911                                                match(RPAREN);
7912                                                lambdaExpression();
7913                                                astFactory.addASTChild(currentAST, returnAST);
7914                                        }
7915                                        else if ((_tokenSet_54.member(LA(1))) && (_tokenSet_22.member(LA(2)))) {
7916                                                postfixExpression();
7917                                                astFactory.addASTChild(currentAST, returnAST);
7918                                        }
7919                                        else {
7920                                                throw new NoViableAltException(LT(1), getFilename());
7921                                        }
7922                                        }}
7923                                        }
7924                                        unaryExpressionNotPlusMinus_AST = (AST)currentAST.root;
7925                                        break;
7926                                }
7927                                default:
7928                                {
7929                                        throw new NoViableAltException(LT(1), getFilename());
7930                                }
7931                                }
7932                                returnAST = unaryExpressionNotPlusMinus_AST;
7933                        }
7934                        
7935        public final void typeCastParameters() throws RecognitionException, TokenStreamException {
7936                
7937                returnAST = null;
7938                ASTPair currentAST = new ASTPair();
7939                AST typeCastParameters_AST = null;
7940                Token  b = null;
7941                AST b_AST = null;
7942                
7943                classTypeSpec(true);
7944                astFactory.addASTChild(currentAST, returnAST);
7945                {
7946                _loop374:
7947                do {
7948                        if ((LA(1)==BAND)) {
7949                                b = LT(1);
7950                                b_AST = astFactory.create(b);
7951                                astFactory.addASTChild(currentAST, b_AST);
7952                                match(BAND);
7953                                if ( inputState.guessing==0 ) {
7954                                        b_AST.setType(TYPE_EXTENSION_AND);
7955                                }
7956                                classTypeSpec(true);
7957                                astFactory.addASTChild(currentAST, returnAST);
7958                        }
7959                        else {
7960                                break _loop374;
7961                        }
7962                        
7963                } while (true);
7964                }
7965                typeCastParameters_AST = (AST)currentAST.root;
7966                returnAST = typeCastParameters_AST;
7967        }
7968        
7969        public final void postfixExpression() throws RecognitionException, TokenStreamException {
7970                
7971                returnAST = null;
7972                ASTPair currentAST = new ASTPair();
7973                AST postfixExpression_AST = null;
7974                Token  dc = null;
7975                AST dc_AST = null;
7976                Token  lbc = null;
7977                AST lbc_AST = null;
7978                Token  lb = null;
7979                AST lb_AST = null;
7980                Token  lp = null;
7981                AST lp_AST = null;
7982                Token  in = null;
7983                AST in_AST = null;
7984                Token  de = null;
7985                AST de_AST = null;
7986                
7987                primaryExpression();
7988                astFactory.addASTChild(currentAST, returnAST);
7989                {
7990                _loop386:
7991                do {
7992                        switch ( LA(1)) {
7993                        case DOT:
7994                        {
7995                                AST tmp209_AST = null;
7996                                tmp209_AST = astFactory.create(LT(1));
7997                                astFactory.makeASTRoot(currentAST, tmp209_AST);
7998                                match(DOT);
7999                                {
8000                                switch ( LA(1)) {
8001                                case IDENT:
8002                                case LITERAL_this:
8003                                case LITERAL_super:
8004                                case LT:
8005                                case LITERAL_record:
8006                                {
8007                                        {
8008                                        switch ( LA(1)) {
8009                                        case LT:
8010                                        {
8011                                                typeArguments(false);
8012                                                astFactory.addASTChild(currentAST, returnAST);
8013                                                break;
8014                                        }
8015                                        case IDENT:
8016                                        case LITERAL_this:
8017                                        case LITERAL_super:
8018                                        case LITERAL_record:
8019                                        {
8020                                                break;
8021                                        }
8022                                        default:
8023                                        {
8024                                                throw new NoViableAltException(LT(1), getFilename());
8025                                        }
8026                                        }
8027                                        }
8028                                        {
8029                                        switch ( LA(1)) {
8030                                        case IDENT:
8031                                        case LITERAL_record:
8032                                        {
8033                                                id();
8034                                                astFactory.addASTChild(currentAST, returnAST);
8035                                                break;
8036                                        }
8037                                        case LITERAL_this:
8038                                        {
8039                                                AST tmp210_AST = null;
8040                                                tmp210_AST = astFactory.create(LT(1));
8041                                                astFactory.addASTChild(currentAST, tmp210_AST);
8042                                                match(LITERAL_this);
8043                                                break;
8044                                        }
8045                                        case LITERAL_super:
8046                                        {
8047                                                AST tmp211_AST = null;
8048                                                tmp211_AST = astFactory.create(LT(1));
8049                                                astFactory.addASTChild(currentAST, tmp211_AST);
8050                                                match(LITERAL_super);
8051                                                break;
8052                                        }
8053                                        default:
8054                                        {
8055                                                throw new NoViableAltException(LT(1), getFilename());
8056                                        }
8057                                        }
8058                                        }
8059                                        break;
8060                                }
8061                                case LITERAL_class:
8062                                {
8063                                        AST tmp212_AST = null;
8064                                        tmp212_AST = astFactory.create(LT(1));
8065                                        astFactory.addASTChild(currentAST, tmp212_AST);
8066                                        match(LITERAL_class);
8067                                        break;
8068                                }
8069                                case LITERAL_new:
8070                                {
8071                                        newExpression();
8072                                        astFactory.addASTChild(currentAST, returnAST);
8073                                        break;
8074                                }
8075                                default:
8076                                {
8077                                        throw new NoViableAltException(LT(1), getFilename());
8078                                }
8079                                }
8080                                }
8081                                break;
8082                        }
8083                        case DOUBLE_COLON:
8084                        {
8085                                dc = LT(1);
8086                                dc_AST = astFactory.create(dc);
8087                                astFactory.makeASTRoot(currentAST, dc_AST);
8088                                match(DOUBLE_COLON);
8089                                if ( inputState.guessing==0 ) {
8090                                        dc_AST.setType(METHOD_REF);
8091                                }
8092                                {
8093                                {
8094                                switch ( LA(1)) {
8095                                case LT:
8096                                {
8097                                        typeArguments(false);
8098                                        astFactory.addASTChild(currentAST, returnAST);
8099                                        break;
8100                                }
8101                                case IDENT:
8102                                case LITERAL_new:
8103                                case LITERAL_record:
8104                                {
8105                                        break;
8106                                }
8107                                default:
8108                                {
8109                                        throw new NoViableAltException(LT(1), getFilename());
8110                                }
8111                                }
8112                                }
8113                                {
8114                                switch ( LA(1)) {
8115                                case IDENT:
8116                                case LITERAL_record:
8117                                {
8118                                        id();
8119                                        astFactory.addASTChild(currentAST, returnAST);
8120                                        break;
8121                                }
8122                                case LITERAL_new:
8123                                {
8124                                        AST tmp213_AST = null;
8125                                        tmp213_AST = astFactory.create(LT(1));
8126                                        astFactory.addASTChild(currentAST, tmp213_AST);
8127                                        match(LITERAL_new);
8128                                        break;
8129                                }
8130                                default:
8131                                {
8132                                        throw new NoViableAltException(LT(1), getFilename());
8133                                }
8134                                }
8135                                }
8136                                }
8137                                break;
8138                        }
8139                        default:
8140                                if ((LA(1)==LBRACK) && (LA(2)==RBRACK)) {
8141                                        {
8142                                        int _cnt384=0;
8143                                        _loop384:
8144                                        do {
8145                                                if ((LA(1)==LBRACK) && (LA(2)==RBRACK)) {
8146                                                        lbc = LT(1);
8147                                                        lbc_AST = astFactory.create(lbc);
8148                                                        astFactory.makeASTRoot(currentAST, lbc_AST);
8149                                                        match(LBRACK);
8150                                                        if ( inputState.guessing==0 ) {
8151                                                                lbc_AST.setType(ARRAY_DECLARATOR);
8152                                                        }
8153                                                        AST tmp214_AST = null;
8154                                                        tmp214_AST = astFactory.create(LT(1));
8155                                                        astFactory.addASTChild(currentAST, tmp214_AST);
8156                                                        match(RBRACK);
8157                                                }
8158                                                else {
8159                                                        if ( _cnt384>=1 ) { break _loop384; } else {throw new NoViableAltException(LT(1), getFilename());}
8160                                                }
8161                                                
8162                                                _cnt384++;
8163                                        } while (true);
8164                                        }
8165                                        {
8166                                        if ((LA(1)==DOT) && (LA(2)==LITERAL_class)) {
8167                                                AST tmp215_AST = null;
8168                                                tmp215_AST = astFactory.create(LT(1));
8169                                                astFactory.makeASTRoot(currentAST, tmp215_AST);
8170                                                match(DOT);
8171                                                AST tmp216_AST = null;
8172                                                tmp216_AST = astFactory.create(LT(1));
8173                                                astFactory.addASTChild(currentAST, tmp216_AST);
8174                                                match(LITERAL_class);
8175                                        }
8176                                        else if ((_tokenSet_22.member(LA(1))) && (_tokenSet_57.member(LA(2)))) {
8177                                        }
8178                                        else {
8179                                                throw new NoViableAltException(LT(1), getFilename());
8180                                        }
8181                                        
8182                                        }
8183                                }
8184                                else if ((LA(1)==LBRACK) && (_tokenSet_16.member(LA(2)))) {
8185                                        lb = LT(1);
8186                                        lb_AST = astFactory.create(lb);
8187                                        astFactory.makeASTRoot(currentAST, lb_AST);
8188                                        match(LBRACK);
8189                                        if ( inputState.guessing==0 ) {
8190                                                lb_AST.setType(INDEX_OP);
8191                                        }
8192                                        expression();
8193                                        astFactory.addASTChild(currentAST, returnAST);
8194                                        AST tmp217_AST = null;
8195                                        tmp217_AST = astFactory.create(LT(1));
8196                                        astFactory.addASTChild(currentAST, tmp217_AST);
8197                                        match(RBRACK);
8198                                }
8199                                else if ((LA(1)==LPAREN) && (_tokenSet_80.member(LA(2)))) {
8200                                        lp = LT(1);
8201                                        lp_AST = astFactory.create(lp);
8202                                        astFactory.makeASTRoot(currentAST, lp_AST);
8203                                        match(LPAREN);
8204                                        if ( inputState.guessing==0 ) {
8205                                                lp_AST.setType(METHOD_CALL);
8206                                        }
8207                                        argList();
8208                                        astFactory.addASTChild(currentAST, returnAST);
8209                                        AST tmp218_AST = null;
8210                                        tmp218_AST = astFactory.create(LT(1));
8211                                        astFactory.addASTChild(currentAST, tmp218_AST);
8212                                        match(RPAREN);
8213                                }
8214                        else {
8215                                break _loop386;
8216                        }
8217                        }
8218                } while (true);
8219                }
8220                {
8221                if ((LA(1)==INC) && (_tokenSet_78.member(LA(2)))) {
8222                        in = LT(1);
8223                        in_AST = astFactory.create(in);
8224                        astFactory.makeASTRoot(currentAST, in_AST);
8225                        match(INC);
8226                        if ( inputState.guessing==0 ) {
8227                                in_AST.setType(POST_INC);
8228                        }
8229                }
8230                else if ((LA(1)==DEC) && (_tokenSet_78.member(LA(2)))) {
8231                        de = LT(1);
8232                        de_AST = astFactory.create(de);
8233                        astFactory.makeASTRoot(currentAST, de_AST);
8234                        match(DEC);
8235                        if ( inputState.guessing==0 ) {
8236                                de_AST.setType(POST_DEC);
8237                        }
8238                }
8239                else if ((_tokenSet_78.member(LA(1))) && (_tokenSet_57.member(LA(2)))) {
8240                }
8241                else {
8242                        throw new NoViableAltException(LT(1), getFilename());
8243                }
8244                
8245                }
8246                postfixExpression_AST = (AST)currentAST.root;
8247                returnAST = postfixExpression_AST;
8248        }
8249        
8250/** object instantiation.
8251 *  Trees are built as illustrated by the following input/tree pairs:
8252 *
8253 *  new T()
8254 *
8255 *  new
8256 *   |
8257 *   T --  ELIST
8258 *           |
8259 *          arg1 -- arg2 -- .. -- argn
8260 *
8261 *  new int[]
8262 *
8263 *  new
8264 *   |
8265 *  int -- ARRAY_DECLARATOR
8266 *
8267 *  new int[] {1,2}
8268 *
8269 *  new
8270 *   |
8271 *  int -- ARRAY_DECLARATOR -- ARRAY_INIT
8272 *                                  |
8273 *                                EXPR -- EXPR
8274 *                                  |      |
8275 *                                  1      2
8276 *
8277 *  new int[3]
8278 *  new
8279 *   |
8280 *  int -- ARRAY_DECLARATOR
8281 *                |
8282 *              EXPR
8283 *                |
8284 *                3
8285 *
8286 *  new int[1][2]
8287 *
8288 *  new
8289 *   |
8290 *  int -- ARRAY_DECLARATOR
8291 *               |
8292 *         ARRAY_DECLARATOR -- EXPR
8293 *               |              |
8294 *             EXPR             1
8295 *               |
8296 *               2
8297 *
8298 *
8299 * @throws RecognitionException if recognition problem occurs.
8300 * @throws TokenStreamException if problem occurs while generating a stream of tokens.
8301 */
8302        public final void newExpression() throws RecognitionException, TokenStreamException {
8303                
8304                returnAST = null;
8305                ASTPair currentAST = new ASTPair();
8306                AST newExpression_AST = null;
8307                
8308                AST tmp219_AST = null;
8309                tmp219_AST = astFactory.create(LT(1));
8310                astFactory.makeASTRoot(currentAST, tmp219_AST);
8311                match(LITERAL_new);
8312                {
8313                switch ( LA(1)) {
8314                case LT:
8315                {
8316                        typeArguments(false);
8317                        astFactory.addASTChild(currentAST, returnAST);
8318                        break;
8319                }
8320                case LITERAL_void:
8321                case LITERAL_boolean:
8322                case LITERAL_byte:
8323                case LITERAL_char:
8324                case LITERAL_short:
8325                case LITERAL_int:
8326                case LITERAL_float:
8327                case LITERAL_long:
8328                case LITERAL_double:
8329                case IDENT:
8330                case AT:
8331                case LITERAL_record:
8332                {
8333                        break;
8334                }
8335                default:
8336                {
8337                        throw new NoViableAltException(LT(1), getFilename());
8338                }
8339                }
8340                }
8341                type();
8342                astFactory.addASTChild(currentAST, returnAST);
8343                {
8344                switch ( LA(1)) {
8345                case LPAREN:
8346                {
8347                        AST tmp220_AST = null;
8348                        tmp220_AST = astFactory.create(LT(1));
8349                        astFactory.addASTChild(currentAST, tmp220_AST);
8350                        match(LPAREN);
8351                        argList();
8352                        astFactory.addASTChild(currentAST, returnAST);
8353                        AST tmp221_AST = null;
8354                        tmp221_AST = astFactory.create(LT(1));
8355                        astFactory.addASTChild(currentAST, tmp221_AST);
8356                        match(RPAREN);
8357                        {
8358                        if ((LA(1)==LCURLY) && (_tokenSet_38.member(LA(2)))) {
8359                                classBlock();
8360                                astFactory.addASTChild(currentAST, returnAST);
8361                        }
8362                        else if ((_tokenSet_22.member(LA(1))) && (_tokenSet_57.member(LA(2)))) {
8363                        }
8364                        else {
8365                                throw new NoViableAltException(LT(1), getFilename());
8366                        }
8367                        
8368                        }
8369                        break;
8370                }
8371                case LBRACK:
8372                case AT:
8373                {
8374                        newArrayDeclarator();
8375                        astFactory.addASTChild(currentAST, returnAST);
8376                        {
8377                        if ((LA(1)==LCURLY) && (_tokenSet_81.member(LA(2)))) {
8378                                arrayInitializer();
8379                                astFactory.addASTChild(currentAST, returnAST);
8380                        }
8381                        else if ((_tokenSet_22.member(LA(1))) && (_tokenSet_57.member(LA(2)))) {
8382                        }
8383                        else {
8384                                throw new NoViableAltException(LT(1), getFilename());
8385                        }
8386                        
8387                        }
8388                        break;
8389                }
8390                default:
8391                {
8392                        throw new NoViableAltException(LT(1), getFilename());
8393                }
8394                }
8395                }
8396                newExpression_AST = (AST)currentAST.root;
8397                returnAST = newExpression_AST;
8398        }
8399        
8400        public final void constant() throws RecognitionException, TokenStreamException {
8401                
8402                returnAST = null;
8403                ASTPair currentAST = new ASTPair();
8404                AST constant_AST = null;
8405                
8406                switch ( LA(1)) {
8407                case NUM_INT:
8408                {
8409                        AST tmp222_AST = null;
8410                        tmp222_AST = astFactory.create(LT(1));
8411                        astFactory.addASTChild(currentAST, tmp222_AST);
8412                        match(NUM_INT);
8413                        constant_AST = (AST)currentAST.root;
8414                        break;
8415                }
8416                case NUM_LONG:
8417                {
8418                        AST tmp223_AST = null;
8419                        tmp223_AST = astFactory.create(LT(1));
8420                        astFactory.addASTChild(currentAST, tmp223_AST);
8421                        match(NUM_LONG);
8422                        constant_AST = (AST)currentAST.root;
8423                        break;
8424                }
8425                case NUM_FLOAT:
8426                {
8427                        AST tmp224_AST = null;
8428                        tmp224_AST = astFactory.create(LT(1));
8429                        astFactory.addASTChild(currentAST, tmp224_AST);
8430                        match(NUM_FLOAT);
8431                        constant_AST = (AST)currentAST.root;
8432                        break;
8433                }
8434                case NUM_DOUBLE:
8435                {
8436                        AST tmp225_AST = null;
8437                        tmp225_AST = astFactory.create(LT(1));
8438                        astFactory.addASTChild(currentAST, tmp225_AST);
8439                        match(NUM_DOUBLE);
8440                        constant_AST = (AST)currentAST.root;
8441                        break;
8442                }
8443                case CHAR_LITERAL:
8444                {
8445                        AST tmp226_AST = null;
8446                        tmp226_AST = astFactory.create(LT(1));
8447                        astFactory.addASTChild(currentAST, tmp226_AST);
8448                        match(CHAR_LITERAL);
8449                        constant_AST = (AST)currentAST.root;
8450                        break;
8451                }
8452                case STRING_LITERAL:
8453                {
8454                        AST tmp227_AST = null;
8455                        tmp227_AST = astFactory.create(LT(1));
8456                        astFactory.addASTChild(currentAST, tmp227_AST);
8457                        match(STRING_LITERAL);
8458                        constant_AST = (AST)currentAST.root;
8459                        break;
8460                }
8461                default:
8462                {
8463                        throw new NoViableAltException(LT(1), getFilename());
8464                }
8465                }
8466                returnAST = constant_AST;
8467        }
8468        
8469        public final void newArrayDeclarator() throws RecognitionException, TokenStreamException {
8470                
8471                returnAST = null;
8472                ASTPair currentAST = new ASTPair();
8473                AST newArrayDeclarator_AST = null;
8474                Token  lb = null;
8475                AST lb_AST = null;
8476                
8477                {
8478                int _cnt408=0;
8479                _loop408:
8480                do {
8481                        if ((LA(1)==LBRACK||LA(1)==AT) && (_tokenSet_82.member(LA(2)))) {
8482                                {
8483                                if (((LA(1)==LBRACK||LA(1)==AT) && (_tokenSet_82.member(LA(2))))&&(LA(1) == AT)) {
8484                                        annotations();
8485                                        astFactory.addASTChild(currentAST, returnAST);
8486                                }
8487                                else if ((LA(1)==LBRACK) && (_tokenSet_82.member(LA(2)))) {
8488                                }
8489                                else {
8490                                        throw new NoViableAltException(LT(1), getFilename());
8491                                }
8492                                
8493                                }
8494                                lb = LT(1);
8495                                lb_AST = astFactory.create(lb);
8496                                astFactory.makeASTRoot(currentAST, lb_AST);
8497                                match(LBRACK);
8498                                if ( inputState.guessing==0 ) {
8499                                        lb_AST.setType(ARRAY_DECLARATOR);
8500                                }
8501                                {
8502                                switch ( LA(1)) {
8503                                case LITERAL_void:
8504                                case LITERAL_boolean:
8505                                case LITERAL_byte:
8506                                case LITERAL_char:
8507                                case LITERAL_short:
8508                                case LITERAL_int:
8509                                case LITERAL_float:
8510                                case LITERAL_long:
8511                                case LITERAL_double:
8512                                case IDENT:
8513                                case LPAREN:
8514                                case LITERAL_this:
8515                                case LITERAL_super:
8516                                case PLUS:
8517                                case MINUS:
8518                                case INC:
8519                                case DEC:
8520                                case BNOT:
8521                                case LNOT:
8522                                case LITERAL_true:
8523                                case LITERAL_false:
8524                                case LITERAL_null:
8525                                case LITERAL_new:
8526                                case NUM_INT:
8527                                case CHAR_LITERAL:
8528                                case STRING_LITERAL:
8529                                case NUM_FLOAT:
8530                                case NUM_LONG:
8531                                case NUM_DOUBLE:
8532                                case AT:
8533                                case LITERAL_record:
8534                                {
8535                                        expression();
8536                                        astFactory.addASTChild(currentAST, returnAST);
8537                                        break;
8538                                }
8539                                case RBRACK:
8540                                {
8541                                        break;
8542                                }
8543                                default:
8544                                {
8545                                        throw new NoViableAltException(LT(1), getFilename());
8546                                }
8547                                }
8548                                }
8549                                AST tmp228_AST = null;
8550                                tmp228_AST = astFactory.create(LT(1));
8551                                astFactory.addASTChild(currentAST, tmp228_AST);
8552                                match(RBRACK);
8553                        }
8554                        else {
8555                                if ( _cnt408>=1 ) { break _loop408; } else {throw new NoViableAltException(LT(1), getFilename());}
8556                        }
8557                        
8558                        _cnt408++;
8559                } while (true);
8560                }
8561                newArrayDeclarator_AST = (AST)currentAST.root;
8562                returnAST = newArrayDeclarator_AST;
8563        }
8564        
8565        public final void lambdaParameters() throws RecognitionException, TokenStreamException {
8566                
8567                returnAST = null;
8568                ASTPair currentAST = new ASTPair();
8569                AST lambdaParameters_AST = null;
8570                
8571                switch ( LA(1)) {
8572                case IDENT:
8573                case LITERAL_record:
8574                {
8575                        id();
8576                        astFactory.addASTChild(currentAST, returnAST);
8577                        lambdaParameters_AST = (AST)currentAST.root;
8578                        break;
8579                }
8580                case LPAREN:
8581                {
8582                        AST tmp229_AST = null;
8583                        tmp229_AST = astFactory.create(LT(1));
8584                        astFactory.addASTChild(currentAST, tmp229_AST);
8585                        match(LPAREN);
8586                        {
8587                        if ((_tokenSet_83.member(LA(1))) && (_tokenSet_84.member(LA(2)))) {
8588                                parameterDeclarationList();
8589                                astFactory.addASTChild(currentAST, returnAST);
8590                        }
8591                        else if ((LA(1)==RPAREN) && (LA(2)==LAMBDA)) {
8592                        }
8593                        else {
8594                                throw new NoViableAltException(LT(1), getFilename());
8595                        }
8596                        
8597                        }
8598                        AST tmp230_AST = null;
8599                        tmp230_AST = astFactory.create(LT(1));
8600                        astFactory.addASTChild(currentAST, tmp230_AST);
8601                        match(RPAREN);
8602                        lambdaParameters_AST = (AST)currentAST.root;
8603                        break;
8604                }
8605                default:
8606                {
8607                        throw new NoViableAltException(LT(1), getFilename());
8608                }
8609                }
8610                returnAST = lambdaParameters_AST;
8611        }
8612        
8613        public final void lambdaBody() throws RecognitionException, TokenStreamException {
8614                
8615                returnAST = null;
8616                ASTPair currentAST = new ASTPair();
8617                AST lambdaBody_AST = null;
8618                
8619                {
8620                if ((_tokenSet_16.member(LA(1))) && (_tokenSet_85.member(LA(2)))) {
8621                        expression();
8622                        astFactory.addASTChild(currentAST, returnAST);
8623                }
8624                else if ((_tokenSet_44.member(LA(1))) && (_tokenSet_85.member(LA(2)))) {
8625                        statement();
8626                        astFactory.addASTChild(currentAST, returnAST);
8627                }
8628                else {
8629                        throw new NoViableAltException(LT(1), getFilename());
8630                }
8631                
8632                }
8633                lambdaBody_AST = (AST)currentAST.root;
8634                returnAST = lambdaBody_AST;
8635        }
8636        
8637        public final void recordKey() throws RecognitionException, TokenStreamException {
8638                
8639                returnAST = null;
8640                ASTPair currentAST = new ASTPair();
8641                AST recordKey_AST = null;
8642                
8643                AST tmp231_AST = null;
8644                tmp231_AST = astFactory.create(LT(1));
8645                astFactory.addASTChild(currentAST, tmp231_AST);
8646                match(LITERAL_record);
8647                if ( inputState.guessing==0 ) {
8648                        recordKey_AST = (AST)currentAST.root;
8649                        recordKey_AST.setType(IDENT);
8650                }
8651                recordKey_AST = (AST)currentAST.root;
8652                returnAST = recordKey_AST;
8653        }
8654        
8655        
8656        public static final String[] _tokenNames = {
8657                "<0>",
8658                "EOF",
8659                "<2>",
8660                "NULL_TREE_LOOKAHEAD",
8661                "BLOCK",
8662                "MODIFIERS",
8663                "OBJBLOCK",
8664                "SLIST",
8665                "CTOR_DEF",
8666                "METHOD_DEF",
8667                "VARIABLE_DEF",
8668                "INSTANCE_INIT",
8669                "STATIC_INIT",
8670                "TYPE",
8671                "CLASS_DEF",
8672                "INTERFACE_DEF",
8673                "PACKAGE_DEF",
8674                "ARRAY_DECLARATOR",
8675                "EXTENDS_CLAUSE",
8676                "IMPLEMENTS_CLAUSE",
8677                "PARAMETERS",
8678                "PARAMETER_DEF",
8679                "LABELED_STAT",
8680                "TYPECAST",
8681                "INDEX_OP",
8682                "POST_INC",
8683                "POST_DEC",
8684                "METHOD_CALL",
8685                "EXPR",
8686                "ARRAY_INIT",
8687                "IMPORT",
8688                "UNARY_MINUS",
8689                "UNARY_PLUS",
8690                "CASE_GROUP",
8691                "ELIST",
8692                "FOR_INIT",
8693                "FOR_CONDITION",
8694                "FOR_ITERATOR",
8695                "EMPTY_STAT",
8696                "\"final\"",
8697                "\"abstract\"",
8698                "\"strictfp\"",
8699                "SUPER_CTOR_CALL",
8700                "CTOR_CALL",
8701                "\"package\"",
8702                "SEMI",
8703                "\"import\"",
8704                "LBRACK",
8705                "RBRACK",
8706                "\"void\"",
8707                "\"boolean\"",
8708                "\"byte\"",
8709                "\"char\"",
8710                "\"short\"",
8711                "\"int\"",
8712                "\"float\"",
8713                "\"long\"",
8714                "\"double\"",
8715                "IDENT",
8716                "DOT",
8717                "STAR",
8718                "\"private\"",
8719                "\"public\"",
8720                "\"protected\"",
8721                "\"static\"",
8722                "\"transient\"",
8723                "\"native\"",
8724                "\"synchronized\"",
8725                "\"volatile\"",
8726                "\"class\"",
8727                "\"extends\"",
8728                "\"interface\"",
8729                "LCURLY",
8730                "RCURLY",
8731                "COMMA",
8732                "\"implements\"",
8733                "LPAREN",
8734                "RPAREN",
8735                "\"this\"",
8736                "\"super\"",
8737                "ASSIGN",
8738                "\"throws\"",
8739                "COLON",
8740                "\"if\"",
8741                "\"while\"",
8742                "\"do\"",
8743                "\"break\"",
8744                "\"continue\"",
8745                "\"return\"",
8746                "\"switch\"",
8747                "\"throw\"",
8748                "\"for\"",
8749                "\"else\"",
8750                "\"case\"",
8751                "\"default\"",
8752                "\"try\"",
8753                "\"catch\"",
8754                "\"finally\"",
8755                "PLUS_ASSIGN",
8756                "MINUS_ASSIGN",
8757                "STAR_ASSIGN",
8758                "DIV_ASSIGN",
8759                "MOD_ASSIGN",
8760                "SR_ASSIGN",
8761                "BSR_ASSIGN",
8762                "SL_ASSIGN",
8763                "BAND_ASSIGN",
8764                "BXOR_ASSIGN",
8765                "BOR_ASSIGN",
8766                "QUESTION",
8767                "LOR",
8768                "LAND",
8769                "BOR",
8770                "BXOR",
8771                "BAND",
8772                "NOT_EQUAL",
8773                "EQUAL",
8774                "LT",
8775                "GT",
8776                "LE",
8777                "GE",
8778                "\"instanceof\"",
8779                "SL",
8780                "SR",
8781                "BSR",
8782                "PLUS",
8783                "MINUS",
8784                "DIV",
8785                "MOD",
8786                "INC",
8787                "DEC",
8788                "BNOT",
8789                "LNOT",
8790                "\"true\"",
8791                "\"false\"",
8792                "\"null\"",
8793                "\"new\"",
8794                "NUM_INT",
8795                "CHAR_LITERAL",
8796                "STRING_LITERAL",
8797                "NUM_FLOAT",
8798                "NUM_LONG",
8799                "NUM_DOUBLE",
8800                "WS",
8801                "SINGLE_LINE_COMMENT",
8802                "BLOCK_COMMENT_BEGIN",
8803                "ESC",
8804                "HEX_DIGIT",
8805                "VOCAB",
8806                "EXPONENT",
8807                "FLOAT_SUFFIX",
8808                "ASSERT",
8809                "STATIC_IMPORT",
8810                "ENUM",
8811                "ENUM_DEF",
8812                "ENUM_CONSTANT_DEF",
8813                "FOR_EACH_CLAUSE",
8814                "ANNOTATION_DEF",
8815                "ANNOTATIONS",
8816                "ANNOTATION",
8817                "ANNOTATION_MEMBER_VALUE_PAIR",
8818                "ANNOTATION_FIELD_DEF",
8819                "ANNOTATION_ARRAY_INIT",
8820                "TYPE_ARGUMENTS",
8821                "TYPE_ARGUMENT",
8822                "TYPE_PARAMETERS",
8823                "TYPE_PARAMETER",
8824                "WILDCARD_TYPE",
8825                "TYPE_UPPER_BOUNDS",
8826                "TYPE_LOWER_BOUNDS",
8827                "AT",
8828                "ELLIPSIS",
8829                "GENERIC_START",
8830                "GENERIC_END",
8831                "TYPE_EXTENSION_AND",
8832                "DO_WHILE",
8833                "RESOURCE_SPECIFICATION",
8834                "RESOURCES",
8835                "RESOURCE",
8836                "DOUBLE_COLON",
8837                "METHOD_REF",
8838                "LAMBDA",
8839                "BLOCK_COMMENT_END",
8840                "COMMENT_CONTENT",
8841                "SINGLE_LINE_COMMENT_CONTENT",
8842                "BLOCK_COMMENT_CONTENT",
8843                "STD_ESC",
8844                "BINARY_DIGIT",
8845                "ID_START",
8846                "ID_PART",
8847                "INT_LITERAL",
8848                "LONG_LITERAL",
8849                "FLOAT_LITERAL",
8850                "DOUBLE_LITERAL",
8851                "HEX_FLOAT_LITERAL",
8852                "HEX_DOUBLE_LITERAL",
8853                "SIGNED_INTEGER",
8854                "BINARY_EXPONENT",
8855                "PATTERN_VARIABLE_DEF",
8856                "RECORD_DEF",
8857                "\"record\""
8858        };
8859        
8860        protected void buildTokenTypeASTClassMap() {
8861                tokenTypeToASTClassMap=null;
8862        };
8863        
8864        private static final long[] mk_tokenSet_0() {
8865                long[] data = new long[8];
8866                data[0]=-2305733607806730238L;
8867                data[1]=1073742015L;
8868                data[2]=4398080065536L;
8869                data[3]=256L;
8870                return data;
8871        }
8872        public static final BitSet _tokenSet_0 = new BitSet(mk_tokenSet_0());
8873        private static final long[] mk_tokenSet_1() {
8874                long[] data = new long[8];
8875                data[0]=-2017503231655018494L;
8876                data[1]=1073742015L;
8877                data[2]=4398080065536L;
8878                data[3]=256L;
8879                return data;
8880        }
8881        public static final BitSet _tokenSet_1 = new BitSet(mk_tokenSet_1());
8882        private static final long[] mk_tokenSet_2() {
8883                long[] data = new long[8];
8884                data[0]=-2305803976550907904L;
8885                data[1]=1073742015L;
8886                data[2]=4398080065536L;
8887                data[3]=256L;
8888                return data;
8889        }
8890        public static final BitSet _tokenSet_2 = new BitSet(mk_tokenSet_2());
8891        private static final long[] mk_tokenSet_3() {
8892                long[] data = new long[8];
8893                data[0]=-2305803976550907902L;
8894                data[1]=1073742015L;
8895                data[2]=4398080065536L;
8896                data[3]=256L;
8897                return data;
8898        }
8899        public static final BitSet _tokenSet_3 = new BitSet(mk_tokenSet_3());
8900        private static final long[] mk_tokenSet_4() {
8901                long[] data = { -2305839160922996736L, 1073741855L, 0L, 0L};
8902                return data;
8903        }
8904        public static final BitSet _tokenSet_4 = new BitSet(mk_tokenSet_4());
8905        private static final long[] mk_tokenSet_5() {
8906                long[] data = new long[8];
8907                data[0]=288511851128422400L;
8908                data[3]=256L;
8909                return data;
8910        }
8911        public static final BitSet _tokenSet_5 = new BitSet(mk_tokenSet_5());
8912        private static final long[] mk_tokenSet_6() {
8913                long[] data = { 140737488355328L, 0L, 13194139533312L, 0L, 0L, 0L};
8914                return data;
8915        }
8916        public static final BitSet _tokenSet_6 = new BitSet(mk_tokenSet_6());
8917        private static final long[] mk_tokenSet_7() {
8918                long[] data = new long[8];
8919                data[0]=288230376151711744L;
8920                data[2]=4398046511104L;
8921                data[3]=256L;
8922                return data;
8923        }
8924        public static final BitSet _tokenSet_7 = new BitSet(mk_tokenSet_7());
8925        private static final long[] mk_tokenSet_8() {
8926                long[] data = new long[8];
8927                data[0]=-101704825569280L;
8928                data[1]=-12885032961L;
8929                data[2]=2264993995194367L;
8930                data[3]=256L;
8931                return data;
8932        }
8933        public static final BitSet _tokenSet_8 = new BitSet(mk_tokenSet_8());
8934        private static final long[] mk_tokenSet_9() {
8935                long[] data = new long[8];
8936                data[0]=-84112639524862L;
8937                data[1]=-131073L;
8938                data[2]=11272193249935359L;
8939                data[3]=256L;
8940                return data;
8941        }
8942        public static final BitSet _tokenSet_9 = new BitSet(mk_tokenSet_9());
8943        private static final long[] mk_tokenSet_10() {
8944                long[] data = new long[8];
8945                data[0]=575897802350002176L;
8946                data[1]=35184372088832L;
8947                data[2]=4398046511104L;
8948                data[3]=256L;
8949                return data;
8950        }
8951        public static final BitSet _tokenSet_10 = new BitSet(mk_tokenSet_10());
8952        private static final long[] mk_tokenSet_11() {
8953                long[] data = { 0L, 1747396655419752448L, 0L, 0L};
8954                return data;
8955        }
8956        public static final BitSet _tokenSet_11 = new BitSet(mk_tokenSet_11());
8957        private static final long[] mk_tokenSet_12() {
8958                long[] data = new long[8];
8959                data[0]=575897802350002176L;
8960                data[2]=4398046511104L;
8961                data[3]=256L;
8962                return data;
8963        }
8964        public static final BitSet _tokenSet_12 = new BitSet(mk_tokenSet_12());
8965        private static final long[] mk_tokenSet_13() {
8966                long[] data = new long[8];
8967                data[0]=864831865943490560L;
8968                data[1]=9007199254745088L;
8969                data[2]=4398046511104L;
8970                data[3]=256L;
8971                return data;
8972        }
8973        public static final BitSet _tokenSet_13 = new BitSet(mk_tokenSet_13());
8974        private static final long[] mk_tokenSet_14() {
8975                long[] data = new long[8];
8976                data[0]=575897802350002176L;
8977                data[1]=6917529027641135360L;
8978                data[2]=4398046543870L;
8979                data[3]=256L;
8980                return data;
8981        }
8982        public static final BitSet _tokenSet_14 = new BitSet(mk_tokenSet_14());
8983        private static final long[] mk_tokenSet_15() {
8984                long[] data = new long[8];
8985                data[0]=2305420796748627968L;
8986                data[1]=-35184372026880L;
8987                data[2]=2256197860229119L;
8988                data[3]=256L;
8989                return data;
8990        }
8991        public static final BitSet _tokenSet_15 = new BitSet(mk_tokenSet_15());
8992        private static final long[] mk_tokenSet_16() {
8993                long[] data = new long[8];
8994                data[0]=575897802350002176L;
8995                data[1]=6917529027641135104L;
8996                data[2]=4398046543870L;
8997                data[3]=256L;
8998                return data;
8999        }
9000        public static final BitSet _tokenSet_16 = new BitSet(mk_tokenSet_16());
9001        private static final long[] mk_tokenSet_17() {
9002                long[] data = new long[8];
9003                data[0]=2305455981120716800L;
9004                data[1]=-35184372026368L;
9005                data[2]=2256197860229119L;
9006                data[3]=256L;
9007                return data;
9008        }
9009        public static final BitSet _tokenSet_17 = new BitSet(mk_tokenSet_17());
9010        private static final long[] mk_tokenSet_18() {
9011                long[] data = new long[8];
9012                data[0]=2305420796748627968L;
9013                data[1]=-35184372034048L;
9014                data[2]=2256197860229119L;
9015                data[3]=256L;
9016                return data;
9017        }
9018        public static final BitSet _tokenSet_18 = new BitSet(mk_tokenSet_18());
9019        private static final long[] mk_tokenSet_19() {
9020                long[] data = new long[8];
9021                data[0]=288230376151711744L;
9022                data[1]=4096L;
9023                data[3]=256L;
9024                return data;
9025        }
9026        public static final BitSet _tokenSet_19 = new BitSet(mk_tokenSet_19());
9027        private static final long[] mk_tokenSet_20() {
9028                long[] data = new long[8];
9029                data[0]=575898352105816064L;
9030                data[1]=24576L;
9031                data[2]=9011597301252096L;
9032                data[3]=256L;
9033                return data;
9034        }
9035        public static final BitSet _tokenSet_20 = new BitSet(mk_tokenSet_20());
9036        private static final long[] mk_tokenSet_21() {
9037                long[] data = new long[8];
9038                data[0]=2305420796748627968L;
9039                data[1]=-17179488256L;
9040                data[2]=2256197860229119L;
9041                data[3]=256L;
9042                return data;
9043        }
9044        public static final BitSet _tokenSet_21 = new BitSet(mk_tokenSet_21());
9045        private static final long[] mk_tokenSet_22() {
9046                long[] data = new long[8];
9047                data[0]=-101704825569280L;
9048                data[1]=-12885035073L;
9049                data[2]=2256197902172159L;
9050                data[3]=256L;
9051                return data;
9052        }
9053        public static final BitSet _tokenSet_22 = new BitSet(mk_tokenSet_22());
9054        private static final long[] mk_tokenSet_23() {
9055                long[] data = new long[8];
9056                data[0]=-2017608784771284992L;
9057                data[1]=1073741855L;
9058                data[2]=4398046511104L;
9059                data[3]=256L;
9060                return data;
9061        }
9062        public static final BitSet _tokenSet_23 = new BitSet(mk_tokenSet_23());
9063        private static final long[] mk_tokenSet_24() {
9064                long[] data = new long[8];
9065                data[0]=-2017608784771284992L;
9066                data[1]=1073742111L;
9067                data[2]=4398046511104L;
9068                data[3]=256L;
9069                return data;
9070        }
9071        public static final BitSet _tokenSet_24 = new BitSet(mk_tokenSet_24());
9072        private static final long[] mk_tokenSet_25() {
9073                long[] data = new long[8];
9074                data[0]=-1729941358572994560L;
9075                data[1]=9007200328483263L;
9076                data[2]=4398080065536L;
9077                data[3]=256L;
9078                return data;
9079        }
9080        public static final BitSet _tokenSet_25 = new BitSet(mk_tokenSet_25());
9081        private static final long[] mk_tokenSet_26() {
9082                long[] data = new long[8];
9083                data[0]=-1153304684409126912L;
9084                data[1]=6926536230385013695L;
9085                data[2]=4398088486910L;
9086                data[3]=256L;
9087                return data;
9088        }
9089        public static final BitSet _tokenSet_26 = new BitSet(mk_tokenSet_26());
9090        private static final long[] mk_tokenSet_27() {
9091                long[] data = new long[8];
9092                data[0]=864831865943490560L;
9093                data[1]=9007199254740992L;
9094                data[2]=4398046511104L;
9095                data[3]=256L;
9096                return data;
9097        }
9098        public static final BitSet _tokenSet_27 = new BitSet(mk_tokenSet_27());
9099        private static final long[] mk_tokenSet_28() {
9100                long[] data = new long[8];
9101                data[0]=575898352105816064L;
9102                data[2]=4398046511104L;
9103                data[3]=256L;
9104                return data;
9105        }
9106        public static final BitSet _tokenSet_28 = new BitSet(mk_tokenSet_28());
9107        private static final long[] mk_tokenSet_29() {
9108                long[] data = new long[8];
9109                data[0]=1152499292141780992L;
9110                data[1]=9007199254740992L;
9111                data[2]=13194139533312L;
9112                data[3]=256L;
9113                return data;
9114        }
9115        public static final BitSet _tokenSet_29 = new BitSet(mk_tokenSet_29());
9116        private static final long[] mk_tokenSet_30() {
9117                long[] data = new long[8];
9118                data[0]=-1729906174200905728L;
9119                data[1]=9007200328951743L;
9120                data[2]=4398080065536L;
9121                data[3]=256L;
9122                return data;
9123        }
9124        public static final BitSet _tokenSet_30 = new BitSet(mk_tokenSet_30());
9125        private static final long[] mk_tokenSet_31() {
9126                long[] data = new long[8];
9127                data[0]=-101704825569278L;
9128                data[1]=-12884901953L;
9129                data[2]=11263397156913151L;
9130                data[3]=256L;
9131                return data;
9132        }
9133        public static final BitSet _tokenSet_31 = new BitSet(mk_tokenSet_31());
9134        private static final long[] mk_tokenSet_32() {
9135                long[] data = new long[8];
9136                data[0]=-1729941358572994560L;
9137                data[1]=9007200328483007L;
9138                data[2]=4398080065536L;
9139                data[3]=256L;
9140                return data;
9141        }
9142        public static final BitSet _tokenSet_32 = new BitSet(mk_tokenSet_32());
9143        private static final long[] mk_tokenSet_33() {
9144                long[] data = new long[8];
9145                data[0]=-1153339868781215744L;
9146                data[1]=9007200328487103L;
9147                data[2]=4398080065536L;
9148                data[3]=256L;
9149                return data;
9150        }
9151        public static final BitSet _tokenSet_33 = new BitSet(mk_tokenSet_33());
9152        private static final long[] mk_tokenSet_34() {
9153                long[] data = new long[8];
9154                data[1]=160L;
9155                data[2]=4398080065536L;
9156                data[3]=256L;
9157                return data;
9158        }
9159        public static final BitSet _tokenSet_34 = new BitSet(mk_tokenSet_34());
9160        private static final long[] mk_tokenSet_35() {
9161                long[] data = new long[8];
9162                data[0]=288230376151711744L;
9163                data[1]=128L;
9164                data[3]=256L;
9165                return data;
9166        }
9167        public static final BitSet _tokenSet_35 = new BitSet(mk_tokenSet_35());
9168        private static final long[] mk_tokenSet_36() {
9169                long[] data = new long[8];
9170                data[0]=575897802350002176L;
9171                data[1]=9007199254740992L;
9172                data[2]=4398046511104L;
9173                data[3]=256L;
9174                return data;
9175        }
9176        public static final BitSet _tokenSet_36 = new BitSet(mk_tokenSet_36());
9177        private static final long[] mk_tokenSet_37() {
9178                long[] data = new long[8];
9179                data[0]=-1729765436712550400L;
9180                data[1]=9007200328550335L;
9181                data[2]=4398080065536L;
9182                data[3]=256L;
9183                return data;
9184        }
9185        public static final BitSet _tokenSet_37 = new BitSet(mk_tokenSet_37());
9186        private static final long[] mk_tokenSet_38() {
9187                long[] data = new long[8];
9188                data[0]=-1729906174200905728L;
9189                data[1]=9007200328483775L;
9190                data[2]=4398080065536L;
9191                data[3]=256L;
9192                return data;
9193        }
9194        public static final BitSet _tokenSet_38 = new BitSet(mk_tokenSet_38());
9195        private static final long[] mk_tokenSet_39() {
9196                long[] data = new long[8];
9197                data[0]=-101704825569278L;
9198                data[1]=-12885035073L;
9199                data[2]=2256197902172159L;
9200                data[3]=256L;
9201                return data;
9202        }
9203        public static final BitSet _tokenSet_39 = new BitSet(mk_tokenSet_39());
9204        private static final long[] mk_tokenSet_40() {
9205                long[] data = new long[8];
9206                data[0]=575897802350002176L;
9207                data[1]=9007199254794240L;
9208                data[2]=4398046543840L;
9209                data[3]=256L;
9210                return data;
9211        }
9212        public static final BitSet _tokenSet_40 = new BitSet(mk_tokenSet_40());
9213        private static final long[] mk_tokenSet_41() {
9214                long[] data = new long[8];
9215                data[0]=1152499292141780992L;
9216                data[1]=8673968066687717376L;
9217                data[2]=4398046543870L;
9218                data[3]=256L;
9219                return data;
9220        }
9221        public static final BitSet _tokenSet_41 = new BitSet(mk_tokenSet_41());
9222        private static final long[] mk_tokenSet_42() {
9223                long[] data = new long[8];
9224                data[0]=-1729906174200905728L;
9225                data[1]=6917529031130272575L;
9226                data[2]=4398054932478L;
9227                data[3]=256L;
9228                return data;
9229        }
9230        public static final BitSet _tokenSet_42 = new BitSet(mk_tokenSet_42());
9231        private static final long[] mk_tokenSet_43() {
9232                long[] data = new long[8];
9233                data[0]=-383179802279936L;
9234                data[1]=-13690342465L;
9235                data[2]=11263397156913151L;
9236                data[3]=256L;
9237                return data;
9238        }
9239        public static final BitSet _tokenSet_43 = new BitSet(mk_tokenSet_43());
9240        private static final long[] mk_tokenSet_44() {
9241                long[] data = new long[8];
9242                data[0]=-1729906174200905728L;
9243                data[1]=6917529031130272063L;
9244                data[2]=4398054932478L;
9245                data[3]=256L;
9246                return data;
9247        }
9248        public static final BitSet _tokenSet_44 = new BitSet(mk_tokenSet_44());
9249        private static final long[] mk_tokenSet_45() {
9250                long[] data = new long[8];
9251                data[0]=575897802350002176L;
9252                data[1]=1747396655419759936L;
9253                data[2]=4398046511104L;
9254                data[3]=256L;
9255                return data;
9256        }
9257        public static final BitSet _tokenSet_45 = new BitSet(mk_tokenSet_45());
9258        private static final long[] mk_tokenSet_46() {
9259                long[] data = new long[8];
9260                data[0]=-1153304684409126912L;
9261                data[1]=9007200328498175L;
9262                data[2]=4398080065536L;
9263                data[3]=256L;
9264                return data;
9265        }
9266        public static final BitSet _tokenSet_46 = new BitSet(mk_tokenSet_46());
9267        private static final long[] mk_tokenSet_47() {
9268                long[] data = { 175921860444160L, 66560L, 4398046511104L, 0L, 0L, 0L};
9269                return data;
9270        }
9271        public static final BitSet _tokenSet_47 = new BitSet(mk_tokenSet_47());
9272        private static final long[] mk_tokenSet_48() {
9273                long[] data = new long[8];
9274                data[0]=575898352105816064L;
9275                data[1]=16384L;
9276                data[2]=4398046511104L;
9277                data[3]=256L;
9278                return data;
9279        }
9280        public static final BitSet _tokenSet_48 = new BitSet(mk_tokenSet_48());
9281        private static final long[] mk_tokenSet_49() {
9282                long[] data = new long[8];
9283                data[0]=1152499292141780992L;
9284                data[1]=9007199254766592L;
9285                data[2]=4398046511104L;
9286                data[3]=256L;
9287                return data;
9288        }
9289        public static final BitSet _tokenSet_49 = new BitSet(mk_tokenSet_49());
9290        private static final long[] mk_tokenSet_50() {
9291                long[] data = new long[8];
9292                data[0]=864726312827224064L;
9293                data[1]=1280L;
9294                data[3]=256L;
9295                return data;
9296        }
9297        public static final BitSet _tokenSet_50 = new BitSet(mk_tokenSet_50());
9298        private static final long[] mk_tokenSet_51() {
9299                long[] data = { 576495936675512320L, 1280L, 0L, 0L};
9300                return data;
9301        }
9302        public static final BitSet _tokenSet_51 = new BitSet(mk_tokenSet_51());
9303        private static final long[] mk_tokenSet_52() {
9304                long[] data = { 0L, 9007199254790144L, 0L, 0L};
9305                return data;
9306        }
9307        public static final BitSet _tokenSet_52 = new BitSet(mk_tokenSet_52());
9308        private static final long[] mk_tokenSet_53() {
9309                long[] data = new long[8];
9310                data[0]=575897802350002176L;
9311                data[1]=1747431839791894528L;
9312                data[2]=4398046511104L;
9313                data[3]=256L;
9314                return data;
9315        }
9316        public static final BitSet _tokenSet_53 = new BitSet(mk_tokenSet_53());
9317        private static final long[] mk_tokenSet_54() {
9318                long[] data = new long[8];
9319                data[0]=575897802350002176L;
9320                data[1]=53248L;
9321                data[2]=4398046543840L;
9322                data[3]=256L;
9323                return data;
9324        }
9325        public static final BitSet _tokenSet_54 = new BitSet(mk_tokenSet_54());
9326        private static final long[] mk_tokenSet_55() {
9327                long[] data = new long[8];
9328                data[0]=1152499292141780992L;
9329                data[1]=6926536226895876096L;
9330                data[2]=4398046543870L;
9331                data[3]=256L;
9332                return data;
9333        }
9334        public static final BitSet _tokenSet_55 = new BitSet(mk_tokenSet_55());
9335        private static final long[] mk_tokenSet_56() {
9336                long[] data = new long[8];
9337                data[0]=2305420796748627968L;
9338                data[1]=-17179742208L;
9339                data[2]=2256197860229119L;
9340                data[3]=256L;
9341                return data;
9342        }
9343        public static final BitSet _tokenSet_56 = new BitSet(mk_tokenSet_56());
9344        private static final long[] mk_tokenSet_57() {
9345                long[] data = new long[8];
9346                data[0]=-84112639524862L;
9347                data[1]=-133185L;
9348                data[2]=11272193249935359L;
9349                data[3]=256L;
9350                return data;
9351        }
9352        public static final BitSet _tokenSet_57 = new BitSet(mk_tokenSet_57());
9353        private static final long[] mk_tokenSet_58() {
9354                long[] data = new long[8];
9355                data[0]=864831865943490560L;
9356                data[1]=9007199254757376L;
9357                data[2]=4398046511104L;
9358                data[3]=256L;
9359                return data;
9360        }
9361        public static final BitSet _tokenSet_58 = new BitSet(mk_tokenSet_58());
9362        private static final long[] mk_tokenSet_59() {
9363                long[] data = new long[8];
9364                data[0]=288230376151711744L;
9365                data[1]=16384L;
9366                data[3]=256L;
9367                return data;
9368        }
9369        public static final BitSet _tokenSet_59 = new BitSet(mk_tokenSet_59());
9370        private static final long[] mk_tokenSet_60() {
9371                long[] data = { 576601489791778816L, 9216L, 4398046511104L, 0L, 0L, 0L};
9372                return data;
9373        }
9374        public static final BitSet _tokenSet_60 = new BitSet(mk_tokenSet_60());
9375        private static final long[] mk_tokenSet_61() {
9376                long[] data = new long[8];
9377                data[0]=-576984669594058752L;
9378                data[1]=-9007194959973569L;
9379                data[2]=4398054932479L;
9380                data[3]=256L;
9381                return data;
9382        }
9383        public static final BitSet _tokenSet_61 = new BitSet(mk_tokenSet_61());
9384        private static final long[] mk_tokenSet_62() {
9385                long[] data = new long[8];
9386                data[0]=-101704825569280L;
9387                data[1]=-133185L;
9388                data[2]=11263397156913151L;
9389                data[3]=256L;
9390                return data;
9391        }
9392        public static final BitSet _tokenSet_62 = new BitSet(mk_tokenSet_62());
9393        private static final long[] mk_tokenSet_63() {
9394                long[] data = new long[8];
9395                data[0]=-1729941358572994560L;
9396                data[1]=1073741855L;
9397                data[2]=4398046511104L;
9398                data[3]=256L;
9399                return data;
9400        }
9401        public static final BitSet _tokenSet_63 = new BitSet(mk_tokenSet_63());
9402        private static final long[] mk_tokenSet_64() {
9403                long[] data = new long[8];
9404                data[0]=-1153339868781215744L;
9405                data[1]=9007200328482847L;
9406                data[2]=4398046511104L;
9407                data[3]=256L;
9408                return data;
9409        }
9410        public static final BitSet _tokenSet_64 = new BitSet(mk_tokenSet_64());
9411        private static final long[] mk_tokenSet_65() {
9412                long[] data = new long[8];
9413                data[0]=-383179802279936L;
9414                data[1]=-12885036225L;
9415                data[2]=11263397123358719L;
9416                data[3]=256L;
9417                return data;
9418        }
9419        public static final BitSet _tokenSet_65 = new BitSet(mk_tokenSet_65());
9420        private static final long[] mk_tokenSet_66() {
9421                long[] data = { -2305839160922996736L, 1073741887L, 4398046511104L, 0L, 0L, 0L};
9422                return data;
9423        }
9424        public static final BitSet _tokenSet_66 = new BitSet(mk_tokenSet_66());
9425        private static final long[] mk_tokenSet_67() {
9426                long[] data = new long[8];
9427                data[0]=-2017608784771284992L;
9428                data[1]=1073741887L;
9429                data[2]=4398046511104L;
9430                data[3]=256L;
9431                return data;
9432        }
9433        public static final BitSet _tokenSet_67 = new BitSet(mk_tokenSet_67());
9434        private static final long[] mk_tokenSet_68() {
9435                long[] data = new long[8];
9436                data[0]=-1729906174200905728L;
9437                data[1]=6917529028714876959L;
9438                data[2]=4398046543870L;
9439                data[3]=256L;
9440                return data;
9441        }
9442        public static final BitSet _tokenSet_68 = new BitSet(mk_tokenSet_68());
9443        private static final long[] mk_tokenSet_69() {
9444                long[] data = new long[8];
9445                data[0]=-383179802279936L;
9446                data[1]=-16105999329L;
9447                data[2]=11263397114970111L;
9448                data[3]=256L;
9449                return data;
9450        }
9451        public static final BitSet _tokenSet_69 = new BitSet(mk_tokenSet_69());
9452        private static final long[] mk_tokenSet_70() {
9453                long[] data = new long[8];
9454                data[0]=575897802350002176L;
9455                data[1]=6917529027641397248L;
9456                data[2]=4398046543870L;
9457                data[3]=256L;
9458                return data;
9459        }
9460        public static final BitSet _tokenSet_70 = new BitSet(mk_tokenSet_70());
9461        private static final long[] mk_tokenSet_71() {
9462                long[] data = new long[8];
9463                data[0]=-383179802279936L;
9464                data[1]=-13153471681L;
9465                data[2]=11263397123358719L;
9466                data[3]=256L;
9467                return data;
9468        }
9469        public static final BitSet _tokenSet_71 = new BitSet(mk_tokenSet_71());
9470        private static final long[] mk_tokenSet_72() {
9471                long[] data = { 0L, 1610613248L, 0L, 0L};
9472                return data;
9473        }
9474        public static final BitSet _tokenSet_72 = new BitSet(mk_tokenSet_72());
9475        private static final long[] mk_tokenSet_73() {
9476                long[] data = new long[8];
9477                data[0]=2305456530876530688L;
9478                data[1]=-17179741184L;
9479                data[2]=11263397114970111L;
9480                data[3]=256L;
9481                return data;
9482        }
9483        public static final BitSet _tokenSet_73 = new BitSet(mk_tokenSet_73());
9484        private static final long[] mk_tokenSet_74() {
9485                long[] data = new long[8];
9486                data[0]=575898352105816064L;
9487                data[1]=53248L;
9488                data[2]=4398046543840L;
9489                data[3]=256L;
9490                return data;
9491        }
9492        public static final BitSet _tokenSet_74 = new BitSet(mk_tokenSet_74());
9493        private static final long[] mk_tokenSet_75() {
9494                long[] data = new long[8];
9495                data[0]=1152499292141780992L;
9496                data[1]=9007199254740992L;
9497                data[2]=4398046511104L;
9498                data[3]=256L;
9499                return data;
9500        }
9501        public static final BitSet _tokenSet_75 = new BitSet(mk_tokenSet_75());
9502        private static final long[] mk_tokenSet_76() {
9503                long[] data = new long[8];
9504                data[0]=1152534476513869824L;
9505                data[1]=6926536226895884288L;
9506                data[2]=4398046543870L;
9507                data[3]=256L;
9508                return data;
9509        }
9510        public static final BitSet _tokenSet_76 = new BitSet(mk_tokenSet_76());
9511        private static final long[] mk_tokenSet_77() {
9512                long[] data = new long[8];
9513                data[0]=-101704825569280L;
9514                data[1]=-12885035073L;
9515                data[2]=4398088486911L;
9516                data[3]=256L;
9517                return data;
9518        }
9519        public static final BitSet _tokenSet_77 = new BitSet(mk_tokenSet_77());
9520        private static final long[] mk_tokenSet_78() {
9521                long[] data = new long[8];
9522                data[0]=-576703194617348096L;
9523                data[1]=-12885035073L;
9524                data[2]=4398088486911L;
9525                data[3]=256L;
9526                return data;
9527        }
9528        public static final BitSet _tokenSet_78 = new BitSet(mk_tokenSet_78());
9529        private static final long[] mk_tokenSet_79() {
9530                long[] data = { 1152921504606846976L, -9223372036854775808L, 1L, 0L, 0L, 0L};
9531                return data;
9532        }
9533        public static final BitSet _tokenSet_79 = new BitSet(mk_tokenSet_79());
9534        private static final long[] mk_tokenSet_80() {
9535                long[] data = new long[8];
9536                data[0]=575897802350002176L;
9537                data[1]=6917529027641143296L;
9538                data[2]=4398046543870L;
9539                data[3]=256L;
9540                return data;
9541        }
9542        public static final BitSet _tokenSet_80 = new BitSet(mk_tokenSet_80());
9543        private static final long[] mk_tokenSet_81() {
9544                long[] data = new long[8];
9545                data[0]=575897802350002176L;
9546                data[1]=6917529027641136896L;
9547                data[2]=4398046543870L;
9548                data[3]=256L;
9549                return data;
9550        }
9551        public static final BitSet _tokenSet_81 = new BitSet(mk_tokenSet_81());
9552        private static final long[] mk_tokenSet_82() {
9553                long[] data = new long[8];
9554                data[0]=576179277326712832L;
9555                data[1]=6917529027641135104L;
9556                data[2]=4398046543870L;
9557                data[3]=256L;
9558                return data;
9559        }
9560        public static final BitSet _tokenSet_82 = new BitSet(mk_tokenSet_82());
9561        private static final long[] mk_tokenSet_83() {
9562                long[] data = new long[8];
9563                data[0]=575898352105816064L;
9564                data[1]=24576L;
9565                data[2]=4398046511104L;
9566                data[3]=256L;
9567                return data;
9568        }
9569        public static final BitSet _tokenSet_83 = new BitSet(mk_tokenSet_83());
9570        private static final long[] mk_tokenSet_84() {
9571                long[] data = new long[8];
9572                data[0]=1152499292141780992L;
9573                data[1]=9007199254766592L;
9574                data[2]=9020393394274304L;
9575                data[3]=256L;
9576                return data;
9577        }
9578        public static final BitSet _tokenSet_84 = new BitSet(mk_tokenSet_84());
9579        private static final long[] mk_tokenSet_85() {
9580                long[] data = new long[8];
9581                data[0]=-101704825569280L;
9582                data[1]=-12885035073L;
9583                data[2]=11263397156913151L;
9584                data[3]=256L;
9585                return data;
9586        }
9587        public static final BitSet _tokenSet_85 = new BitSet(mk_tokenSet_85());
9588        
9589        }