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