001    // $ANTLR 3.3 Nov 30, 2010 12:46:29 /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g 2013-04-29 18:42:52
002    
003    package org.apache.tapestry5.internal.antlr;
004    
005    
006    import org.antlr.runtime.*;
007    import java.util.Stack;
008    import java.util.List;
009    import java.util.ArrayList;
010    import java.util.Map;
011    import java.util.HashMap;
012    
013    import org.antlr.runtime.tree.*;
014    
015    public class PropertyExpressionParser extends org.apache.tapestry5.internal.antlr.BaseParser {
016        public static final String[] tokenNames = new String[] {
017            "<invalid>", "<EOR>", "<DOWN>", "<UP>", "INTEGER", "DEREF", "RANGEOP", "DECIMAL", "LETTER", "DIGIT", "SIGN", "LPAREN", "RPAREN", "LBRACKET", "RBRACKET", "COMMA", "BANG", "LBRACE", "RBRACE", "COLON", "QUOTE", "A", "E", "F", "H", "I", "L", "N", "R", "S", "T", "U", "NULL", "TRUE", "FALSE", "THIS", "JAVA_ID_START", "JAVA_ID_PART", "IDENTIFIER", "SAFEDEREF", "WS", "STRING", "NUMBER_OR_RANGEOP", "INVOKE", "LIST", "MAP", "NOT"
018        };
019        public static final int EOF=-1;
020        public static final int INTEGER=4;
021        public static final int DEREF=5;
022        public static final int RANGEOP=6;
023        public static final int DECIMAL=7;
024        public static final int LETTER=8;
025        public static final int DIGIT=9;
026        public static final int SIGN=10;
027        public static final int LPAREN=11;
028        public static final int RPAREN=12;
029        public static final int LBRACKET=13;
030        public static final int RBRACKET=14;
031        public static final int COMMA=15;
032        public static final int BANG=16;
033        public static final int LBRACE=17;
034        public static final int RBRACE=18;
035        public static final int COLON=19;
036        public static final int QUOTE=20;
037        public static final int A=21;
038        public static final int E=22;
039        public static final int F=23;
040        public static final int H=24;
041        public static final int I=25;
042        public static final int L=26;
043        public static final int N=27;
044        public static final int R=28;
045        public static final int S=29;
046        public static final int T=30;
047        public static final int U=31;
048        public static final int NULL=32;
049        public static final int TRUE=33;
050        public static final int FALSE=34;
051        public static final int THIS=35;
052        public static final int JAVA_ID_START=36;
053        public static final int JAVA_ID_PART=37;
054        public static final int IDENTIFIER=38;
055        public static final int SAFEDEREF=39;
056        public static final int WS=40;
057        public static final int STRING=41;
058        public static final int NUMBER_OR_RANGEOP=42;
059        public static final int INVOKE=43;
060        public static final int LIST=44;
061        public static final int MAP=45;
062        public static final int NOT=46;
063    
064        // delegates
065        // delegators
066    
067    
068            public PropertyExpressionParser(TokenStream input) {
069                this(input, new RecognizerSharedState());
070            }
071            public PropertyExpressionParser(TokenStream input, RecognizerSharedState state) {
072                super(input, state);
073                 
074            }
075            
076        protected TreeAdaptor adaptor = new CommonTreeAdaptor();
077    
078        public void setTreeAdaptor(TreeAdaptor adaptor) {
079            this.adaptor = adaptor;
080        }
081        public TreeAdaptor getTreeAdaptor() {
082            return adaptor;
083        }
084    
085        public String[] getTokenNames() { return PropertyExpressionParser.tokenNames; }
086        public String getGrammarFileName() { return "/home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g"; }
087    
088    
089        public static class start_return extends ParserRuleReturnScope {
090            CommonTree tree;
091            public Object getTree() { return tree; }
092        };
093    
094        // $ANTLR start "start"
095        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:45:1: start : expression EOF ;
096        public final PropertyExpressionParser.start_return start() throws RecognitionException {
097            PropertyExpressionParser.start_return retval = new PropertyExpressionParser.start_return();
098            retval.start = input.LT(1);
099    
100            CommonTree root_0 = null;
101    
102            Token EOF2=null;
103            PropertyExpressionParser.expression_return expression1 = null;
104    
105    
106            CommonTree EOF2_tree=null;
107    
108            try {
109                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:45:8: ( expression EOF )
110                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:45:10: expression EOF
111                {
112                root_0 = (CommonTree)adaptor.nil();
113    
114                pushFollow(FOLLOW_expression_in_start130);
115                expression1=expression();
116    
117                state._fsp--;
118                if (state.failed) return retval;
119                if ( state.backtracking==0 ) root_0 = (CommonTree)adaptor.becomeRoot(expression1.getTree(), root_0);
120                EOF2=(Token)match(input,EOF,FOLLOW_EOF_in_start133); if (state.failed) return retval;
121    
122                }
123    
124                retval.stop = input.LT(-1);
125    
126                if ( state.backtracking==0 ) {
127    
128                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
129                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
130                }
131            }
132            catch (RecognitionException re) {
133                reportError(re);
134                recover(input,re);
135            retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
136    
137            }
138            finally {
139            }
140            return retval;
141        }
142        // $ANTLR end "start"
143    
144        public static class expression_return extends ParserRuleReturnScope {
145            CommonTree tree;
146            public Object getTree() { return tree; }
147        };
148    
149        // $ANTLR start "expression"
150        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:47:1: expression : ( keyword | rangeOp | constant | propertyChain | list | notOp | map );
151        public final PropertyExpressionParser.expression_return expression() throws RecognitionException {
152            PropertyExpressionParser.expression_return retval = new PropertyExpressionParser.expression_return();
153            retval.start = input.LT(1);
154    
155            CommonTree root_0 = null;
156    
157            PropertyExpressionParser.keyword_return keyword3 = null;
158    
159            PropertyExpressionParser.rangeOp_return rangeOp4 = null;
160    
161            PropertyExpressionParser.constant_return constant5 = null;
162    
163            PropertyExpressionParser.propertyChain_return propertyChain6 = null;
164    
165            PropertyExpressionParser.list_return list7 = null;
166    
167            PropertyExpressionParser.notOp_return notOp8 = null;
168    
169            PropertyExpressionParser.map_return map9 = null;
170    
171    
172    
173            try {
174                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:48:2: ( keyword | rangeOp | constant | propertyChain | list | notOp | map )
175                int alt1=7;
176                alt1 = dfa1.predict(input);
177                switch (alt1) {
178                    case 1 :
179                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:48:4: keyword
180                        {
181                        root_0 = (CommonTree)adaptor.nil();
182    
183                        pushFollow(FOLLOW_keyword_in_expression145);
184                        keyword3=keyword();
185    
186                        state._fsp--;
187                        if (state.failed) return retval;
188                        if ( state.backtracking==0 ) adaptor.addChild(root_0, keyword3.getTree());
189    
190                        }
191                        break;
192                    case 2 :
193                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:49:4: rangeOp
194                        {
195                        root_0 = (CommonTree)adaptor.nil();
196    
197                        pushFollow(FOLLOW_rangeOp_in_expression150);
198                        rangeOp4=rangeOp();
199    
200                        state._fsp--;
201                        if (state.failed) return retval;
202                        if ( state.backtracking==0 ) adaptor.addChild(root_0, rangeOp4.getTree());
203    
204                        }
205                        break;
206                    case 3 :
207                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:50:4: constant
208                        {
209                        root_0 = (CommonTree)adaptor.nil();
210    
211                        pushFollow(FOLLOW_constant_in_expression155);
212                        constant5=constant();
213    
214                        state._fsp--;
215                        if (state.failed) return retval;
216                        if ( state.backtracking==0 ) adaptor.addChild(root_0, constant5.getTree());
217    
218                        }
219                        break;
220                    case 4 :
221                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:51:4: propertyChain
222                        {
223                        root_0 = (CommonTree)adaptor.nil();
224    
225                        pushFollow(FOLLOW_propertyChain_in_expression160);
226                        propertyChain6=propertyChain();
227    
228                        state._fsp--;
229                        if (state.failed) return retval;
230                        if ( state.backtracking==0 ) adaptor.addChild(root_0, propertyChain6.getTree());
231    
232                        }
233                        break;
234                    case 5 :
235                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:52:4: list
236                        {
237                        root_0 = (CommonTree)adaptor.nil();
238    
239                        pushFollow(FOLLOW_list_in_expression165);
240                        list7=list();
241    
242                        state._fsp--;
243                        if (state.failed) return retval;
244                        if ( state.backtracking==0 ) adaptor.addChild(root_0, list7.getTree());
245    
246                        }
247                        break;
248                    case 6 :
249                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:53:4: notOp
250                        {
251                        root_0 = (CommonTree)adaptor.nil();
252    
253                        pushFollow(FOLLOW_notOp_in_expression170);
254                        notOp8=notOp();
255    
256                        state._fsp--;
257                        if (state.failed) return retval;
258                        if ( state.backtracking==0 ) adaptor.addChild(root_0, notOp8.getTree());
259    
260                        }
261                        break;
262                    case 7 :
263                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:54:4: map
264                        {
265                        root_0 = (CommonTree)adaptor.nil();
266    
267                        pushFollow(FOLLOW_map_in_expression175);
268                        map9=map();
269    
270                        state._fsp--;
271                        if (state.failed) return retval;
272                        if ( state.backtracking==0 ) adaptor.addChild(root_0, map9.getTree());
273    
274                        }
275                        break;
276    
277                }
278                retval.stop = input.LT(-1);
279    
280                if ( state.backtracking==0 ) {
281    
282                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
283                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
284                }
285            }
286            catch (RecognitionException re) {
287                reportError(re);
288                recover(input,re);
289            retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
290    
291            }
292            finally {
293            }
294            return retval;
295        }
296        // $ANTLR end "expression"
297    
298        public static class keyword_return extends ParserRuleReturnScope {
299            CommonTree tree;
300            public Object getTree() { return tree; }
301        };
302    
303        // $ANTLR start "keyword"
304        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:57:1: keyword : ( NULL | TRUE | FALSE | THIS );
305        public final PropertyExpressionParser.keyword_return keyword() throws RecognitionException {
306            PropertyExpressionParser.keyword_return retval = new PropertyExpressionParser.keyword_return();
307            retval.start = input.LT(1);
308    
309            CommonTree root_0 = null;
310    
311            Token set10=null;
312    
313            CommonTree set10_tree=null;
314    
315            try {
316                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:57:9: ( NULL | TRUE | FALSE | THIS )
317                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:
318                {
319                root_0 = (CommonTree)adaptor.nil();
320    
321                set10=(Token)input.LT(1);
322                if ( (input.LA(1)>=NULL && input.LA(1)<=THIS) ) {
323                    input.consume();
324                    if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set10));
325                    state.errorRecovery=false;state.failed=false;
326                }
327                else {
328                    if (state.backtracking>0) {state.failed=true; return retval;}
329                    MismatchedSetException mse = new MismatchedSetException(null,input);
330                    throw mse;
331                }
332    
333    
334                }
335    
336                retval.stop = input.LT(-1);
337    
338                if ( state.backtracking==0 ) {
339    
340                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
341                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
342                }
343            }
344            catch (RecognitionException re) {
345                reportError(re);
346                recover(input,re);
347            retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
348    
349            }
350            finally {
351            }
352            return retval;
353        }
354        // $ANTLR end "keyword"
355    
356        public static class constant_return extends ParserRuleReturnScope {
357            CommonTree tree;
358            public Object getTree() { return tree; }
359        };
360    
361        // $ANTLR start "constant"
362        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:59:1: constant : ( INTEGER | DECIMAL | STRING );
363        public final PropertyExpressionParser.constant_return constant() throws RecognitionException {
364            PropertyExpressionParser.constant_return retval = new PropertyExpressionParser.constant_return();
365            retval.start = input.LT(1);
366    
367            CommonTree root_0 = null;
368    
369            Token set11=null;
370    
371            CommonTree set11_tree=null;
372    
373            try {
374                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:59:9: ( INTEGER | DECIMAL | STRING )
375                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:
376                {
377                root_0 = (CommonTree)adaptor.nil();
378    
379                set11=(Token)input.LT(1);
380                if ( input.LA(1)==INTEGER||input.LA(1)==DECIMAL||input.LA(1)==STRING ) {
381                    input.consume();
382                    if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set11));
383                    state.errorRecovery=false;state.failed=false;
384                }
385                else {
386                    if (state.backtracking>0) {state.failed=true; return retval;}
387                    MismatchedSetException mse = new MismatchedSetException(null,input);
388                    throw mse;
389                }
390    
391    
392                }
393    
394                retval.stop = input.LT(-1);
395    
396                if ( state.backtracking==0 ) {
397    
398                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
399                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
400                }
401            }
402            catch (RecognitionException re) {
403                reportError(re);
404                recover(input,re);
405            retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
406    
407            }
408            finally {
409            }
410            return retval;
411        }
412        // $ANTLR end "constant"
413    
414        public static class propertyChain_return extends ParserRuleReturnScope {
415            CommonTree tree;
416            public Object getTree() { return tree; }
417        };
418    
419        // $ANTLR start "propertyChain"
420        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:61:1: propertyChain : ( term DEREF propertyChain -> ^( DEREF term propertyChain ) | term SAFEDEREF propertyChain -> ^( SAFEDEREF term propertyChain ) | term );
421        public final PropertyExpressionParser.propertyChain_return propertyChain() throws RecognitionException {
422            PropertyExpressionParser.propertyChain_return retval = new PropertyExpressionParser.propertyChain_return();
423            retval.start = input.LT(1);
424    
425            CommonTree root_0 = null;
426    
427            Token DEREF13=null;
428            Token SAFEDEREF16=null;
429            PropertyExpressionParser.term_return term12 = null;
430    
431            PropertyExpressionParser.propertyChain_return propertyChain14 = null;
432    
433            PropertyExpressionParser.term_return term15 = null;
434    
435            PropertyExpressionParser.propertyChain_return propertyChain17 = null;
436    
437            PropertyExpressionParser.term_return term18 = null;
438    
439    
440            CommonTree DEREF13_tree=null;
441            CommonTree SAFEDEREF16_tree=null;
442            RewriteRuleTokenStream stream_DEREF=new RewriteRuleTokenStream(adaptor,"token DEREF");
443            RewriteRuleTokenStream stream_SAFEDEREF=new RewriteRuleTokenStream(adaptor,"token SAFEDEREF");
444            RewriteRuleSubtreeStream stream_propertyChain=new RewriteRuleSubtreeStream(adaptor,"rule propertyChain");
445            RewriteRuleSubtreeStream stream_term=new RewriteRuleSubtreeStream(adaptor,"rule term");
446            try {
447                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:62:2: ( term DEREF propertyChain -> ^( DEREF term propertyChain ) | term SAFEDEREF propertyChain -> ^( SAFEDEREF term propertyChain ) | term )
448                int alt2=3;
449                int LA2_0 = input.LA(1);
450    
451                if ( (LA2_0==IDENTIFIER) ) {
452                    int LA2_1 = input.LA(2);
453    
454                    if ( (synpred12_PropertyExpressionParser()) ) {
455                        alt2=1;
456                    }
457                    else if ( (synpred13_PropertyExpressionParser()) ) {
458                        alt2=2;
459                    }
460                    else if ( (true) ) {
461                        alt2=3;
462                    }
463                    else {
464                        if (state.backtracking>0) {state.failed=true; return retval;}
465                        NoViableAltException nvae =
466                            new NoViableAltException("", 2, 1, input);
467    
468                        throw nvae;
469                    }
470                }
471                else {
472                    if (state.backtracking>0) {state.failed=true; return retval;}
473                    NoViableAltException nvae =
474                        new NoViableAltException("", 2, 0, input);
475    
476                    throw nvae;
477                }
478                switch (alt2) {
479                    case 1 :
480                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:62:4: term DEREF propertyChain
481                        {
482                        pushFollow(FOLLOW_term_in_propertyChain222);
483                        term12=term();
484    
485                        state._fsp--;
486                        if (state.failed) return retval;
487                        if ( state.backtracking==0 ) stream_term.add(term12.getTree());
488                        DEREF13=(Token)match(input,DEREF,FOLLOW_DEREF_in_propertyChain224); if (state.failed) return retval; 
489                        if ( state.backtracking==0 ) stream_DEREF.add(DEREF13);
490    
491                        pushFollow(FOLLOW_propertyChain_in_propertyChain226);
492                        propertyChain14=propertyChain();
493    
494                        state._fsp--;
495                        if (state.failed) return retval;
496                        if ( state.backtracking==0 ) stream_propertyChain.add(propertyChain14.getTree());
497    
498    
499                        // AST REWRITE
500                        // elements: DEREF, term, propertyChain
501                        // token labels: 
502                        // rule labels: retval
503                        // token list labels: 
504                        // rule list labels: 
505                        // wildcard labels: 
506                        if ( state.backtracking==0 ) {
507                        retval.tree = root_0;
508                        RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
509    
510                        root_0 = (CommonTree)adaptor.nil();
511                        // 62:29: -> ^( DEREF term propertyChain )
512                        {
513                            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:62:32: ^( DEREF term propertyChain )
514                            {
515                            CommonTree root_1 = (CommonTree)adaptor.nil();
516                            root_1 = (CommonTree)adaptor.becomeRoot(stream_DEREF.nextNode(), root_1);
517    
518                            adaptor.addChild(root_1, stream_term.nextTree());
519                            adaptor.addChild(root_1, stream_propertyChain.nextTree());
520    
521                            adaptor.addChild(root_0, root_1);
522                            }
523    
524                        }
525    
526                        retval.tree = root_0;}
527                        }
528                        break;
529                    case 2 :
530                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:63:4: term SAFEDEREF propertyChain
531                        {
532                        pushFollow(FOLLOW_term_in_propertyChain241);
533                        term15=term();
534    
535                        state._fsp--;
536                        if (state.failed) return retval;
537                        if ( state.backtracking==0 ) stream_term.add(term15.getTree());
538                        SAFEDEREF16=(Token)match(input,SAFEDEREF,FOLLOW_SAFEDEREF_in_propertyChain243); if (state.failed) return retval; 
539                        if ( state.backtracking==0 ) stream_SAFEDEREF.add(SAFEDEREF16);
540    
541                        pushFollow(FOLLOW_propertyChain_in_propertyChain245);
542                        propertyChain17=propertyChain();
543    
544                        state._fsp--;
545                        if (state.failed) return retval;
546                        if ( state.backtracking==0 ) stream_propertyChain.add(propertyChain17.getTree());
547    
548    
549                        // AST REWRITE
550                        // elements: SAFEDEREF, propertyChain, term
551                        // token labels: 
552                        // rule labels: retval
553                        // token list labels: 
554                        // rule list labels: 
555                        // wildcard labels: 
556                        if ( state.backtracking==0 ) {
557                        retval.tree = root_0;
558                        RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
559    
560                        root_0 = (CommonTree)adaptor.nil();
561                        // 63:33: -> ^( SAFEDEREF term propertyChain )
562                        {
563                            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:63:36: ^( SAFEDEREF term propertyChain )
564                            {
565                            CommonTree root_1 = (CommonTree)adaptor.nil();
566                            root_1 = (CommonTree)adaptor.becomeRoot(stream_SAFEDEREF.nextNode(), root_1);
567    
568                            adaptor.addChild(root_1, stream_term.nextTree());
569                            adaptor.addChild(root_1, stream_propertyChain.nextTree());
570    
571                            adaptor.addChild(root_0, root_1);
572                            }
573    
574                        }
575    
576                        retval.tree = root_0;}
577                        }
578                        break;
579                    case 3 :
580                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:64:4: term
581                        {
582                        root_0 = (CommonTree)adaptor.nil();
583    
584                        pushFollow(FOLLOW_term_in_propertyChain260);
585                        term18=term();
586    
587                        state._fsp--;
588                        if (state.failed) return retval;
589                        if ( state.backtracking==0 ) adaptor.addChild(root_0, term18.getTree());
590    
591                        }
592                        break;
593    
594                }
595                retval.stop = input.LT(-1);
596    
597                if ( state.backtracking==0 ) {
598    
599                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
600                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
601                }
602            }
603            catch (RecognitionException re) {
604                reportError(re);
605                recover(input,re);
606            retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
607    
608            }
609            finally {
610            }
611            return retval;
612        }
613        // $ANTLR end "propertyChain"
614    
615        public static class term_return extends ParserRuleReturnScope {
616            CommonTree tree;
617            public Object getTree() { return tree; }
618        };
619    
620        // $ANTLR start "term"
621        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:67:1: term : ( IDENTIFIER | methodInvocation );
622        public final PropertyExpressionParser.term_return term() throws RecognitionException {
623            PropertyExpressionParser.term_return retval = new PropertyExpressionParser.term_return();
624            retval.start = input.LT(1);
625    
626            CommonTree root_0 = null;
627    
628            Token IDENTIFIER19=null;
629            PropertyExpressionParser.methodInvocation_return methodInvocation20 = null;
630    
631    
632            CommonTree IDENTIFIER19_tree=null;
633    
634            try {
635                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:67:6: ( IDENTIFIER | methodInvocation )
636                int alt3=2;
637                int LA3_0 = input.LA(1);
638    
639                if ( (LA3_0==IDENTIFIER) ) {
640                    int LA3_1 = input.LA(2);
641    
642                    if ( (LA3_1==LPAREN) ) {
643                        alt3=2;
644                    }
645                    else if ( (LA3_1==EOF||(LA3_1>=DEREF && LA3_1<=RANGEOP)||LA3_1==RPAREN||(LA3_1>=RBRACKET && LA3_1<=COMMA)||(LA3_1>=RBRACE && LA3_1<=COLON)||LA3_1==SAFEDEREF) ) {
646                        alt3=1;
647                    }
648                    else {
649                        if (state.backtracking>0) {state.failed=true; return retval;}
650                        NoViableAltException nvae =
651                            new NoViableAltException("", 3, 1, input);
652    
653                        throw nvae;
654                    }
655                }
656                else {
657                    if (state.backtracking>0) {state.failed=true; return retval;}
658                    NoViableAltException nvae =
659                        new NoViableAltException("", 3, 0, input);
660    
661                    throw nvae;
662                }
663                switch (alt3) {
664                    case 1 :
665                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:67:8: IDENTIFIER
666                        {
667                        root_0 = (CommonTree)adaptor.nil();
668    
669                        IDENTIFIER19=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_term272); if (state.failed) return retval;
670                        if ( state.backtracking==0 ) {
671                        IDENTIFIER19_tree = (CommonTree)adaptor.create(IDENTIFIER19);
672                        adaptor.addChild(root_0, IDENTIFIER19_tree);
673                        }
674    
675                        }
676                        break;
677                    case 2 :
678                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:68:4: methodInvocation
679                        {
680                        root_0 = (CommonTree)adaptor.nil();
681    
682                        pushFollow(FOLLOW_methodInvocation_in_term277);
683                        methodInvocation20=methodInvocation();
684    
685                        state._fsp--;
686                        if (state.failed) return retval;
687                        if ( state.backtracking==0 ) adaptor.addChild(root_0, methodInvocation20.getTree());
688    
689                        }
690                        break;
691    
692                }
693                retval.stop = input.LT(-1);
694    
695                if ( state.backtracking==0 ) {
696    
697                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
698                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
699                }
700            }
701            catch (RecognitionException re) {
702                reportError(re);
703                recover(input,re);
704            retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
705    
706            }
707            finally {
708            }
709            return retval;
710        }
711        // $ANTLR end "term"
712    
713        public static class methodInvocation_return extends ParserRuleReturnScope {
714            CommonTree tree;
715            public Object getTree() { return tree; }
716        };
717    
718        // $ANTLR start "methodInvocation"
719        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:71:1: methodInvocation : (id= IDENTIFIER LPAREN RPAREN -> ^( INVOKE $id) | id= IDENTIFIER LPAREN expressionList RPAREN -> ^( INVOKE $id expressionList ) );
720        public final PropertyExpressionParser.methodInvocation_return methodInvocation() throws RecognitionException {
721            PropertyExpressionParser.methodInvocation_return retval = new PropertyExpressionParser.methodInvocation_return();
722            retval.start = input.LT(1);
723    
724            CommonTree root_0 = null;
725    
726            Token id=null;
727            Token LPAREN21=null;
728            Token RPAREN22=null;
729            Token LPAREN23=null;
730            Token RPAREN25=null;
731            PropertyExpressionParser.expressionList_return expressionList24 = null;
732    
733    
734            CommonTree id_tree=null;
735            CommonTree LPAREN21_tree=null;
736            CommonTree RPAREN22_tree=null;
737            CommonTree LPAREN23_tree=null;
738            CommonTree RPAREN25_tree=null;
739            RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
740            RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
741            RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
742            RewriteRuleSubtreeStream stream_expressionList=new RewriteRuleSubtreeStream(adaptor,"rule expressionList");
743            try {
744                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:72:2: (id= IDENTIFIER LPAREN RPAREN -> ^( INVOKE $id) | id= IDENTIFIER LPAREN expressionList RPAREN -> ^( INVOKE $id expressionList ) )
745                int alt4=2;
746                int LA4_0 = input.LA(1);
747    
748                if ( (LA4_0==IDENTIFIER) ) {
749                    int LA4_1 = input.LA(2);
750    
751                    if ( (LA4_1==LPAREN) ) {
752                        int LA4_2 = input.LA(3);
753    
754                        if ( (LA4_2==RPAREN) ) {
755                            alt4=1;
756                        }
757                        else if ( (LA4_2==INTEGER||LA4_2==DECIMAL||LA4_2==LBRACKET||(LA4_2>=BANG && LA4_2<=LBRACE)||(LA4_2>=NULL && LA4_2<=THIS)||LA4_2==IDENTIFIER||LA4_2==STRING) ) {
758                            alt4=2;
759                        }
760                        else {
761                            if (state.backtracking>0) {state.failed=true; return retval;}
762                            NoViableAltException nvae =
763                                new NoViableAltException("", 4, 2, input);
764    
765                            throw nvae;
766                        }
767                    }
768                    else {
769                        if (state.backtracking>0) {state.failed=true; return retval;}
770                        NoViableAltException nvae =
771                            new NoViableAltException("", 4, 1, input);
772    
773                        throw nvae;
774                    }
775                }
776                else {
777                    if (state.backtracking>0) {state.failed=true; return retval;}
778                    NoViableAltException nvae =
779                        new NoViableAltException("", 4, 0, input);
780    
781                    throw nvae;
782                }
783                switch (alt4) {
784                    case 1 :
785                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:72:4: id= IDENTIFIER LPAREN RPAREN
786                        {
787                        id=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_methodInvocation291); if (state.failed) return retval; 
788                        if ( state.backtracking==0 ) stream_IDENTIFIER.add(id);
789    
790                        LPAREN21=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_methodInvocation293); if (state.failed) return retval; 
791                        if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN21);
792    
793                        RPAREN22=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_methodInvocation295); if (state.failed) return retval; 
794                        if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN22);
795    
796    
797    
798                        // AST REWRITE
799                        // elements: id
800                        // token labels: id
801                        // rule labels: retval
802                        // token list labels: 
803                        // rule list labels: 
804                        // wildcard labels: 
805                        if ( state.backtracking==0 ) {
806                        retval.tree = root_0;
807                        RewriteRuleTokenStream stream_id=new RewriteRuleTokenStream(adaptor,"token id",id);
808                        RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
809    
810                        root_0 = (CommonTree)adaptor.nil();
811                        // 72:32: -> ^( INVOKE $id)
812                        {
813                            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:72:35: ^( INVOKE $id)
814                            {
815                            CommonTree root_1 = (CommonTree)adaptor.nil();
816                            root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(INVOKE, "INVOKE"), root_1);
817    
818                            adaptor.addChild(root_1, stream_id.nextNode());
819    
820                            adaptor.addChild(root_0, root_1);
821                            }
822    
823                        }
824    
825                        retval.tree = root_0;}
826                        }
827                        break;
828                    case 2 :
829                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:73:4: id= IDENTIFIER LPAREN expressionList RPAREN
830                        {
831                        id=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_methodInvocation311); if (state.failed) return retval; 
832                        if ( state.backtracking==0 ) stream_IDENTIFIER.add(id);
833    
834                        LPAREN23=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_methodInvocation313); if (state.failed) return retval; 
835                        if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN23);
836    
837                        pushFollow(FOLLOW_expressionList_in_methodInvocation315);
838                        expressionList24=expressionList();
839    
840                        state._fsp--;
841                        if (state.failed) return retval;
842                        if ( state.backtracking==0 ) stream_expressionList.add(expressionList24.getTree());
843                        RPAREN25=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_methodInvocation317); if (state.failed) return retval; 
844                        if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN25);
845    
846    
847    
848                        // AST REWRITE
849                        // elements: id, expressionList
850                        // token labels: id
851                        // rule labels: retval
852                        // token list labels: 
853                        // rule list labels: 
854                        // wildcard labels: 
855                        if ( state.backtracking==0 ) {
856                        retval.tree = root_0;
857                        RewriteRuleTokenStream stream_id=new RewriteRuleTokenStream(adaptor,"token id",id);
858                        RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
859    
860                        root_0 = (CommonTree)adaptor.nil();
861                        // 73:47: -> ^( INVOKE $id expressionList )
862                        {
863                            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:73:50: ^( INVOKE $id expressionList )
864                            {
865                            CommonTree root_1 = (CommonTree)adaptor.nil();
866                            root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(INVOKE, "INVOKE"), root_1);
867    
868                            adaptor.addChild(root_1, stream_id.nextNode());
869                            adaptor.addChild(root_1, stream_expressionList.nextTree());
870    
871                            adaptor.addChild(root_0, root_1);
872                            }
873    
874                        }
875    
876                        retval.tree = root_0;}
877                        }
878                        break;
879    
880                }
881                retval.stop = input.LT(-1);
882    
883                if ( state.backtracking==0 ) {
884    
885                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
886                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
887                }
888            }
889            catch (RecognitionException re) {
890                reportError(re);
891                recover(input,re);
892            retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
893    
894            }
895            finally {
896            }
897            return retval;
898        }
899        // $ANTLR end "methodInvocation"
900    
901        public static class expressionList_return extends ParserRuleReturnScope {
902            CommonTree tree;
903            public Object getTree() { return tree; }
904        };
905    
906        // $ANTLR start "expressionList"
907        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:76:1: expressionList : expression ( COMMA expression )* ;
908        public final PropertyExpressionParser.expressionList_return expressionList() throws RecognitionException {
909            PropertyExpressionParser.expressionList_return retval = new PropertyExpressionParser.expressionList_return();
910            retval.start = input.LT(1);
911    
912            CommonTree root_0 = null;
913    
914            Token COMMA27=null;
915            PropertyExpressionParser.expression_return expression26 = null;
916    
917            PropertyExpressionParser.expression_return expression28 = null;
918    
919    
920            CommonTree COMMA27_tree=null;
921    
922            try {
923                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:77:2: ( expression ( COMMA expression )* )
924                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:77:4: expression ( COMMA expression )*
925                {
926                root_0 = (CommonTree)adaptor.nil();
927    
928                pushFollow(FOLLOW_expression_in_expressionList341);
929                expression26=expression();
930    
931                state._fsp--;
932                if (state.failed) return retval;
933                if ( state.backtracking==0 ) adaptor.addChild(root_0, expression26.getTree());
934                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:77:15: ( COMMA expression )*
935                loop5:
936                do {
937                    int alt5=2;
938                    int LA5_0 = input.LA(1);
939    
940                    if ( (LA5_0==COMMA) ) {
941                        alt5=1;
942                    }
943    
944    
945                    switch (alt5) {
946                    case 1 :
947                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:77:16: COMMA expression
948                        {
949                        COMMA27=(Token)match(input,COMMA,FOLLOW_COMMA_in_expressionList344); if (state.failed) return retval;
950                        pushFollow(FOLLOW_expression_in_expressionList347);
951                        expression28=expression();
952    
953                        state._fsp--;
954                        if (state.failed) return retval;
955                        if ( state.backtracking==0 ) adaptor.addChild(root_0, expression28.getTree());
956    
957                        }
958                        break;
959    
960                    default :
961                        break loop5;
962                    }
963                } while (true);
964    
965    
966                }
967    
968                retval.stop = input.LT(-1);
969    
970                if ( state.backtracking==0 ) {
971    
972                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
973                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
974                }
975            }
976            catch (RecognitionException re) {
977                reportError(re);
978                recover(input,re);
979            retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
980    
981            }
982            finally {
983            }
984            return retval;
985        }
986        // $ANTLR end "expressionList"
987    
988        public static class rangeOp_return extends ParserRuleReturnScope {
989            CommonTree tree;
990            public Object getTree() { return tree; }
991        };
992    
993        // $ANTLR start "rangeOp"
994        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:80:1: rangeOp : from= rangeopArg RANGEOP to= rangeopArg -> ^( RANGEOP $from $to) ;
995        public final PropertyExpressionParser.rangeOp_return rangeOp() throws RecognitionException {
996            PropertyExpressionParser.rangeOp_return retval = new PropertyExpressionParser.rangeOp_return();
997            retval.start = input.LT(1);
998    
999            CommonTree root_0 = null;
1000    
1001            Token RANGEOP29=null;
1002            PropertyExpressionParser.rangeopArg_return from = null;
1003    
1004            PropertyExpressionParser.rangeopArg_return to = null;
1005    
1006    
1007            CommonTree RANGEOP29_tree=null;
1008            RewriteRuleTokenStream stream_RANGEOP=new RewriteRuleTokenStream(adaptor,"token RANGEOP");
1009            RewriteRuleSubtreeStream stream_rangeopArg=new RewriteRuleSubtreeStream(adaptor,"rule rangeopArg");
1010            try {
1011                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:81:2: (from= rangeopArg RANGEOP to= rangeopArg -> ^( RANGEOP $from $to) )
1012                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:81:4: from= rangeopArg RANGEOP to= rangeopArg
1013                {
1014                pushFollow(FOLLOW_rangeopArg_in_rangeOp363);
1015                from=rangeopArg();
1016    
1017                state._fsp--;
1018                if (state.failed) return retval;
1019                if ( state.backtracking==0 ) stream_rangeopArg.add(from.getTree());
1020                RANGEOP29=(Token)match(input,RANGEOP,FOLLOW_RANGEOP_in_rangeOp366); if (state.failed) return retval; 
1021                if ( state.backtracking==0 ) stream_RANGEOP.add(RANGEOP29);
1022    
1023                pushFollow(FOLLOW_rangeopArg_in_rangeOp370);
1024                to=rangeopArg();
1025    
1026                state._fsp--;
1027                if (state.failed) return retval;
1028                if ( state.backtracking==0 ) stream_rangeopArg.add(to.getTree());
1029    
1030    
1031                // AST REWRITE
1032                // elements: RANGEOP, from, to
1033                // token labels: 
1034                // rule labels: to, retval, from
1035                // token list labels: 
1036                // rule list labels: 
1037                // wildcard labels: 
1038                if ( state.backtracking==0 ) {
1039                retval.tree = root_0;
1040                RewriteRuleSubtreeStream stream_to=new RewriteRuleSubtreeStream(adaptor,"rule to",to!=null?to.tree:null);
1041                RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
1042                RewriteRuleSubtreeStream stream_from=new RewriteRuleSubtreeStream(adaptor,"rule from",from!=null?from.tree:null);
1043    
1044                root_0 = (CommonTree)adaptor.nil();
1045                // 81:43: -> ^( RANGEOP $from $to)
1046                {
1047                    // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:81:46: ^( RANGEOP $from $to)
1048                    {
1049                    CommonTree root_1 = (CommonTree)adaptor.nil();
1050                    root_1 = (CommonTree)adaptor.becomeRoot(stream_RANGEOP.nextNode(), root_1);
1051    
1052                    adaptor.addChild(root_1, stream_from.nextTree());
1053                    adaptor.addChild(root_1, stream_to.nextTree());
1054    
1055                    adaptor.addChild(root_0, root_1);
1056                    }
1057    
1058                }
1059    
1060                retval.tree = root_0;}
1061                }
1062    
1063                retval.stop = input.LT(-1);
1064    
1065                if ( state.backtracking==0 ) {
1066    
1067                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
1068                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1069                }
1070            }
1071            catch (RecognitionException re) {
1072                reportError(re);
1073                recover(input,re);
1074            retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1075    
1076            }
1077            finally {
1078            }
1079            return retval;
1080        }
1081        // $ANTLR end "rangeOp"
1082    
1083        public static class rangeopArg_return extends ParserRuleReturnScope {
1084            CommonTree tree;
1085            public Object getTree() { return tree; }
1086        };
1087    
1088        // $ANTLR start "rangeopArg"
1089        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:84:1: rangeopArg : ( INTEGER | propertyChain );
1090        public final PropertyExpressionParser.rangeopArg_return rangeopArg() throws RecognitionException {
1091            PropertyExpressionParser.rangeopArg_return retval = new PropertyExpressionParser.rangeopArg_return();
1092            retval.start = input.LT(1);
1093    
1094            CommonTree root_0 = null;
1095    
1096            Token INTEGER30=null;
1097            PropertyExpressionParser.propertyChain_return propertyChain31 = null;
1098    
1099    
1100            CommonTree INTEGER30_tree=null;
1101    
1102            try {
1103                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:85:2: ( INTEGER | propertyChain )
1104                int alt6=2;
1105                int LA6_0 = input.LA(1);
1106    
1107                if ( (LA6_0==INTEGER) ) {
1108                    alt6=1;
1109                }
1110                else if ( (LA6_0==IDENTIFIER) ) {
1111                    alt6=2;
1112                }
1113                else {
1114                    if (state.backtracking>0) {state.failed=true; return retval;}
1115                    NoViableAltException nvae =
1116                        new NoViableAltException("", 6, 0, input);
1117    
1118                    throw nvae;
1119                }
1120                switch (alt6) {
1121                    case 1 :
1122                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:85:4: INTEGER
1123                        {
1124                        root_0 = (CommonTree)adaptor.nil();
1125    
1126                        INTEGER30=(Token)match(input,INTEGER,FOLLOW_INTEGER_in_rangeopArg396); if (state.failed) return retval;
1127                        if ( state.backtracking==0 ) {
1128                        INTEGER30_tree = (CommonTree)adaptor.create(INTEGER30);
1129                        adaptor.addChild(root_0, INTEGER30_tree);
1130                        }
1131    
1132                        }
1133                        break;
1134                    case 2 :
1135                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:86:4: propertyChain
1136                        {
1137                        root_0 = (CommonTree)adaptor.nil();
1138    
1139                        pushFollow(FOLLOW_propertyChain_in_rangeopArg401);
1140                        propertyChain31=propertyChain();
1141    
1142                        state._fsp--;
1143                        if (state.failed) return retval;
1144                        if ( state.backtracking==0 ) adaptor.addChild(root_0, propertyChain31.getTree());
1145    
1146                        }
1147                        break;
1148    
1149                }
1150                retval.stop = input.LT(-1);
1151    
1152                if ( state.backtracking==0 ) {
1153    
1154                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
1155                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1156                }
1157            }
1158            catch (RecognitionException re) {
1159                reportError(re);
1160                recover(input,re);
1161            retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1162    
1163            }
1164            finally {
1165            }
1166            return retval;
1167        }
1168        // $ANTLR end "rangeopArg"
1169    
1170        public static class list_return extends ParserRuleReturnScope {
1171            CommonTree tree;
1172            public Object getTree() { return tree; }
1173        };
1174    
1175        // $ANTLR start "list"
1176        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:89:1: list : ( LBRACKET RBRACKET -> ^( LIST ) | LBRACKET expressionList RBRACKET -> ^( LIST expressionList ) );
1177        public final PropertyExpressionParser.list_return list() throws RecognitionException {
1178            PropertyExpressionParser.list_return retval = new PropertyExpressionParser.list_return();
1179            retval.start = input.LT(1);
1180    
1181            CommonTree root_0 = null;
1182    
1183            Token LBRACKET32=null;
1184            Token RBRACKET33=null;
1185            Token LBRACKET34=null;
1186            Token RBRACKET36=null;
1187            PropertyExpressionParser.expressionList_return expressionList35 = null;
1188    
1189    
1190            CommonTree LBRACKET32_tree=null;
1191            CommonTree RBRACKET33_tree=null;
1192            CommonTree LBRACKET34_tree=null;
1193            CommonTree RBRACKET36_tree=null;
1194            RewriteRuleTokenStream stream_LBRACKET=new RewriteRuleTokenStream(adaptor,"token LBRACKET");
1195            RewriteRuleTokenStream stream_RBRACKET=new RewriteRuleTokenStream(adaptor,"token RBRACKET");
1196            RewriteRuleSubtreeStream stream_expressionList=new RewriteRuleSubtreeStream(adaptor,"rule expressionList");
1197            try {
1198                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:89:6: ( LBRACKET RBRACKET -> ^( LIST ) | LBRACKET expressionList RBRACKET -> ^( LIST expressionList ) )
1199                int alt7=2;
1200                int LA7_0 = input.LA(1);
1201    
1202                if ( (LA7_0==LBRACKET) ) {
1203                    int LA7_1 = input.LA(2);
1204    
1205                    if ( (LA7_1==RBRACKET) ) {
1206                        alt7=1;
1207                    }
1208                    else if ( (LA7_1==INTEGER||LA7_1==DECIMAL||LA7_1==LBRACKET||(LA7_1>=BANG && LA7_1<=LBRACE)||(LA7_1>=NULL && LA7_1<=THIS)||LA7_1==IDENTIFIER||LA7_1==STRING) ) {
1209                        alt7=2;
1210                    }
1211                    else {
1212                        if (state.backtracking>0) {state.failed=true; return retval;}
1213                        NoViableAltException nvae =
1214                            new NoViableAltException("", 7, 1, input);
1215    
1216                        throw nvae;
1217                    }
1218                }
1219                else {
1220                    if (state.backtracking>0) {state.failed=true; return retval;}
1221                    NoViableAltException nvae =
1222                        new NoViableAltException("", 7, 0, input);
1223    
1224                    throw nvae;
1225                }
1226                switch (alt7) {
1227                    case 1 :
1228                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:89:8: LBRACKET RBRACKET
1229                        {
1230                        LBRACKET32=(Token)match(input,LBRACKET,FOLLOW_LBRACKET_in_list413); if (state.failed) return retval; 
1231                        if ( state.backtracking==0 ) stream_LBRACKET.add(LBRACKET32);
1232    
1233                        RBRACKET33=(Token)match(input,RBRACKET,FOLLOW_RBRACKET_in_list415); if (state.failed) return retval; 
1234                        if ( state.backtracking==0 ) stream_RBRACKET.add(RBRACKET33);
1235    
1236    
1237    
1238                        // AST REWRITE
1239                        // elements: 
1240                        // token labels: 
1241                        // rule labels: retval
1242                        // token list labels: 
1243                        // rule list labels: 
1244                        // wildcard labels: 
1245                        if ( state.backtracking==0 ) {
1246                        retval.tree = root_0;
1247                        RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
1248    
1249                        root_0 = (CommonTree)adaptor.nil();
1250                        // 89:26: -> ^( LIST )
1251                        {
1252                            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:89:29: ^( LIST )
1253                            {
1254                            CommonTree root_1 = (CommonTree)adaptor.nil();
1255                            root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(LIST, "LIST"), root_1);
1256    
1257                            adaptor.addChild(root_0, root_1);
1258                            }
1259    
1260                        }
1261    
1262                        retval.tree = root_0;}
1263                        }
1264                        break;
1265                    case 2 :
1266                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:90:4: LBRACKET expressionList RBRACKET
1267                        {
1268                        LBRACKET34=(Token)match(input,LBRACKET,FOLLOW_LBRACKET_in_list426); if (state.failed) return retval; 
1269                        if ( state.backtracking==0 ) stream_LBRACKET.add(LBRACKET34);
1270    
1271                        pushFollow(FOLLOW_expressionList_in_list428);
1272                        expressionList35=expressionList();
1273    
1274                        state._fsp--;
1275                        if (state.failed) return retval;
1276                        if ( state.backtracking==0 ) stream_expressionList.add(expressionList35.getTree());
1277                        RBRACKET36=(Token)match(input,RBRACKET,FOLLOW_RBRACKET_in_list430); if (state.failed) return retval; 
1278                        if ( state.backtracking==0 ) stream_RBRACKET.add(RBRACKET36);
1279    
1280    
1281    
1282                        // AST REWRITE
1283                        // elements: expressionList
1284                        // token labels: 
1285                        // rule labels: retval
1286                        // token list labels: 
1287                        // rule list labels: 
1288                        // wildcard labels: 
1289                        if ( state.backtracking==0 ) {
1290                        retval.tree = root_0;
1291                        RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
1292    
1293                        root_0 = (CommonTree)adaptor.nil();
1294                        // 90:37: -> ^( LIST expressionList )
1295                        {
1296                            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:90:40: ^( LIST expressionList )
1297                            {
1298                            CommonTree root_1 = (CommonTree)adaptor.nil();
1299                            root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(LIST, "LIST"), root_1);
1300    
1301                            adaptor.addChild(root_1, stream_expressionList.nextTree());
1302    
1303                            adaptor.addChild(root_0, root_1);
1304                            }
1305    
1306                        }
1307    
1308                        retval.tree = root_0;}
1309                        }
1310                        break;
1311    
1312                }
1313                retval.stop = input.LT(-1);
1314    
1315                if ( state.backtracking==0 ) {
1316    
1317                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
1318                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1319                }
1320            }
1321            catch (RecognitionException re) {
1322                reportError(re);
1323                recover(input,re);
1324            retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1325    
1326            }
1327            finally {
1328            }
1329            return retval;
1330        }
1331        // $ANTLR end "list"
1332    
1333        public static class notOp_return extends ParserRuleReturnScope {
1334            CommonTree tree;
1335            public Object getTree() { return tree; }
1336        };
1337    
1338        // $ANTLR start "notOp"
1339        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:93:1: notOp : BANG expression -> ^( NOT expression ) ;
1340        public final PropertyExpressionParser.notOp_return notOp() throws RecognitionException {
1341            PropertyExpressionParser.notOp_return retval = new PropertyExpressionParser.notOp_return();
1342            retval.start = input.LT(1);
1343    
1344            CommonTree root_0 = null;
1345    
1346            Token BANG37=null;
1347            PropertyExpressionParser.expression_return expression38 = null;
1348    
1349    
1350            CommonTree BANG37_tree=null;
1351            RewriteRuleTokenStream stream_BANG=new RewriteRuleTokenStream(adaptor,"token BANG");
1352            RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
1353            try {
1354                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:93:8: ( BANG expression -> ^( NOT expression ) )
1355                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:93:10: BANG expression
1356                {
1357                BANG37=(Token)match(input,BANG,FOLLOW_BANG_in_notOp451); if (state.failed) return retval; 
1358                if ( state.backtracking==0 ) stream_BANG.add(BANG37);
1359    
1360                pushFollow(FOLLOW_expression_in_notOp453);
1361                expression38=expression();
1362    
1363                state._fsp--;
1364                if (state.failed) return retval;
1365                if ( state.backtracking==0 ) stream_expression.add(expression38.getTree());
1366    
1367    
1368                // AST REWRITE
1369                // elements: expression
1370                // token labels: 
1371                // rule labels: retval
1372                // token list labels: 
1373                // rule list labels: 
1374                // wildcard labels: 
1375                if ( state.backtracking==0 ) {
1376                retval.tree = root_0;
1377                RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
1378    
1379                root_0 = (CommonTree)adaptor.nil();
1380                // 93:26: -> ^( NOT expression )
1381                {
1382                    // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:93:29: ^( NOT expression )
1383                    {
1384                    CommonTree root_1 = (CommonTree)adaptor.nil();
1385                    root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(NOT, "NOT"), root_1);
1386    
1387                    adaptor.addChild(root_1, stream_expression.nextTree());
1388    
1389                    adaptor.addChild(root_0, root_1);
1390                    }
1391    
1392                }
1393    
1394                retval.tree = root_0;}
1395                }
1396    
1397                retval.stop = input.LT(-1);
1398    
1399                if ( state.backtracking==0 ) {
1400    
1401                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
1402                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1403                }
1404            }
1405            catch (RecognitionException re) {
1406                reportError(re);
1407                recover(input,re);
1408            retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1409    
1410            }
1411            finally {
1412            }
1413            return retval;
1414        }
1415        // $ANTLR end "notOp"
1416    
1417        public static class map_return extends ParserRuleReturnScope {
1418            CommonTree tree;
1419            public Object getTree() { return tree; }
1420        };
1421    
1422        // $ANTLR start "map"
1423        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:96:1: map : ( LBRACE RBRACE -> ^( MAP ) | LBRACE mapEntryList RBRACE -> ^( MAP mapEntryList ) );
1424        public final PropertyExpressionParser.map_return map() throws RecognitionException {
1425            PropertyExpressionParser.map_return retval = new PropertyExpressionParser.map_return();
1426            retval.start = input.LT(1);
1427    
1428            CommonTree root_0 = null;
1429    
1430            Token LBRACE39=null;
1431            Token RBRACE40=null;
1432            Token LBRACE41=null;
1433            Token RBRACE43=null;
1434            PropertyExpressionParser.mapEntryList_return mapEntryList42 = null;
1435    
1436    
1437            CommonTree LBRACE39_tree=null;
1438            CommonTree RBRACE40_tree=null;
1439            CommonTree LBRACE41_tree=null;
1440            CommonTree RBRACE43_tree=null;
1441            RewriteRuleTokenStream stream_RBRACE=new RewriteRuleTokenStream(adaptor,"token RBRACE");
1442            RewriteRuleTokenStream stream_LBRACE=new RewriteRuleTokenStream(adaptor,"token LBRACE");
1443            RewriteRuleSubtreeStream stream_mapEntryList=new RewriteRuleSubtreeStream(adaptor,"rule mapEntryList");
1444            try {
1445                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:96:6: ( LBRACE RBRACE -> ^( MAP ) | LBRACE mapEntryList RBRACE -> ^( MAP mapEntryList ) )
1446                int alt8=2;
1447                int LA8_0 = input.LA(1);
1448    
1449                if ( (LA8_0==LBRACE) ) {
1450                    int LA8_1 = input.LA(2);
1451    
1452                    if ( (LA8_1==RBRACE) ) {
1453                        alt8=1;
1454                    }
1455                    else if ( (LA8_1==INTEGER||LA8_1==DECIMAL||(LA8_1>=NULL && LA8_1<=THIS)||LA8_1==IDENTIFIER||LA8_1==STRING) ) {
1456                        alt8=2;
1457                    }
1458                    else {
1459                        if (state.backtracking>0) {state.failed=true; return retval;}
1460                        NoViableAltException nvae =
1461                            new NoViableAltException("", 8, 1, input);
1462    
1463                        throw nvae;
1464                    }
1465                }
1466                else {
1467                    if (state.backtracking>0) {state.failed=true; return retval;}
1468                    NoViableAltException nvae =
1469                        new NoViableAltException("", 8, 0, input);
1470    
1471                    throw nvae;
1472                }
1473                switch (alt8) {
1474                    case 1 :
1475                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:96:8: LBRACE RBRACE
1476                        {
1477                        LBRACE39=(Token)match(input,LBRACE,FOLLOW_LBRACE_in_map472); if (state.failed) return retval; 
1478                        if ( state.backtracking==0 ) stream_LBRACE.add(LBRACE39);
1479    
1480                        RBRACE40=(Token)match(input,RBRACE,FOLLOW_RBRACE_in_map474); if (state.failed) return retval; 
1481                        if ( state.backtracking==0 ) stream_RBRACE.add(RBRACE40);
1482    
1483    
1484    
1485                        // AST REWRITE
1486                        // elements: 
1487                        // token labels: 
1488                        // rule labels: retval
1489                        // token list labels: 
1490                        // rule list labels: 
1491                        // wildcard labels: 
1492                        if ( state.backtracking==0 ) {
1493                        retval.tree = root_0;
1494                        RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
1495    
1496                        root_0 = (CommonTree)adaptor.nil();
1497                        // 96:22: -> ^( MAP )
1498                        {
1499                            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:96:25: ^( MAP )
1500                            {
1501                            CommonTree root_1 = (CommonTree)adaptor.nil();
1502                            root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(MAP, "MAP"), root_1);
1503    
1504                            adaptor.addChild(root_0, root_1);
1505                            }
1506    
1507                        }
1508    
1509                        retval.tree = root_0;}
1510                        }
1511                        break;
1512                    case 2 :
1513                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:97:4: LBRACE mapEntryList RBRACE
1514                        {
1515                        LBRACE41=(Token)match(input,LBRACE,FOLLOW_LBRACE_in_map485); if (state.failed) return retval; 
1516                        if ( state.backtracking==0 ) stream_LBRACE.add(LBRACE41);
1517    
1518                        pushFollow(FOLLOW_mapEntryList_in_map487);
1519                        mapEntryList42=mapEntryList();
1520    
1521                        state._fsp--;
1522                        if (state.failed) return retval;
1523                        if ( state.backtracking==0 ) stream_mapEntryList.add(mapEntryList42.getTree());
1524                        RBRACE43=(Token)match(input,RBRACE,FOLLOW_RBRACE_in_map489); if (state.failed) return retval; 
1525                        if ( state.backtracking==0 ) stream_RBRACE.add(RBRACE43);
1526    
1527    
1528    
1529                        // AST REWRITE
1530                        // elements: mapEntryList
1531                        // token labels: 
1532                        // rule labels: retval
1533                        // token list labels: 
1534                        // rule list labels: 
1535                        // wildcard labels: 
1536                        if ( state.backtracking==0 ) {
1537                        retval.tree = root_0;
1538                        RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
1539    
1540                        root_0 = (CommonTree)adaptor.nil();
1541                        // 97:31: -> ^( MAP mapEntryList )
1542                        {
1543                            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:97:34: ^( MAP mapEntryList )
1544                            {
1545                            CommonTree root_1 = (CommonTree)adaptor.nil();
1546                            root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(MAP, "MAP"), root_1);
1547    
1548                            adaptor.addChild(root_1, stream_mapEntryList.nextTree());
1549    
1550                            adaptor.addChild(root_0, root_1);
1551                            }
1552    
1553                        }
1554    
1555                        retval.tree = root_0;}
1556                        }
1557                        break;
1558    
1559                }
1560                retval.stop = input.LT(-1);
1561    
1562                if ( state.backtracking==0 ) {
1563    
1564                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
1565                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1566                }
1567            }
1568            catch (RecognitionException re) {
1569                reportError(re);
1570                recover(input,re);
1571            retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1572    
1573            }
1574            finally {
1575            }
1576            return retval;
1577        }
1578        // $ANTLR end "map"
1579    
1580        public static class mapEntryList_return extends ParserRuleReturnScope {
1581            CommonTree tree;
1582            public Object getTree() { return tree; }
1583        };
1584    
1585        // $ANTLR start "mapEntryList"
1586        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:100:1: mapEntryList : mapEntry ( COMMA mapEntry )* ;
1587        public final PropertyExpressionParser.mapEntryList_return mapEntryList() throws RecognitionException {
1588            PropertyExpressionParser.mapEntryList_return retval = new PropertyExpressionParser.mapEntryList_return();
1589            retval.start = input.LT(1);
1590    
1591            CommonTree root_0 = null;
1592    
1593            Token COMMA45=null;
1594            PropertyExpressionParser.mapEntry_return mapEntry44 = null;
1595    
1596            PropertyExpressionParser.mapEntry_return mapEntry46 = null;
1597    
1598    
1599            CommonTree COMMA45_tree=null;
1600    
1601            try {
1602                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:100:14: ( mapEntry ( COMMA mapEntry )* )
1603                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:100:16: mapEntry ( COMMA mapEntry )*
1604                {
1605                root_0 = (CommonTree)adaptor.nil();
1606    
1607                pushFollow(FOLLOW_mapEntry_in_mapEntryList511);
1608                mapEntry44=mapEntry();
1609    
1610                state._fsp--;
1611                if (state.failed) return retval;
1612                if ( state.backtracking==0 ) adaptor.addChild(root_0, mapEntry44.getTree());
1613                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:100:25: ( COMMA mapEntry )*
1614                loop9:
1615                do {
1616                    int alt9=2;
1617                    int LA9_0 = input.LA(1);
1618    
1619                    if ( (LA9_0==COMMA) ) {
1620                        alt9=1;
1621                    }
1622    
1623    
1624                    switch (alt9) {
1625                    case 1 :
1626                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:100:26: COMMA mapEntry
1627                        {
1628                        COMMA45=(Token)match(input,COMMA,FOLLOW_COMMA_in_mapEntryList514); if (state.failed) return retval;
1629                        pushFollow(FOLLOW_mapEntry_in_mapEntryList517);
1630                        mapEntry46=mapEntry();
1631    
1632                        state._fsp--;
1633                        if (state.failed) return retval;
1634                        if ( state.backtracking==0 ) adaptor.addChild(root_0, mapEntry46.getTree());
1635    
1636                        }
1637                        break;
1638    
1639                    default :
1640                        break loop9;
1641                    }
1642                } while (true);
1643    
1644    
1645                }
1646    
1647                retval.stop = input.LT(-1);
1648    
1649                if ( state.backtracking==0 ) {
1650    
1651                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
1652                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1653                }
1654            }
1655            catch (RecognitionException re) {
1656                reportError(re);
1657                recover(input,re);
1658            retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1659    
1660            }
1661            finally {
1662            }
1663            return retval;
1664        }
1665        // $ANTLR end "mapEntryList"
1666    
1667        public static class mapEntry_return extends ParserRuleReturnScope {
1668            CommonTree tree;
1669            public Object getTree() { return tree; }
1670        };
1671    
1672        // $ANTLR start "mapEntry"
1673        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:102:1: mapEntry : mapKey COLON expression ;
1674        public final PropertyExpressionParser.mapEntry_return mapEntry() throws RecognitionException {
1675            PropertyExpressionParser.mapEntry_return retval = new PropertyExpressionParser.mapEntry_return();
1676            retval.start = input.LT(1);
1677    
1678            CommonTree root_0 = null;
1679    
1680            Token COLON48=null;
1681            PropertyExpressionParser.mapKey_return mapKey47 = null;
1682    
1683            PropertyExpressionParser.expression_return expression49 = null;
1684    
1685    
1686            CommonTree COLON48_tree=null;
1687    
1688            try {
1689                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:102:10: ( mapKey COLON expression )
1690                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:102:13: mapKey COLON expression
1691                {
1692                root_0 = (CommonTree)adaptor.nil();
1693    
1694                pushFollow(FOLLOW_mapKey_in_mapEntry528);
1695                mapKey47=mapKey();
1696    
1697                state._fsp--;
1698                if (state.failed) return retval;
1699                if ( state.backtracking==0 ) adaptor.addChild(root_0, mapKey47.getTree());
1700                COLON48=(Token)match(input,COLON,FOLLOW_COLON_in_mapEntry530); if (state.failed) return retval;
1701                pushFollow(FOLLOW_expression_in_mapEntry533);
1702                expression49=expression();
1703    
1704                state._fsp--;
1705                if (state.failed) return retval;
1706                if ( state.backtracking==0 ) adaptor.addChild(root_0, expression49.getTree());
1707    
1708                }
1709    
1710                retval.stop = input.LT(-1);
1711    
1712                if ( state.backtracking==0 ) {
1713    
1714                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
1715                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1716                }
1717            }
1718            catch (RecognitionException re) {
1719                reportError(re);
1720                recover(input,re);
1721            retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1722    
1723            }
1724            finally {
1725            }
1726            return retval;
1727        }
1728        // $ANTLR end "mapEntry"
1729    
1730        public static class mapKey_return extends ParserRuleReturnScope {
1731            CommonTree tree;
1732            public Object getTree() { return tree; }
1733        };
1734    
1735        // $ANTLR start "mapKey"
1736        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:104:1: mapKey : ( keyword | constant | propertyChain );
1737        public final PropertyExpressionParser.mapKey_return mapKey() throws RecognitionException {
1738            PropertyExpressionParser.mapKey_return retval = new PropertyExpressionParser.mapKey_return();
1739            retval.start = input.LT(1);
1740    
1741            CommonTree root_0 = null;
1742    
1743            PropertyExpressionParser.keyword_return keyword50 = null;
1744    
1745            PropertyExpressionParser.constant_return constant51 = null;
1746    
1747            PropertyExpressionParser.propertyChain_return propertyChain52 = null;
1748    
1749    
1750    
1751            try {
1752                // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:104:8: ( keyword | constant | propertyChain )
1753                int alt10=3;
1754                switch ( input.LA(1) ) {
1755                case NULL:
1756                case TRUE:
1757                case FALSE:
1758                case THIS:
1759                    {
1760                    alt10=1;
1761                    }
1762                    break;
1763                case INTEGER:
1764                case DECIMAL:
1765                case STRING:
1766                    {
1767                    alt10=2;
1768                    }
1769                    break;
1770                case IDENTIFIER:
1771                    {
1772                    alt10=3;
1773                    }
1774                    break;
1775                default:
1776                    if (state.backtracking>0) {state.failed=true; return retval;}
1777                    NoViableAltException nvae =
1778                        new NoViableAltException("", 10, 0, input);
1779    
1780                    throw nvae;
1781                }
1782    
1783                switch (alt10) {
1784                    case 1 :
1785                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:104:10: keyword
1786                        {
1787                        root_0 = (CommonTree)adaptor.nil();
1788    
1789                        pushFollow(FOLLOW_keyword_in_mapKey542);
1790                        keyword50=keyword();
1791    
1792                        state._fsp--;
1793                        if (state.failed) return retval;
1794                        if ( state.backtracking==0 ) adaptor.addChild(root_0, keyword50.getTree());
1795    
1796                        }
1797                        break;
1798                    case 2 :
1799                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:104:20: constant
1800                        {
1801                        root_0 = (CommonTree)adaptor.nil();
1802    
1803                        pushFollow(FOLLOW_constant_in_mapKey546);
1804                        constant51=constant();
1805    
1806                        state._fsp--;
1807                        if (state.failed) return retval;
1808                        if ( state.backtracking==0 ) adaptor.addChild(root_0, constant51.getTree());
1809    
1810                        }
1811                        break;
1812                    case 3 :
1813                        // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:104:31: propertyChain
1814                        {
1815                        root_0 = (CommonTree)adaptor.nil();
1816    
1817                        pushFollow(FOLLOW_propertyChain_in_mapKey550);
1818                        propertyChain52=propertyChain();
1819    
1820                        state._fsp--;
1821                        if (state.failed) return retval;
1822                        if ( state.backtracking==0 ) adaptor.addChild(root_0, propertyChain52.getTree());
1823    
1824                        }
1825                        break;
1826    
1827                }
1828                retval.stop = input.LT(-1);
1829    
1830                if ( state.backtracking==0 ) {
1831    
1832                retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
1833                adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1834                }
1835            }
1836            catch (RecognitionException re) {
1837                reportError(re);
1838                recover(input,re);
1839            retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1840    
1841            }
1842            finally {
1843            }
1844            return retval;
1845        }
1846        // $ANTLR end "mapKey"
1847    
1848        // $ANTLR start synpred2_PropertyExpressionParser
1849        public final void synpred2_PropertyExpressionParser_fragment() throws RecognitionException {   
1850            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:49:4: ( rangeOp )
1851            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:49:4: rangeOp
1852            {
1853            pushFollow(FOLLOW_rangeOp_in_synpred2_PropertyExpressionParser150);
1854            rangeOp();
1855    
1856            state._fsp--;
1857            if (state.failed) return ;
1858    
1859            }
1860        }
1861        // $ANTLR end synpred2_PropertyExpressionParser
1862    
1863        // $ANTLR start synpred3_PropertyExpressionParser
1864        public final void synpred3_PropertyExpressionParser_fragment() throws RecognitionException {   
1865            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:50:4: ( constant )
1866            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:50:4: constant
1867            {
1868            pushFollow(FOLLOW_constant_in_synpred3_PropertyExpressionParser155);
1869            constant();
1870    
1871            state._fsp--;
1872            if (state.failed) return ;
1873    
1874            }
1875        }
1876        // $ANTLR end synpred3_PropertyExpressionParser
1877    
1878        // $ANTLR start synpred4_PropertyExpressionParser
1879        public final void synpred4_PropertyExpressionParser_fragment() throws RecognitionException {   
1880            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:51:4: ( propertyChain )
1881            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:51:4: propertyChain
1882            {
1883            pushFollow(FOLLOW_propertyChain_in_synpred4_PropertyExpressionParser160);
1884            propertyChain();
1885    
1886            state._fsp--;
1887            if (state.failed) return ;
1888    
1889            }
1890        }
1891        // $ANTLR end synpred4_PropertyExpressionParser
1892    
1893        // $ANTLR start synpred12_PropertyExpressionParser
1894        public final void synpred12_PropertyExpressionParser_fragment() throws RecognitionException {   
1895            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:62:4: ( term DEREF propertyChain )
1896            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:62:4: term DEREF propertyChain
1897            {
1898            pushFollow(FOLLOW_term_in_synpred12_PropertyExpressionParser222);
1899            term();
1900    
1901            state._fsp--;
1902            if (state.failed) return ;
1903            match(input,DEREF,FOLLOW_DEREF_in_synpred12_PropertyExpressionParser224); if (state.failed) return ;
1904            pushFollow(FOLLOW_propertyChain_in_synpred12_PropertyExpressionParser226);
1905            propertyChain();
1906    
1907            state._fsp--;
1908            if (state.failed) return ;
1909    
1910            }
1911        }
1912        // $ANTLR end synpred12_PropertyExpressionParser
1913    
1914        // $ANTLR start synpred13_PropertyExpressionParser
1915        public final void synpred13_PropertyExpressionParser_fragment() throws RecognitionException {   
1916            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:63:4: ( term SAFEDEREF propertyChain )
1917            // /home/massimo/workspaces/TapestryGit/tapestry-5/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g:63:4: term SAFEDEREF propertyChain
1918            {
1919            pushFollow(FOLLOW_term_in_synpred13_PropertyExpressionParser241);
1920            term();
1921    
1922            state._fsp--;
1923            if (state.failed) return ;
1924            match(input,SAFEDEREF,FOLLOW_SAFEDEREF_in_synpred13_PropertyExpressionParser243); if (state.failed) return ;
1925            pushFollow(FOLLOW_propertyChain_in_synpred13_PropertyExpressionParser245);
1926            propertyChain();
1927    
1928            state._fsp--;
1929            if (state.failed) return ;
1930    
1931            }
1932        }
1933        // $ANTLR end synpred13_PropertyExpressionParser
1934    
1935        // Delegated rules
1936    
1937        public final boolean synpred4_PropertyExpressionParser() {
1938            state.backtracking++;
1939            int start = input.mark();
1940            try {
1941                synpred4_PropertyExpressionParser_fragment(); // can never throw exception
1942            } catch (RecognitionException re) {
1943                System.err.println("impossible: "+re);
1944            }
1945            boolean success = !state.failed;
1946            input.rewind(start);
1947            state.backtracking--;
1948            state.failed=false;
1949            return success;
1950        }
1951        public final boolean synpred12_PropertyExpressionParser() {
1952            state.backtracking++;
1953            int start = input.mark();
1954            try {
1955                synpred12_PropertyExpressionParser_fragment(); // can never throw exception
1956            } catch (RecognitionException re) {
1957                System.err.println("impossible: "+re);
1958            }
1959            boolean success = !state.failed;
1960            input.rewind(start);
1961            state.backtracking--;
1962            state.failed=false;
1963            return success;
1964        }
1965        public final boolean synpred13_PropertyExpressionParser() {
1966            state.backtracking++;
1967            int start = input.mark();
1968            try {
1969                synpred13_PropertyExpressionParser_fragment(); // can never throw exception
1970            } catch (RecognitionException re) {
1971                System.err.println("impossible: "+re);
1972            }
1973            boolean success = !state.failed;
1974            input.rewind(start);
1975            state.backtracking--;
1976            state.failed=false;
1977            return success;
1978        }
1979        public final boolean synpred3_PropertyExpressionParser() {
1980            state.backtracking++;
1981            int start = input.mark();
1982            try {
1983                synpred3_PropertyExpressionParser_fragment(); // can never throw exception
1984            } catch (RecognitionException re) {
1985                System.err.println("impossible: "+re);
1986            }
1987            boolean success = !state.failed;
1988            input.rewind(start);
1989            state.backtracking--;
1990            state.failed=false;
1991            return success;
1992        }
1993        public final boolean synpred2_PropertyExpressionParser() {
1994            state.backtracking++;
1995            int start = input.mark();
1996            try {
1997                synpred2_PropertyExpressionParser_fragment(); // can never throw exception
1998            } catch (RecognitionException re) {
1999                System.err.println("impossible: "+re);
2000            }
2001            boolean success = !state.failed;
2002            input.rewind(start);
2003            state.backtracking--;
2004            state.failed=false;
2005            return success;
2006        }
2007    
2008    
2009        protected DFA1 dfa1 = new DFA1(this);
2010        static final String DFA1_eotS =
2011            "\12\uffff";
2012        static final String DFA1_eofS =
2013            "\12\uffff";
2014        static final String DFA1_minS =
2015            "\1\4\1\uffff\2\0\6\uffff";
2016        static final String DFA1_maxS =
2017            "\1\51\1\uffff\2\0\6\uffff";
2018        static final String DFA1_acceptS =
2019            "\1\uffff\1\1\2\uffff\1\3\1\5\1\6\1\7\1\2\1\4";
2020        static final String DFA1_specialS =
2021            "\2\uffff\1\0\1\1\6\uffff}>";
2022        static final String[] DFA1_transitionS = {
2023                "\1\2\2\uffff\1\4\5\uffff\1\5\2\uffff\1\6\1\7\16\uffff\4\1\2"+
2024                "\uffff\1\3\2\uffff\1\4",
2025                "",
2026                "\1\uffff",
2027                "\1\uffff",
2028                "",
2029                "",
2030                "",
2031                "",
2032                "",
2033                ""
2034        };
2035    
2036        static final short[] DFA1_eot = DFA.unpackEncodedString(DFA1_eotS);
2037        static final short[] DFA1_eof = DFA.unpackEncodedString(DFA1_eofS);
2038        static final char[] DFA1_min = DFA.unpackEncodedStringToUnsignedChars(DFA1_minS);
2039        static final char[] DFA1_max = DFA.unpackEncodedStringToUnsignedChars(DFA1_maxS);
2040        static final short[] DFA1_accept = DFA.unpackEncodedString(DFA1_acceptS);
2041        static final short[] DFA1_special = DFA.unpackEncodedString(DFA1_specialS);
2042        static final short[][] DFA1_transition;
2043    
2044        static {
2045            int numStates = DFA1_transitionS.length;
2046            DFA1_transition = new short[numStates][];
2047            for (int i=0; i<numStates; i++) {
2048                DFA1_transition[i] = DFA.unpackEncodedString(DFA1_transitionS[i]);
2049            }
2050        }
2051    
2052        class DFA1 extends DFA {
2053    
2054            public DFA1(BaseRecognizer recognizer) {
2055                this.recognizer = recognizer;
2056                this.decisionNumber = 1;
2057                this.eot = DFA1_eot;
2058                this.eof = DFA1_eof;
2059                this.min = DFA1_min;
2060                this.max = DFA1_max;
2061                this.accept = DFA1_accept;
2062                this.special = DFA1_special;
2063                this.transition = DFA1_transition;
2064            }
2065            public String getDescription() {
2066                return "47:1: expression : ( keyword | rangeOp | constant | propertyChain | list | notOp | map );";
2067            }
2068            public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
2069                TokenStream input = (TokenStream)_input;
2070                    int _s = s;
2071                switch ( s ) {
2072                        case 0 : 
2073                            int LA1_2 = input.LA(1);
2074    
2075                             
2076                            int index1_2 = input.index();
2077                            input.rewind();
2078                            s = -1;
2079                            if ( (synpred2_PropertyExpressionParser()) ) {s = 8;}
2080    
2081                            else if ( (synpred3_PropertyExpressionParser()) ) {s = 4;}
2082    
2083                             
2084                            input.seek(index1_2);
2085                            if ( s>=0 ) return s;
2086                            break;
2087                        case 1 : 
2088                            int LA1_3 = input.LA(1);
2089    
2090                             
2091                            int index1_3 = input.index();
2092                            input.rewind();
2093                            s = -1;
2094                            if ( (synpred2_PropertyExpressionParser()) ) {s = 8;}
2095    
2096                            else if ( (synpred4_PropertyExpressionParser()) ) {s = 9;}
2097    
2098                             
2099                            input.seek(index1_3);
2100                            if ( s>=0 ) return s;
2101                            break;
2102                }
2103                if (state.backtracking>0) {state.failed=true; return -1;}
2104                NoViableAltException nvae =
2105                    new NoViableAltException(getDescription(), 1, _s, input);
2106                error(nvae);
2107                throw nvae;
2108            }
2109        }
2110     
2111    
2112        public static final BitSet FOLLOW_expression_in_start130 = new BitSet(new long[]{0x0000000000000000L});
2113        public static final BitSet FOLLOW_EOF_in_start133 = new BitSet(new long[]{0x0000000000000002L});
2114        public static final BitSet FOLLOW_keyword_in_expression145 = new BitSet(new long[]{0x0000000000000002L});
2115        public static final BitSet FOLLOW_rangeOp_in_expression150 = new BitSet(new long[]{0x0000000000000002L});
2116        public static final BitSet FOLLOW_constant_in_expression155 = new BitSet(new long[]{0x0000000000000002L});
2117        public static final BitSet FOLLOW_propertyChain_in_expression160 = new BitSet(new long[]{0x0000000000000002L});
2118        public static final BitSet FOLLOW_list_in_expression165 = new BitSet(new long[]{0x0000000000000002L});
2119        public static final BitSet FOLLOW_notOp_in_expression170 = new BitSet(new long[]{0x0000000000000002L});
2120        public static final BitSet FOLLOW_map_in_expression175 = new BitSet(new long[]{0x0000000000000002L});
2121        public static final BitSet FOLLOW_set_in_keyword0 = new BitSet(new long[]{0x0000000000000002L});
2122        public static final BitSet FOLLOW_set_in_constant0 = new BitSet(new long[]{0x0000000000000002L});
2123        public static final BitSet FOLLOW_term_in_propertyChain222 = new BitSet(new long[]{0x0000000000000020L});
2124        public static final BitSet FOLLOW_DEREF_in_propertyChain224 = new BitSet(new long[]{0x0000004000000000L});
2125        public static final BitSet FOLLOW_propertyChain_in_propertyChain226 = new BitSet(new long[]{0x0000000000000002L});
2126        public static final BitSet FOLLOW_term_in_propertyChain241 = new BitSet(new long[]{0x0000008000000000L});
2127        public static final BitSet FOLLOW_SAFEDEREF_in_propertyChain243 = new BitSet(new long[]{0x0000004000000000L});
2128        public static final BitSet FOLLOW_propertyChain_in_propertyChain245 = new BitSet(new long[]{0x0000000000000002L});
2129        public static final BitSet FOLLOW_term_in_propertyChain260 = new BitSet(new long[]{0x0000000000000002L});
2130        public static final BitSet FOLLOW_IDENTIFIER_in_term272 = new BitSet(new long[]{0x0000000000000002L});
2131        public static final BitSet FOLLOW_methodInvocation_in_term277 = new BitSet(new long[]{0x0000000000000002L});
2132        public static final BitSet FOLLOW_IDENTIFIER_in_methodInvocation291 = new BitSet(new long[]{0x0000000000000800L});
2133        public static final BitSet FOLLOW_LPAREN_in_methodInvocation293 = new BitSet(new long[]{0x0000000000001000L});
2134        public static final BitSet FOLLOW_RPAREN_in_methodInvocation295 = new BitSet(new long[]{0x0000000000000002L});
2135        public static final BitSet FOLLOW_IDENTIFIER_in_methodInvocation311 = new BitSet(new long[]{0x0000000000000800L});
2136        public static final BitSet FOLLOW_LPAREN_in_methodInvocation313 = new BitSet(new long[]{0x0000024F00032090L});
2137        public static final BitSet FOLLOW_expressionList_in_methodInvocation315 = new BitSet(new long[]{0x0000000000001000L});
2138        public static final BitSet FOLLOW_RPAREN_in_methodInvocation317 = new BitSet(new long[]{0x0000000000000002L});
2139        public static final BitSet FOLLOW_expression_in_expressionList341 = new BitSet(new long[]{0x0000000000008002L});
2140        public static final BitSet FOLLOW_COMMA_in_expressionList344 = new BitSet(new long[]{0x0000024F00032090L});
2141        public static final BitSet FOLLOW_expression_in_expressionList347 = new BitSet(new long[]{0x0000000000008002L});
2142        public static final BitSet FOLLOW_rangeopArg_in_rangeOp363 = new BitSet(new long[]{0x0000000000000040L});
2143        public static final BitSet FOLLOW_RANGEOP_in_rangeOp366 = new BitSet(new long[]{0x0000004000000010L});
2144        public static final BitSet FOLLOW_rangeopArg_in_rangeOp370 = new BitSet(new long[]{0x0000000000000002L});
2145        public static final BitSet FOLLOW_INTEGER_in_rangeopArg396 = new BitSet(new long[]{0x0000000000000002L});
2146        public static final BitSet FOLLOW_propertyChain_in_rangeopArg401 = new BitSet(new long[]{0x0000000000000002L});
2147        public static final BitSet FOLLOW_LBRACKET_in_list413 = new BitSet(new long[]{0x0000000000004000L});
2148        public static final BitSet FOLLOW_RBRACKET_in_list415 = new BitSet(new long[]{0x0000000000000002L});
2149        public static final BitSet FOLLOW_LBRACKET_in_list426 = new BitSet(new long[]{0x0000024F00032090L});
2150        public static final BitSet FOLLOW_expressionList_in_list428 = new BitSet(new long[]{0x0000000000004000L});
2151        public static final BitSet FOLLOW_RBRACKET_in_list430 = new BitSet(new long[]{0x0000000000000002L});
2152        public static final BitSet FOLLOW_BANG_in_notOp451 = new BitSet(new long[]{0x0000024F00032090L});
2153        public static final BitSet FOLLOW_expression_in_notOp453 = new BitSet(new long[]{0x0000000000000002L});
2154        public static final BitSet FOLLOW_LBRACE_in_map472 = new BitSet(new long[]{0x0000000000040000L});
2155        public static final BitSet FOLLOW_RBRACE_in_map474 = new BitSet(new long[]{0x0000000000000002L});
2156        public static final BitSet FOLLOW_LBRACE_in_map485 = new BitSet(new long[]{0x0000024F00000090L});
2157        public static final BitSet FOLLOW_mapEntryList_in_map487 = new BitSet(new long[]{0x0000000000040000L});
2158        public static final BitSet FOLLOW_RBRACE_in_map489 = new BitSet(new long[]{0x0000000000000002L});
2159        public static final BitSet FOLLOW_mapEntry_in_mapEntryList511 = new BitSet(new long[]{0x0000000000008002L});
2160        public static final BitSet FOLLOW_COMMA_in_mapEntryList514 = new BitSet(new long[]{0x0000024F00000090L});
2161        public static final BitSet FOLLOW_mapEntry_in_mapEntryList517 = new BitSet(new long[]{0x0000000000008002L});
2162        public static final BitSet FOLLOW_mapKey_in_mapEntry528 = new BitSet(new long[]{0x0000000000080000L});
2163        public static final BitSet FOLLOW_COLON_in_mapEntry530 = new BitSet(new long[]{0x0000024F00032090L});
2164        public static final BitSet FOLLOW_expression_in_mapEntry533 = new BitSet(new long[]{0x0000000000000002L});
2165        public static final BitSet FOLLOW_keyword_in_mapKey542 = new BitSet(new long[]{0x0000000000000002L});
2166        public static final BitSet FOLLOW_constant_in_mapKey546 = new BitSet(new long[]{0x0000000000000002L});
2167        public static final BitSet FOLLOW_propertyChain_in_mapKey550 = new BitSet(new long[]{0x0000000000000002L});
2168        public static final BitSet FOLLOW_rangeOp_in_synpred2_PropertyExpressionParser150 = new BitSet(new long[]{0x0000000000000002L});
2169        public static final BitSet FOLLOW_constant_in_synpred3_PropertyExpressionParser155 = new BitSet(new long[]{0x0000000000000002L});
2170        public static final BitSet FOLLOW_propertyChain_in_synpred4_PropertyExpressionParser160 = new BitSet(new long[]{0x0000000000000002L});
2171        public static final BitSet FOLLOW_term_in_synpred12_PropertyExpressionParser222 = new BitSet(new long[]{0x0000000000000020L});
2172        public static final BitSet FOLLOW_DEREF_in_synpred12_PropertyExpressionParser224 = new BitSet(new long[]{0x0000004000000000L});
2173        public static final BitSet FOLLOW_propertyChain_in_synpred12_PropertyExpressionParser226 = new BitSet(new long[]{0x0000000000000002L});
2174        public static final BitSet FOLLOW_term_in_synpred13_PropertyExpressionParser241 = new BitSet(new long[]{0x0000008000000000L});
2175        public static final BitSet FOLLOW_SAFEDEREF_in_synpred13_PropertyExpressionParser243 = new BitSet(new long[]{0x0000004000000000L});
2176        public static final BitSet FOLLOW_propertyChain_in_synpred13_PropertyExpressionParser245 = new BitSet(new long[]{0x0000000000000002L});
2177    
2178    }