001//
002// Generated by JTB 1.3.2
003//
004
005package jtb.visitor;
006import jtb.syntaxtree.*;
007import java.util.*;
008
009/**
010 * Provides default methods which visit each node in the tree in depth-first
011 * order.  Your visitors may extend this class.
012 */
013public class GJNoArguDepthFirst<R> implements GJNoArguVisitor<R> {
014   //
015   // Auto class visitors--probably don't need to be overridden.
016   //
017   public R visit(NodeList n) {
018      R _ret=null;
019      int _count=0;
020      for ( Enumeration<Node> e = n.elements(); e.hasMoreElements(); ) {
021         e.nextElement().accept(this);
022         _count++;
023      }
024      return _ret;
025   }
026
027   public R visit(NodeListOptional n) {
028      if ( n.present() ) {
029         R _ret=null;
030         int _count=0;
031         for ( Enumeration<Node> e = n.elements(); e.hasMoreElements(); ) {
032            e.nextElement().accept(this);
033            _count++;
034         }
035         return _ret;
036      }
037      else
038         return null;
039   }
040
041   public R visit(NodeOptional n) {
042      if ( n.present() )
043         return n.node.accept(this);
044      else
045         return null;
046   }
047
048   public R visit(NodeSequence n) {
049      R _ret=null;
050      int _count=0;
051      for ( Enumeration<Node> e = n.elements(); e.hasMoreElements(); ) {
052         e.nextElement().accept(this);
053         _count++;
054      }
055      return _ret;
056   }
057
058   public R visit(NodeToken n) { return null; }
059
060   //
061   // User-generated visitor methods below
062   //
063
064   // f0 -> [ PackageDeclaration() ]
065   // f1 -> ( ImportDeclaration() )*
066   // f2 -> ( TypeDeclaration() )*
067   // f3 -> ( <"\u001a"> )?
068   // f4 -> ( <STUFF_TO_IGNORE: ~[]> )?
069   // f5 -> <EOF>
070   public R visit(CompilationUnit n) {
071      R _ret=null;
072      n.f0.accept(this);
073      n.f1.accept(this);
074      n.f2.accept(this);
075      n.f3.accept(this);
076      n.f4.accept(this);
077      n.f5.accept(this);
078      return _ret;
079   }
080
081   // f0 -> Modifiers()
082   // f1 -> "package"
083   // f2 -> Name()
084   // f3 -> ";"
085   public R visit(PackageDeclaration n) {
086      R _ret=null;
087      n.f0.accept(this);
088      n.f1.accept(this);
089      n.f2.accept(this);
090      n.f3.accept(this);
091      return _ret;
092   }
093
094   // f0 -> "import"
095   // f1 -> [ "static" ]
096   // f2 -> Name()
097   // f3 -> [ "." "*" ]
098   // f4 -> ";"
099   public R visit(ImportDeclaration n) {
100      R _ret=null;
101      n.f0.accept(this);
102      n.f1.accept(this);
103      n.f2.accept(this);
104      n.f3.accept(this);
105      n.f4.accept(this);
106      return _ret;
107   }
108
109   // f0 -> ( ( "public" | "static" | "protected" | "private" | "final" | "abstract" | "synchronized" | "native" | "transient" | "volatile" | "strictfp" | Annotation() ) )*
110   public R visit(Modifiers n) {
111      R _ret=null;
112      n.f0.accept(this);
113      return _ret;
114   }
115
116   // f0 -> ";"
117   //       | Modifiers() ( ClassOrInterfaceDeclaration(modifiers) | EnumDeclaration(modifiers) | AnnotationTypeDeclaration(modifiers) )
118   public R visit(TypeDeclaration n) {
119      R _ret=null;
120      n.f0.accept(this);
121      return _ret;
122   }
123
124   // f0 -> ( "class" | "interface" )
125   // f1 -> <IDENTIFIER>
126   // f2 -> [ TypeParameters() ]
127   // f3 -> [ ExtendsList(isInterface) ]
128   // f4 -> [ ImplementsList(isInterface) ]
129   // f5 -> ClassOrInterfaceBody(isInterface)
130   public R visit(ClassOrInterfaceDeclaration n) {
131      R _ret=null;
132      n.f0.accept(this);
133      n.f1.accept(this);
134      n.f2.accept(this);
135      n.f3.accept(this);
136      n.f4.accept(this);
137      n.f5.accept(this);
138      return _ret;
139   }
140
141   // f0 -> "extends"
142   // f1 -> ClassOrInterfaceType()
143   // f2 -> ( "," ClassOrInterfaceType() )*
144   public R visit(ExtendsList n) {
145      R _ret=null;
146      n.f0.accept(this);
147      n.f1.accept(this);
148      n.f2.accept(this);
149      return _ret;
150   }
151
152   // f0 -> "implements"
153   // f1 -> ClassOrInterfaceType()
154   // f2 -> ( "," ClassOrInterfaceType() )*
155   public R visit(ImplementsList n) {
156      R _ret=null;
157      n.f0.accept(this);
158      n.f1.accept(this);
159      n.f2.accept(this);
160      return _ret;
161   }
162
163   // f0 -> "enum"
164   // f1 -> <IDENTIFIER>
165   // f2 -> [ ImplementsList(false) ]
166   // f3 -> EnumBody()
167   public R visit(EnumDeclaration n) {
168      R _ret=null;
169      n.f0.accept(this);
170      n.f1.accept(this);
171      n.f2.accept(this);
172      n.f3.accept(this);
173      return _ret;
174   }
175
176   // f0 -> "{"
177   // f1 -> [ EnumConstant() ( "," EnumConstant() )* ]
178   // f2 -> [ "," ]
179   // f3 -> [ ";" ( ClassOrInterfaceBodyDeclaration(false) )* ]
180   // f4 -> "}"
181   public R visit(EnumBody n) {
182      R _ret=null;
183      n.f0.accept(this);
184      n.f1.accept(this);
185      n.f2.accept(this);
186      n.f3.accept(this);
187      n.f4.accept(this);
188      return _ret;
189   }
190
191   // f0 -> Modifiers()
192   // f1 -> <IDENTIFIER>
193   // f2 -> [ Arguments() ]
194   // f3 -> [ ClassOrInterfaceBody(false) ]
195   public R visit(EnumConstant n) {
196      R _ret=null;
197      n.f0.accept(this);
198      n.f1.accept(this);
199      n.f2.accept(this);
200      n.f3.accept(this);
201      return _ret;
202   }
203
204   // f0 -> "<"
205   // f1 -> TypeParameter()
206   // f2 -> ( "," TypeParameter() )*
207   // f3 -> ">"
208   public R visit(TypeParameters n) {
209      R _ret=null;
210      n.f0.accept(this);
211      n.f1.accept(this);
212      n.f2.accept(this);
213      n.f3.accept(this);
214      return _ret;
215   }
216
217   // f0 -> <IDENTIFIER>
218   // f1 -> [ TypeBound() ]
219   public R visit(TypeParameter n) {
220      R _ret=null;
221      n.f0.accept(this);
222      n.f1.accept(this);
223      return _ret;
224   }
225
226   // f0 -> "extends"
227   // f1 -> ClassOrInterfaceType()
228   // f2 -> ( "&" ClassOrInterfaceType() )*
229   public R visit(TypeBound n) {
230      R _ret=null;
231      n.f0.accept(this);
232      n.f1.accept(this);
233      n.f2.accept(this);
234      return _ret;
235   }
236
237   // f0 -> "{"
238   // f1 -> ( ClassOrInterfaceBodyDeclaration(isInterface) )*
239   // f2 -> "}"
240   public R visit(ClassOrInterfaceBody n) {
241      R _ret=null;
242      n.f0.accept(this);
243      n.f1.accept(this);
244      n.f2.accept(this);
245      return _ret;
246   }
247
248   // f0 -> Initializer()
249   //       | Modifiers() ( ClassOrInterfaceDeclaration(modifiers) | EnumDeclaration(modifiers) | ConstructorDeclaration() | FieldDeclaration(modifiers) | MethodDeclaration(modifiers) | AnnotationTypeDeclaration(modifiers) )
250   //       | ";"
251   public R visit(ClassOrInterfaceBodyDeclaration n) {
252      R _ret=null;
253      n.f0.accept(this);
254      return _ret;
255   }
256
257   // f0 -> Type()
258   // f1 -> VariableDeclarator()
259   // f2 -> ( "," VariableDeclarator() )*
260   // f3 -> ";"
261   public R visit(FieldDeclaration n) {
262      R _ret=null;
263      n.f0.accept(this);
264      n.f1.accept(this);
265      n.f2.accept(this);
266      n.f3.accept(this);
267      return _ret;
268   }
269
270   // f0 -> VariableDeclaratorId()
271   // f1 -> [ "=" VariableInitializer() ]
272   public R visit(VariableDeclarator n) {
273      R _ret=null;
274      n.f0.accept(this);
275      n.f1.accept(this);
276      return _ret;
277   }
278
279   // f0 -> <IDENTIFIER>
280   // f1 -> ( "[" "]" )*
281   public R visit(VariableDeclaratorId n) {
282      R _ret=null;
283      n.f0.accept(this);
284      n.f1.accept(this);
285      return _ret;
286   }
287
288   // f0 -> ArrayInitializer()
289   //       | Expression()
290   public R visit(VariableInitializer n) {
291      R _ret=null;
292      n.f0.accept(this);
293      return _ret;
294   }
295
296   // f0 -> "{"
297   // f1 -> [ VariableInitializer() ( "," VariableInitializer() )* ]
298   // f2 -> [ "," ]
299   // f3 -> "}"
300   public R visit(ArrayInitializer n) {
301      R _ret=null;
302      n.f0.accept(this);
303      n.f1.accept(this);
304      n.f2.accept(this);
305      n.f3.accept(this);
306      return _ret;
307   }
308
309   // f0 -> [ TypeParameters() ]
310   // f1 -> ResultType()
311   // f2 -> MethodDeclarator()
312   // f3 -> [ "throws" NameList() ]
313   // f4 -> ( Block() | ";" )
314   public R visit(MethodDeclaration n) {
315      R _ret=null;
316      n.f0.accept(this);
317      n.f1.accept(this);
318      n.f2.accept(this);
319      n.f3.accept(this);
320      n.f4.accept(this);
321      return _ret;
322   }
323
324   // f0 -> <IDENTIFIER>
325   // f1 -> FormalParameters()
326   // f2 -> ( "[" "]" )*
327   public R visit(MethodDeclarator n) {
328      R _ret=null;
329      n.f0.accept(this);
330      n.f1.accept(this);
331      n.f2.accept(this);
332      return _ret;
333   }
334
335   // f0 -> "("
336   // f1 -> [ FormalParameter() ( "," FormalParameter() )* ]
337   // f2 -> ")"
338   public R visit(FormalParameters n) {
339      R _ret=null;
340      n.f0.accept(this);
341      n.f1.accept(this);
342      n.f2.accept(this);
343      return _ret;
344   }
345
346   // f0 -> Modifiers()
347   // f1 -> [ "final" | Annotation() ]
348   // f2 -> Type()
349   // f3 -> [ "..." ]
350   // f4 -> VariableDeclaratorId()
351   public R visit(FormalParameter n) {
352      R _ret=null;
353      n.f0.accept(this);
354      n.f1.accept(this);
355      n.f2.accept(this);
356      n.f3.accept(this);
357      n.f4.accept(this);
358      return _ret;
359   }
360
361   // f0 -> [ TypeParameters() ]
362   // f1 -> <IDENTIFIER>
363   // f2 -> FormalParameters()
364   // f3 -> [ "throws" NameList() ]
365   // f4 -> "{"
366   // f5 -> [ ExplicitConstructorInvocation() ]
367   // f6 -> ( BlockStatement() )*
368   // f7 -> "}"
369   public R visit(ConstructorDeclaration n) {
370      R _ret=null;
371      n.f0.accept(this);
372      n.f1.accept(this);
373      n.f2.accept(this);
374      n.f3.accept(this);
375      n.f4.accept(this);
376      n.f5.accept(this);
377      n.f6.accept(this);
378      n.f7.accept(this);
379      return _ret;
380   }
381
382   // f0 -> [ TypeArguments() ] ( "this" | "super" ) Arguments() ";"
383   //       | PrimaryExpression() "." [ TypeArguments() ] "super" Arguments() ";"
384   public R visit(ExplicitConstructorInvocation n) {
385      R _ret=null;
386      n.f0.accept(this);
387      return _ret;
388   }
389
390   // f0 -> [ "static" ]
391   // f1 -> Block()
392   public R visit(Initializer n) {
393      R _ret=null;
394      n.f0.accept(this);
395      n.f1.accept(this);
396      return _ret;
397   }
398
399   // f0 -> ReferenceType()
400   //       | PrimitiveType()
401   public R visit(Type n) {
402      R _ret=null;
403      n.f0.accept(this);
404      return _ret;
405   }
406
407   // f0 -> PrimitiveType() ( "[" "]" )+
408   //       | ( ClassOrInterfaceType() ) ( "[" "]" )*
409   public R visit(ReferenceType n) {
410      R _ret=null;
411      n.f0.accept(this);
412      return _ret;
413   }
414
415   // f0 -> <IDENTIFIER>
416   // f1 -> [ TypeArguments() ]
417   // f2 -> ( "." <IDENTIFIER> [ TypeArguments() ] )*
418   public R visit(ClassOrInterfaceType n) {
419      R _ret=null;
420      n.f0.accept(this);
421      n.f1.accept(this);
422      n.f2.accept(this);
423      return _ret;
424   }
425
426   // f0 -> "<"
427   // f1 -> TypeArgument()
428   // f2 -> ( "," TypeArgument() )*
429   // f3 -> ">"
430   public R visit(TypeArguments n) {
431      R _ret=null;
432      n.f0.accept(this);
433      n.f1.accept(this);
434      n.f2.accept(this);
435      n.f3.accept(this);
436      return _ret;
437   }
438
439   // f0 -> ReferenceType()
440   //       | "?" [ WildcardBounds() ]
441   public R visit(TypeArgument n) {
442      R _ret=null;
443      n.f0.accept(this);
444      return _ret;
445   }
446
447   // f0 -> "extends" ReferenceType()
448   //       | "super" ReferenceType()
449   public R visit(WildcardBounds n) {
450      R _ret=null;
451      n.f0.accept(this);
452      return _ret;
453   }
454
455   // f0 -> "boolean"
456   //       | "char"
457   //       | "byte"
458   //       | "short"
459   //       | "int"
460   //       | "long"
461   //       | "float"
462   //       | "double"
463   public R visit(PrimitiveType n) {
464      R _ret=null;
465      n.f0.accept(this);
466      return _ret;
467   }
468
469   // f0 -> "void"
470   //       | Type()
471   public R visit(ResultType n) {
472      R _ret=null;
473      n.f0.accept(this);
474      return _ret;
475   }
476
477   // f0 -> <IDENTIFIER>
478   // f1 -> ( "." <IDENTIFIER> )*
479   public R visit(Name n) {
480      R _ret=null;
481      n.f0.accept(this);
482      n.f1.accept(this);
483      return _ret;
484   }
485
486   // f0 -> Name()
487   // f1 -> ( "," Name() )*
488   public R visit(NameList n) {
489      R _ret=null;
490      n.f0.accept(this);
491      n.f1.accept(this);
492      return _ret;
493   }
494
495   // f0 -> ConditionalExpression()
496   // f1 -> [ AssignmentOperator() Expression() ]
497   public R visit(Expression n) {
498      R _ret=null;
499      n.f0.accept(this);
500      n.f1.accept(this);
501      return _ret;
502   }
503
504   // f0 -> "="
505   //       | "*="
506   //       | "/="
507   //       | "%="
508   //       | "+="
509   //       | "-="
510   //       | "<<="
511   //       | ">>="
512   //       | ">>>="
513   //       | "&="
514   //       | "^="
515   //       | "|="
516   public R visit(AssignmentOperator n) {
517      R _ret=null;
518      n.f0.accept(this);
519      return _ret;
520   }
521
522   // f0 -> ConditionalOrExpression()
523   // f1 -> [ "?" Expression() ":" Expression() ]
524   public R visit(ConditionalExpression n) {
525      R _ret=null;
526      n.f0.accept(this);
527      n.f1.accept(this);
528      return _ret;
529   }
530
531   // f0 -> ConditionalAndExpression()
532   // f1 -> ( "||" ConditionalAndExpression() )*
533   public R visit(ConditionalOrExpression n) {
534      R _ret=null;
535      n.f0.accept(this);
536      n.f1.accept(this);
537      return _ret;
538   }
539
540   // f0 -> InclusiveOrExpression()
541   // f1 -> ( "&&" InclusiveOrExpression() )*
542   public R visit(ConditionalAndExpression n) {
543      R _ret=null;
544      n.f0.accept(this);
545      n.f1.accept(this);
546      return _ret;
547   }
548
549   // f0 -> ExclusiveOrExpression()
550   // f1 -> ( "|" ExclusiveOrExpression() )*
551   public R visit(InclusiveOrExpression n) {
552      R _ret=null;
553      n.f0.accept(this);
554      n.f1.accept(this);
555      return _ret;
556   }
557
558   // f0 -> AndExpression()
559   // f1 -> ( "^" AndExpression() )*
560   public R visit(ExclusiveOrExpression n) {
561      R _ret=null;
562      n.f0.accept(this);
563      n.f1.accept(this);
564      return _ret;
565   }
566
567   // f0 -> EqualityExpression()
568   // f1 -> ( "&" EqualityExpression() )*
569   public R visit(AndExpression n) {
570      R _ret=null;
571      n.f0.accept(this);
572      n.f1.accept(this);
573      return _ret;
574   }
575
576   // f0 -> InstanceOfExpression()
577   // f1 -> ( ( "==" | "!=" ) InstanceOfExpression() )*
578   public R visit(EqualityExpression n) {
579      R _ret=null;
580      n.f0.accept(this);
581      n.f1.accept(this);
582      return _ret;
583   }
584
585   // f0 -> RelationalExpression()
586   // f1 -> [ "instanceof" Type() ]
587   public R visit(InstanceOfExpression n) {
588      R _ret=null;
589      n.f0.accept(this);
590      n.f1.accept(this);
591      return _ret;
592   }
593
594   // f0 -> ShiftExpression()
595   // f1 -> ( ( "<" | ">" | "<=" | ">=" ) ShiftExpression() )*
596   public R visit(RelationalExpression n) {
597      R _ret=null;
598      n.f0.accept(this);
599      n.f1.accept(this);
600      return _ret;
601   }
602
603   // f0 -> AdditiveExpression()
604   // f1 -> ( ( "<<" | RSIGNEDSHIFT() | RUNSIGNEDSHIFT() ) AdditiveExpression() )*
605   public R visit(ShiftExpression n) {
606      R _ret=null;
607      n.f0.accept(this);
608      n.f1.accept(this);
609      return _ret;
610   }
611
612   // f0 -> MultiplicativeExpression()
613   // f1 -> ( ( "+" | "-" ) MultiplicativeExpression() )*
614   public R visit(AdditiveExpression n) {
615      R _ret=null;
616      n.f0.accept(this);
617      n.f1.accept(this);
618      return _ret;
619   }
620
621   // f0 -> UnaryExpression()
622   // f1 -> ( ( "*" | "/" | "%" ) UnaryExpression() )*
623   public R visit(MultiplicativeExpression n) {
624      R _ret=null;
625      n.f0.accept(this);
626      n.f1.accept(this);
627      return _ret;
628   }
629
630   // f0 -> ( "+" | "-" ) UnaryExpression()
631   //       | PreIncrementExpression()
632   //       | PreDecrementExpression()
633   //       | UnaryExpressionNotPlusMinus()
634   public R visit(UnaryExpression n) {
635      R _ret=null;
636      n.f0.accept(this);
637      return _ret;
638   }
639
640   // f0 -> "++"
641   // f1 -> PrimaryExpression()
642   public R visit(PreIncrementExpression n) {
643      R _ret=null;
644      n.f0.accept(this);
645      n.f1.accept(this);
646      return _ret;
647   }
648
649   // f0 -> "--"
650   // f1 -> PrimaryExpression()
651   public R visit(PreDecrementExpression n) {
652      R _ret=null;
653      n.f0.accept(this);
654      n.f1.accept(this);
655      return _ret;
656   }
657
658   // f0 -> ( "~" | "!" ) UnaryExpression()
659   //       | CastExpression()
660   //       | PostfixExpression()
661   public R visit(UnaryExpressionNotPlusMinus n) {
662      R _ret=null;
663      n.f0.accept(this);
664      return _ret;
665   }
666
667   // f0 -> "(" PrimitiveType()
668   //       | "(" Type() "[" "]"
669   //       | "(" Type() ")" ( "~" | "!" | "(" | <IDENTIFIER> | "this" | "super" | "new" | Literal() )
670   public R visit(CastLookahead n) {
671      R _ret=null;
672      n.f0.accept(this);
673      return _ret;
674   }
675
676   // f0 -> PrimaryExpression()
677   // f1 -> [ "++" | "--" ]
678   public R visit(PostfixExpression n) {
679      R _ret=null;
680      n.f0.accept(this);
681      n.f1.accept(this);
682      return _ret;
683   }
684
685   // f0 -> "(" Type() ")" UnaryExpression()
686   //       | "(" Type() ")" UnaryExpressionNotPlusMinus()
687   public R visit(CastExpression n) {
688      R _ret=null;
689      n.f0.accept(this);
690      return _ret;
691   }
692
693   // f0 -> PrimaryPrefix()
694   // f1 -> ( PrimarySuffix() )*
695   public R visit(PrimaryExpression n) {
696      R _ret=null;
697      n.f0.accept(this);
698      n.f1.accept(this);
699      return _ret;
700   }
701
702   // f0 -> "."
703   // f1 -> TypeArguments()
704   // f2 -> <IDENTIFIER>
705   public R visit(MemberSelector n) {
706      R _ret=null;
707      n.f0.accept(this);
708      n.f1.accept(this);
709      n.f2.accept(this);
710      return _ret;
711   }
712
713   // f0 -> Literal()
714   //       | ( <IDENTIFIER> "." )* "this"
715   //       | "super" "." <IDENTIFIER>
716   //       | ClassOrInterfaceType() "." "super" "." <IDENTIFIER>
717   //       | "(" Expression() ")"
718   //       | AllocationExpression()
719   //       | ResultType() "." "class"
720   //       | Name()
721   public R visit(PrimaryPrefix n) {
722      R _ret=null;
723      n.f0.accept(this);
724      return _ret;
725   }
726
727   // f0 -> "." "super"
728   //       | "." "this"
729   //       | "." AllocationExpression()
730   //       | MemberSelector()
731   //       | "[" Expression() "]"
732   //       | "." <IDENTIFIER>
733   //       | Arguments()
734   public R visit(PrimarySuffix n) {
735      R _ret=null;
736      n.f0.accept(this);
737      return _ret;
738   }
739
740   // f0 -> <INTEGER_LITERAL>
741   //       | <FLOATING_POINT_LITERAL>
742   //       | <CHARACTER_LITERAL>
743   //       | <STRING_LITERAL>
744   //       | BooleanLiteral()
745   //       | NullLiteral()
746   public R visit(Literal n) {
747      R _ret=null;
748      n.f0.accept(this);
749      return _ret;
750   }
751
752   // f0 -> "true"
753   //       | "false"
754   public R visit(BooleanLiteral n) {
755      R _ret=null;
756      n.f0.accept(this);
757      return _ret;
758   }
759
760   // f0 -> "null"
761   public R visit(NullLiteral n) {
762      R _ret=null;
763      n.f0.accept(this);
764      return _ret;
765   }
766
767   // f0 -> "("
768   // f1 -> [ ArgumentList() ]
769   // f2 -> ")"
770   public R visit(Arguments n) {
771      R _ret=null;
772      n.f0.accept(this);
773      n.f1.accept(this);
774      n.f2.accept(this);
775      return _ret;
776   }
777
778   // f0 -> Expression()
779   // f1 -> ( "," Expression() )*
780   public R visit(ArgumentList n) {
781      R _ret=null;
782      n.f0.accept(this);
783      n.f1.accept(this);
784      return _ret;
785   }
786
787   // f0 -> "new" PrimitiveType() ArrayDimsAndInits()
788   //       | "new" ClassOrInterfaceType() [ TypeArguments() ] ( ArrayDimsAndInits() | Arguments() [ ClassOrInterfaceBody(false) ] )
789   public R visit(AllocationExpression n) {
790      R _ret=null;
791      n.f0.accept(this);
792      return _ret;
793   }
794
795   // f0 -> ( "[" Expression() "]" )+ ( "[" "]" )*
796   //       | ( "[" "]" )+ ArrayInitializer()
797   public R visit(ArrayDimsAndInits n) {
798      R _ret=null;
799      n.f0.accept(this);
800      return _ret;
801   }
802
803   // f0 -> LabeledStatement()
804   //       | AssertStatement()
805   //       | Block()
806   //       | EmptyStatement()
807   //       | StatementExpression() ";"
808   //       | SwitchStatement()
809   //       | IfStatement()
810   //       | WhileStatement()
811   //       | DoStatement()
812   //       | ForStatement()
813   //       | BreakStatement()
814   //       | ContinueStatement()
815   //       | ReturnStatement()
816   //       | ThrowStatement()
817   //       | SynchronizedStatement()
818   //       | TryStatement()
819   public R visit(Statement n) {
820      R _ret=null;
821      n.f0.accept(this);
822      return _ret;
823   }
824
825   // f0 -> "assert"
826   // f1 -> Expression()
827   // f2 -> [ ":" Expression() ]
828   // f3 -> ";"
829   public R visit(AssertStatement n) {
830      R _ret=null;
831      n.f0.accept(this);
832      n.f1.accept(this);
833      n.f2.accept(this);
834      n.f3.accept(this);
835      return _ret;
836   }
837
838   // f0 -> <IDENTIFIER>
839   // f1 -> ":"
840   // f2 -> Statement()
841   public R visit(LabeledStatement n) {
842      R _ret=null;
843      n.f0.accept(this);
844      n.f1.accept(this);
845      n.f2.accept(this);
846      return _ret;
847   }
848
849   // f0 -> "{"
850   // f1 -> ( BlockStatement() )*
851   // f2 -> "}"
852   public R visit(Block n) {
853      R _ret=null;
854      n.f0.accept(this);
855      n.f1.accept(this);
856      n.f2.accept(this);
857      return _ret;
858   }
859
860   // f0 -> LocalVariableDeclaration() ";"
861   //       | Statement()
862   //       | ClassOrInterfaceDeclaration(0)
863   public R visit(BlockStatement n) {
864      R _ret=null;
865      n.f0.accept(this);
866      return _ret;
867   }
868
869   // f0 -> Modifiers()
870   // f1 -> Type()
871   // f2 -> VariableDeclarator()
872   // f3 -> ( "," VariableDeclarator() )*
873   public R visit(LocalVariableDeclaration n) {
874      R _ret=null;
875      n.f0.accept(this);
876      n.f1.accept(this);
877      n.f2.accept(this);
878      n.f3.accept(this);
879      return _ret;
880   }
881
882   // f0 -> ";"
883   public R visit(EmptyStatement n) {
884      R _ret=null;
885      n.f0.accept(this);
886      return _ret;
887   }
888
889   // f0 -> PreIncrementExpression()
890   //       | PreDecrementExpression()
891   //       | PrimaryExpression() [ "++" | "--" | AssignmentOperator() Expression() ]
892   public R visit(StatementExpression n) {
893      R _ret=null;
894      n.f0.accept(this);
895      return _ret;
896   }
897
898   // f0 -> "switch"
899   // f1 -> "("
900   // f2 -> Expression()
901   // f3 -> ")"
902   // f4 -> "{"
903   // f5 -> ( SwitchLabel() ( BlockStatement() )* )*
904   // f6 -> "}"
905   public R visit(SwitchStatement n) {
906      R _ret=null;
907      n.f0.accept(this);
908      n.f1.accept(this);
909      n.f2.accept(this);
910      n.f3.accept(this);
911      n.f4.accept(this);
912      n.f5.accept(this);
913      n.f6.accept(this);
914      return _ret;
915   }
916
917   // f0 -> "case" Expression() ":"
918   //       | "default" ":"
919   public R visit(SwitchLabel n) {
920      R _ret=null;
921      n.f0.accept(this);
922      return _ret;
923   }
924
925   // f0 -> "if"
926   // f1 -> "("
927   // f2 -> Expression()
928   // f3 -> ")"
929   // f4 -> Statement()
930   // f5 -> [ "else" Statement() ]
931   public R visit(IfStatement n) {
932      R _ret=null;
933      n.f0.accept(this);
934      n.f1.accept(this);
935      n.f2.accept(this);
936      n.f3.accept(this);
937      n.f4.accept(this);
938      n.f5.accept(this);
939      return _ret;
940   }
941
942   // f0 -> "while"
943   // f1 -> "("
944   // f2 -> Expression()
945   // f3 -> ")"
946   // f4 -> Statement()
947   public R visit(WhileStatement n) {
948      R _ret=null;
949      n.f0.accept(this);
950      n.f1.accept(this);
951      n.f2.accept(this);
952      n.f3.accept(this);
953      n.f4.accept(this);
954      return _ret;
955   }
956
957   // f0 -> "do"
958   // f1 -> Statement()
959   // f2 -> "while"
960   // f3 -> "("
961   // f4 -> Expression()
962   // f5 -> ")"
963   // f6 -> ";"
964   public R visit(DoStatement n) {
965      R _ret=null;
966      n.f0.accept(this);
967      n.f1.accept(this);
968      n.f2.accept(this);
969      n.f3.accept(this);
970      n.f4.accept(this);
971      n.f5.accept(this);
972      n.f6.accept(this);
973      return _ret;
974   }
975
976   // f0 -> "for"
977   // f1 -> "("
978   // f2 -> ( Modifiers() Type() <IDENTIFIER> ":" Expression() | [ ForInit() ] ";" [ Expression() ] ";" [ ForUpdate() ] )
979   // f3 -> ")"
980   // f4 -> Statement()
981   public R visit(ForStatement n) {
982      R _ret=null;
983      n.f0.accept(this);
984      n.f1.accept(this);
985      n.f2.accept(this);
986      n.f3.accept(this);
987      n.f4.accept(this);
988      return _ret;
989   }
990
991   // f0 -> LocalVariableDeclaration()
992   //       | StatementExpressionList()
993   public R visit(ForInit n) {
994      R _ret=null;
995      n.f0.accept(this);
996      return _ret;
997   }
998
999   // f0 -> StatementExpression()
1000   // f1 -> ( "," StatementExpression() )*
1001   public R visit(StatementExpressionList n) {
1002      R _ret=null;
1003      n.f0.accept(this);
1004      n.f1.accept(this);
1005      return _ret;
1006   }
1007
1008   // f0 -> StatementExpressionList()
1009   public R visit(ForUpdate n) {
1010      R _ret=null;
1011      n.f0.accept(this);
1012      return _ret;
1013   }
1014
1015   // f0 -> "break"
1016   // f1 -> [ <IDENTIFIER> ]
1017   // f2 -> ";"
1018   public R visit(BreakStatement n) {
1019      R _ret=null;
1020      n.f0.accept(this);
1021      n.f1.accept(this);
1022      n.f2.accept(this);
1023      return _ret;
1024   }
1025
1026   // f0 -> "continue"
1027   // f1 -> [ <IDENTIFIER> ]
1028   // f2 -> ";"
1029   public R visit(ContinueStatement n) {
1030      R _ret=null;
1031      n.f0.accept(this);
1032      n.f1.accept(this);
1033      n.f2.accept(this);
1034      return _ret;
1035   }
1036
1037   // f0 -> "return"
1038   // f1 -> [ Expression() ]
1039   // f2 -> ";"
1040   public R visit(ReturnStatement n) {
1041      R _ret=null;
1042      n.f0.accept(this);
1043      n.f1.accept(this);
1044      n.f2.accept(this);
1045      return _ret;
1046   }
1047
1048   // f0 -> "throw"
1049   // f1 -> Expression()
1050   // f2 -> ";"
1051   public R visit(ThrowStatement n) {
1052      R _ret=null;
1053      n.f0.accept(this);
1054      n.f1.accept(this);
1055      n.f2.accept(this);
1056      return _ret;
1057   }
1058
1059   // f0 -> "synchronized"
1060   // f1 -> "("
1061   // f2 -> Expression()
1062   // f3 -> ")"
1063   // f4 -> Block()
1064   public R visit(SynchronizedStatement n) {
1065      R _ret=null;
1066      n.f0.accept(this);
1067      n.f1.accept(this);
1068      n.f2.accept(this);
1069      n.f3.accept(this);
1070      n.f4.accept(this);
1071      return _ret;
1072   }
1073
1074   // f0 -> "try"
1075   // f1 -> Block()
1076   // f2 -> ( "catch" "(" FormalParameter() ")" Block() )*
1077   // f3 -> [ "finally" Block() ]
1078   public R visit(TryStatement n) {
1079      R _ret=null;
1080      n.f0.accept(this);
1081      n.f1.accept(this);
1082      n.f2.accept(this);
1083      n.f3.accept(this);
1084      return _ret;
1085   }
1086
1087   // f0 -> ( ">" ">" ">" )
1088   public R visit(RUNSIGNEDSHIFT n) {
1089      R _ret=null;
1090      n.f0.accept(this);
1091      return _ret;
1092   }
1093
1094   // f0 -> ( ">" ">" )
1095   public R visit(RSIGNEDSHIFT n) {
1096      R _ret=null;
1097      n.f0.accept(this);
1098      return _ret;
1099   }
1100
1101   // f0 -> NormalAnnotation()
1102   //       | SingleMemberAnnotation()
1103   //       | MarkerAnnotation()
1104   public R visit(Annotation n) {
1105      R _ret=null;
1106      n.f0.accept(this);
1107      return _ret;
1108   }
1109
1110   // f0 -> "@"
1111   // f1 -> Name()
1112   // f2 -> "("
1113   // f3 -> [ MemberValuePairs() ]
1114   // f4 -> ")"
1115   public R visit(NormalAnnotation n) {
1116      R _ret=null;
1117      n.f0.accept(this);
1118      n.f1.accept(this);
1119      n.f2.accept(this);
1120      n.f3.accept(this);
1121      n.f4.accept(this);
1122      return _ret;
1123   }
1124
1125   // f0 -> "@"
1126   // f1 -> Name()
1127   public R visit(MarkerAnnotation n) {
1128      R _ret=null;
1129      n.f0.accept(this);
1130      n.f1.accept(this);
1131      return _ret;
1132   }
1133
1134   // f0 -> "@"
1135   // f1 -> Name()
1136   // f2 -> "("
1137   // f3 -> MemberValue()
1138   // f4 -> ")"
1139   public R visit(SingleMemberAnnotation n) {
1140      R _ret=null;
1141      n.f0.accept(this);
1142      n.f1.accept(this);
1143      n.f2.accept(this);
1144      n.f3.accept(this);
1145      n.f4.accept(this);
1146      return _ret;
1147   }
1148
1149   // f0 -> MemberValuePair()
1150   // f1 -> ( "," MemberValuePair() )*
1151   public R visit(MemberValuePairs n) {
1152      R _ret=null;
1153      n.f0.accept(this);
1154      n.f1.accept(this);
1155      return _ret;
1156   }
1157
1158   // f0 -> <IDENTIFIER>
1159   // f1 -> "="
1160   // f2 -> MemberValue()
1161   public R visit(MemberValuePair n) {
1162      R _ret=null;
1163      n.f0.accept(this);
1164      n.f1.accept(this);
1165      n.f2.accept(this);
1166      return _ret;
1167   }
1168
1169   // f0 -> Annotation()
1170   //       | MemberValueArrayInitializer()
1171   //       | ConditionalExpression()
1172   public R visit(MemberValue n) {
1173      R _ret=null;
1174      n.f0.accept(this);
1175      return _ret;
1176   }
1177
1178   // f0 -> "{"
1179   // f1 -> ( MemberValue() ( "," MemberValue() )* [ "," ] )?
1180   // f2 -> "}"
1181   public R visit(MemberValueArrayInitializer n) {
1182      R _ret=null;
1183      n.f0.accept(this);
1184      n.f1.accept(this);
1185      n.f2.accept(this);
1186      return _ret;
1187   }
1188
1189   // f0 -> "@"
1190   // f1 -> "interface"
1191   // f2 -> <IDENTIFIER>
1192   // f3 -> AnnotationTypeBody()
1193   public R visit(AnnotationTypeDeclaration n) {
1194      R _ret=null;
1195      n.f0.accept(this);
1196      n.f1.accept(this);
1197      n.f2.accept(this);
1198      n.f3.accept(this);
1199      return _ret;
1200   }
1201
1202   // f0 -> "{"
1203   // f1 -> ( AnnotationTypeMemberDeclaration() )*
1204   // f2 -> "}"
1205   public R visit(AnnotationTypeBody n) {
1206      R _ret=null;
1207      n.f0.accept(this);
1208      n.f1.accept(this);
1209      n.f2.accept(this);
1210      return _ret;
1211   }
1212
1213   // f0 -> Modifiers() ( Type() <IDENTIFIER> "(" ")" [ DefaultValue() ] ";" | ClassOrInterfaceDeclaration(modifiers) | EnumDeclaration(modifiers) | AnnotationTypeDeclaration(modifiers) | FieldDeclaration(modifiers) )
1214   //       | ( ";" )
1215   public R visit(AnnotationTypeMemberDeclaration n) {
1216      R _ret=null;
1217      n.f0.accept(this);
1218      return _ret;
1219   }
1220
1221   // f0 -> "default"
1222   // f1 -> MemberValue()
1223   public R visit(DefaultValue n) {
1224      R _ret=null;
1225      n.f0.accept(this);
1226      n.f1.accept(this);
1227      return _ret;
1228   }
1229
1230}