// This file is automatically generated by DemeterJ.

DisplayVisitor {
  {{
    protected java.io.PrintWriter out = new java.io.PrintWriter(System.out, true);
    java.io.PrintWriter get_out()             { return out; }
    void set_out(java.io.PrintWriter new_out) { out = new_out; }
    DisplayVisitor(java.io.PrintWriter out)     { set_out(out); }
    DisplayVisitor(java.io.PrintStream out)
      { set_out(new java.io.PrintWriter(out, true)); }
  }}
  finish {{ out.flush(); }}


  before AspectFile {{
    out.print(": AspectFile  (");
    indent++;
  }}
  after AspectFile {{
    out.print(" )");
    indent--;
  }}
  before -> AspectFile, cdAspect, ClassDictionaryAspect {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<cdAspect> ");
  }}
  before -> AspectFile, tAspect, TraversalAspect {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<tAspect> ");
  }}
  before ClassDictionaryAspect {{
    out.print(": ClassDictionaryAspect  (");
    indent++;
  }}
  after ClassDictionaryAspect {{
    out.print(" )");
    indent--;
  }}
  before -> ClassDictionaryAspect, name, AspectName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }}
  before -> ClassDictionaryAspect, textcd, TextCD {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<textcd> ");
  }}
  before TraversalAspect {{
    out.print(": TraversalAspect  (");
    indent++;
  }}
  after TraversalAspect {{
    out.print(" )");
    indent--;
  }}
  before -> TraversalAspect, name, AspectName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }}
  before -> TraversalAspect, declaration_list, Declaration_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<declaration_list> ");
  }}
  before Declaration {{
    out.print(": Declaration  (");
    indent++;
  }}
  after Declaration {{
    out.print(" )");
    indent--;
  }}
  before -> Declaration, generaldeclaration, GeneralDeclaration {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<generaldeclaration> ");
  }}
  before StrategyDecl {{
    out.print(": StrategyDecl  (");
    indent++;
  }}
  after StrategyDecl {{
    out.print(" )");
    indent--;
  }}
  before -> StrategyDecl, name, StrategyDeclName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }}
  before -> StrategyDecl, strategyexpression, StrategyExpression {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<strategyexpression> ");
  }}
  before NodesetDecl {{
    out.print(": NodesetDecl  (");
    indent++;
  }}
  after NodesetDecl {{
    out.print(" )");
    indent--;
  }}
  before -> NodesetDecl, name, NodesetDeclName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }}
  before -> NodesetDecl, nodesetdef, NodesetDef {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<nodesetdef> ");
  }}
  before StrategyExpression {{
    out.print(": StrategyExpression  (");
    indent++;
  }}
  after StrategyExpression {{
    out.print(" )");
    indent--;
  }}
  before -> StrategyExpression, strategy, Strategy {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<strategy> ");
  }}
  before -> SimpleStrategy, parsedNameMap, NameMap {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<parsedNameMap> ");
  }}
  before StrategyGraph {{
    out.print(": StrategyGraph  (");
    indent++;
  }}
  after StrategyGraph {{
    out.print(" )");
    indent--;
  }}
  before -> StrategyGraph, edges, SGEdge_SList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<edges> ");
  }}
  before SGEdge {{
    out.print(": SGEdge  (");
    indent++;
  }}
  after SGEdge {{
    out.print(" )");
    indent--;
  }}
  before -> SGEdge, sourcemarker, SourceMarker {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<sourcemarker> ");
  }}
  before -> SGEdge, source, GlobSpec {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<source> ");
  }}
  before -> SGEdge, targetmarker, TargetMarker {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<targetmarker> ");
  }}
  before -> SGEdge, target, GlobSpec {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<target> ");
  }}
  before -> SGEdge, constraint, NegativeConstraint {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<constraint> ");
  }}
  before SourceMarker {{
    out.print(": SourceMarker  (");
    indent++;
  }}
  after SourceMarker {{
    out.print(" )");
    indent--;
  }}
  before TargetMarker {{
    out.print(": TargetMarker  (");
    indent++;
  }}
  after TargetMarker {{
    out.print(" )");
    indent--;
  }}
  before PathDirective {{
    out.print(": PathDirective  (");
    indent++;
  }}
  after PathDirective {{
    out.print(" )");
    indent--;
  }}
  before -> PathDirective, source, SourceDirective {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<source> ");
  }}
  before -> PathDirective, constraint, NegativeConstraint {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<constraint> ");
  }}
  before -> PathDirective, segments, PathSegment_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<segments> ");
  }}
  before -> PathDirective, target, TargetDirective {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<target> ");
  }}
  before -> SourceDirective, sources, ClassGlobSpec {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<sources> ");
  }}
  before From {{
    out.print(": From  (");
    indent++;
  }}
  after From {{
    out.print(" )");
    indent--;
  }}
  before PathSegment {{
    out.print(": PathSegment  (");
    indent++;
  }}
  after PathSegment {{
    out.print(" )");
    indent--;
  }}
  before -> PathSegment, node, PositiveConstraint {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<node> ");
  }}
  before -> PathSegment, constraint, NegativeConstraint {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<constraint> ");
  }}
  before -> Constraint, glob, GlobSpec {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<glob> ");
  }}
  before Through {{
    out.print(": Through  (");
    indent++;
  }}
  after Through {{
    out.print(" )");
    indent--;
  }}
  before Via {{
    out.print(": Via  (");
    indent++;
  }}
  after Via {{
    out.print(" )");
    indent--;
  }}
  before Bypassing {{
    out.print(": Bypassing  (");
    indent++;
  }}
  after Bypassing {{
    out.print(" )");
    indent--;
  }}
  before OnlyThrough {{
    out.print(": OnlyThrough  (");
    indent++;
  }}
  after OnlyThrough {{
    out.print(" )");
    indent--;
  }}
  before -> TargetDirective, targets, ClassGlobSpec {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<targets> ");
  }}
  before To {{
    out.print(": To  (");
    indent++;
  }}
  after To {{
    out.print(" )");
    indent--;
  }}
  before ToStop {{
    out.print(": ToStop  (");
    indent++;
  }}
  after ToStop {{
    out.print(" )");
    indent--;
  }}
  before -> StrategyCombination, first, Strategy {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before -> StrategyCombination, rest, Strategy_Commalist {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<rest> ");
  }}
  before Join {{
    out.print(": Join  (");
    indent++;
  }}
  after Join {{
    out.print(" )");
    indent--;
  }}
  before Merge {{
    out.print(": Merge  (");
    indent++;
  }}
  after Merge {{
    out.print(" )");
    indent--;
  }}
  before Intersect {{
    out.print(": Intersect  (");
    indent++;
  }}
  after Intersect {{
    out.print(" )");
    indent--;
  }}
  before StrategyReference {{
    out.print(": StrategyReference  (");
    indent++;
  }}
  after StrategyReference {{
    out.print(" )");
    indent--;
  }}
  before -> StrategyReference, ident, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ident> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_ident() + "\"");
  }}
  before NameMap {{
    out.print(": NameMap  (");
    indent++;
  }}
  after NameMap {{
    out.print(" )");
    indent--;
  }}
  before -> NameMap, bindings, NameBinding_Commalist {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<bindings> ");
  }}
  before NameBinding {{
    out.print(": NameBinding  (");
    indent++;
  }}
  after NameBinding {{
    out.print(" )");
    indent--;
  }}
  before -> NameBinding, sgName, Name {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<sgName> ");
  }}
  before -> NameBinding, cgNames, ClassGlobSpec {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<cgNames> ");
  }}
  before OneGlob {{
    out.print(": OneGlob  (");
    indent++;
  }}
  after OneGlob {{
    out.print(" )");
    indent--;
  }}
  before -> OneGlob, glob, Glob {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<glob> ");
  }}
  before GlobSet {{
    out.print(": GlobSet  (");
    indent++;
  }}
  after GlobSet {{
    out.print(" )");
    indent--;
  }}
  before -> GlobSet, globs, Glob_Commalist {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<globs> ");
  }}
  before ClassGlob {{
    out.print(": ClassGlob  (");
    indent++;
  }}
  after ClassGlob {{
    out.print(" )");
    indent--;
  }}
  before -> ClassGlob, name, ClassNameGlob {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }}
  before PartGlob {{
    out.print(": PartGlob  (");
    indent++;
  }}
  after PartGlob {{
    out.print(" )");
    indent--;
  }}
  before -> PartGlob, source, SourceGlob {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<source> ");
  }}
  before -> PartGlob, name, PartNameGlob {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }}
  before -> PartGlob, target, TargetGlob {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<target> ");
  }}
  before SubclassGlob {{
    out.print(": SubclassGlob  (");
    indent++;
  }}
  after SubclassGlob {{
    out.print(" )");
    indent--;
  }}
  before -> SubclassGlob, source, SourceGlob {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<source> ");
  }}
  before -> SubclassGlob, target, TargetGlob {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<target> ");
  }}
  before SuperclassGlob {{
    out.print(": SuperclassGlob  (");
    indent++;
  }}
  after SuperclassGlob {{
    out.print(" )");
    indent--;
  }}
  before -> SuperclassGlob, source, SourceGlob {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<source> ");
  }}
  before -> SuperclassGlob, target, TargetGlob {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<target> ");
  }}
  before SourceGlob {{
    out.print(": SourceGlob  (");
    indent++;
  }}
  after SourceGlob {{
    out.print(" )");
    indent--;
  }}
  before -> SourceGlob, name, ClassNameGlob {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }}
  before TargetGlob {{
    out.print(": TargetGlob  (");
    indent++;
  }}
  after TargetGlob {{
    out.print(" )");
    indent--;
  }}
  before -> TargetGlob, name, ClassNameGlob {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }}
  before ClassNameExact {{
    out.print(": ClassNameExact  (");
    indent++;
  }}
  after ClassNameExact {{
    out.print(" )");
    indent--;
  }}
  before -> ClassNameExact, classname, ClassName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classname> ");
  }}
  before AnyClass {{
    out.print(": AnyClass  (");
    indent++;
  }}
  after AnyClass {{
    out.print(" )");
    indent--;
  }}
  before PartNameExact {{
    out.print(": PartNameExact  (");
    indent++;
  }}
  after PartNameExact {{
    out.print(" )");
    indent--;
  }}
  before -> PartNameExact, partname, PartName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<partname> ");
  }}
  before AnyPart {{
    out.print(": AnyPart  (");
    indent++;
  }}
  after AnyPart {{
    out.print(" )");
    indent--;
  }}
  before OneClassGlob {{
    out.print(": OneClassGlob  (");
    indent++;
  }}
  after OneClassGlob {{
    out.print(" )");
    indent--;
  }}
  before -> OneClassGlob, classglob, ClassGlob {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classglob> ");
  }}
  before ClassGlobSet {{
    out.print(": ClassGlobSet  (");
    indent++;
  }}
  after ClassGlobSet {{
    out.print(" )");
    indent--;
  }}
  before -> ClassGlobSet, globs, ClassGlob_Commalist {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<globs> ");
  }}
  before ClassName {{
    out.print(": ClassName  (");
    indent++;
  }}
  after ClassName {{
    out.print(" )");
    indent--;
  }}
  before -> ClassName, name, Name {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }}
  before PartName {{
    out.print(": PartName  (");
    indent++;
  }}
  after PartName {{
    out.print(" )");
    indent--;
  }}
  before -> PartName, name, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_name() + "\"");
  }}
  before Name {{
    out.print(": Name  {");
    indent++;
  }}
  after Name {{
    out.print(" }");
    indent--;
  }}
  before -> Name, first, Nonempty_Name {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before NodesDef {{
    out.print(": NodesDef  (");
    indent++;
  }}
  after NodesDef {{
    out.print(" )");
    indent--;
  }}
  before -> NodesDef, name, StrategyName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }}
  before ClassListDef {{
    out.print(": ClassListDef  (");
    indent++;
  }}
  after ClassListDef {{
    out.print(" )");
    indent--;
  }}
  before -> ClassListDef, classlistname_clist, ClassListName_CList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classlistname_clist> ");
  }}
  before RegularExpression {{
    out.print(": RegularExpression  (");
    indent++;
  }}
  after RegularExpression {{
    out.print(" )");
    indent--;
  }}
  before -> RegularExpression, complexexp, ComplexExp {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<complexexp> ");
  }}
  before SimpleExp {{
    out.print(": SimpleExp  (");
    indent++;
  }}
  after SimpleExp {{
    out.print(" )");
    indent--;
  }}
  before -> SimpleExp, nodesetident, NodesetIdent {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<nodesetident> ");
  }}
  before AndExp {{
    out.print(": AndExp  (");
    indent++;
  }}
  after AndExp {{
    out.print(" )");
    indent--;
  }}
  before -> AndExp, args, ExpArguments {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<args> ");
  }}
  before OrExp {{
    out.print(": OrExp  (");
    indent++;
  }}
  after OrExp {{
    out.print(" )");
    indent--;
  }}
  before -> OrExp, args, ExpArguments {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<args> ");
  }}
  before ExpArguments {{
    out.print(": ExpArguments  (");
    indent++;
  }}
  after ExpArguments {{
    out.print(" )");
    indent--;
  }}
  before -> ExpArguments, l, RegExp {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<l> ");
  }}
  before -> ExpArguments, r, RegExp {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<r> ");
  }}
  before NodesetIdent {{
    out.print(": NodesetIdent  (");
    indent++;
  }}
  after NodesetIdent {{
    out.print(" )");
    indent--;
  }}
  before -> NodesetIdent, complement, Complement {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<complement> ");
  }}
  before -> NodesetIdent, ident, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ident> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_ident() + "\"");
  }}
  before Complement {{
    out.print(": Complement  (");
    indent++;
  }}
  after Complement {{
    out.print(" )");
    indent--;
  }}
  before AspectName {{
    out.print(": AspectName  (");
    indent++;
  }}
  after AspectName {{
    out.print(" )");
    indent--;
  }}
  before -> AspectName, ident, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ident> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_ident() + "\"");
  }}
  before TextCD {{
    out.print(": TextCD  (");
    indent++;
  }}
  after TextCD {{
    out.print(" )");
    indent--;
  }}
  before -> TextCD, text, Text {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<text> ");
    out.print(" : Text");
    out.print(" {{" + source.get_text() + "}" + "}" + " ");
  }}
  before StrategyDeclName {{
    out.print(": StrategyDeclName  (");
    indent++;
  }}
  after StrategyDeclName {{
    out.print(" )");
    indent--;
  }}
  before -> StrategyDeclName, ident, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ident> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_ident() + "\"");
  }}
  before NodesetDeclName {{
    out.print(": NodesetDeclName  (");
    indent++;
  }}
  after NodesetDeclName {{
    out.print(" )");
    indent--;
  }}
  before -> NodesetDeclName, ident, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ident> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_ident() + "\"");
  }}
  before StrategyName {{
    out.print(": StrategyName  (");
    indent++;
  }}
  after StrategyName {{
    out.print(" )");
    indent--;
  }}
  before -> StrategyName, ident, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ident> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_ident() + "\"");
  }}
  before ClassListName {{
    out.print(": ClassListName  (");
    indent++;
  }}
  after ClassListName {{
    out.print(" )");
    indent--;
  }}
  before -> ClassListName, ident, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ident> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_ident() + "\"");
  }}
  before Main {{
    out.print(": Main  (");
    indent++;
  }}
  after Main {{
    out.print(" )");
    indent--;
  }}
  before SemanticChecker {{
    out.print(": SemanticChecker  (");
    indent++;
  }}
  after SemanticChecker {{
    out.print(" )");
    indent--;
  }}
  before PrintVisitor {{
    out.print(": PrintVisitor  (");
    indent++;
  }}
  after PrintVisitor {{
    out.print(" )");
    indent--;
  }}
  before -> PrintVisitor, indent, int {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<indent> ");
    out.print(" : int \"" + dest + "\"");
  }}
  before -> PrintVisitor, needSpace, boolean {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<needSpace> ");
    out.print(" : boolean \"" + dest + "\"");
  }}
  before CopyVisitor {{
    out.print(": CopyVisitor  (");
    indent++;
  }}
  after CopyVisitor {{
    out.print(" )");
    indent--;
  }}
  before -> CopyVisitor, copy, Object {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<copy> ");
  }}
  before SubgraphVisitor {{
    out.print(": SubgraphVisitor  (");
    indent++;
  }}
  after SubgraphVisitor {{
    out.print(" )");
    indent--;
  }}
  before -> SubgraphVisitor, is_equal, boolean {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_equal> ");
    out.print(" : boolean \"" + dest + "\"");
  }}
  before EqualVisitor {{
    out.print(": EqualVisitor  (");
    indent++;
  }}
  after EqualVisitor {{
    out.print(" )");
    indent--;
  }}
  before -> EqualVisitor, is_equal, boolean {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_equal> ");
    out.print(" : boolean \"" + dest + "\"");
  }}
  before DisplayVisitor {{
    out.print(": DisplayVisitor  (");
    indent++;
  }}
  after DisplayVisitor {{
    out.print(" )");
    indent--;
  }}
  before -> DisplayVisitor, indent, int {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<indent> ");
    out.print(" : int \"" + dest + "\"");
  }}
  before TraceVisitor {{
    out.print(": TraceVisitor  (");
    indent++;
  }}
  after TraceVisitor {{
    out.print(" )");
    indent--;
  }}
  before -> TraceVisitor, indent, int {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<indent> ");
    out.print(" : int \"" + dest + "\"");
  }}
  before Declaration_List {{
    out.print(": Declaration_List  {");
    indent++;
  }}
  after Declaration_List {{
    out.print(" }");
    indent--;
  }}
  before -> Declaration_List, first, Nonempty_Declaration_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before SGEdge_SList {{
    out.print(": SGEdge_SList  {");
    indent++;
  }}
  after SGEdge_SList {{
    out.print(" }");
    indent--;
  }}
  before -> SGEdge_SList, first, Nonempty_SGEdge_SList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before PathSegment_List {{
    out.print(": PathSegment_List  {");
    indent++;
  }}
  after PathSegment_List {{
    out.print(" }");
    indent--;
  }}
  before -> PathSegment_List, first, Nonempty_PathSegment_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before Strategy_Commalist {{
    out.print(": Strategy_Commalist  {");
    indent++;
  }}
  after Strategy_Commalist {{
    out.print(" }");
    indent--;
  }}
  before -> Strategy_Commalist, first, Nonempty_Strategy_Commalist {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before NameBinding_Commalist {{
    out.print(": NameBinding_Commalist  {");
    indent++;
  }}
  after NameBinding_Commalist {{
    out.print(" }");
    indent--;
  }}
  before -> NameBinding_Commalist, first, Nonempty_NameBinding_Commalist {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before Glob_Commalist {{
    out.print(": Glob_Commalist  {");
    indent++;
  }}
  after Glob_Commalist {{
    out.print(" }");
    indent--;
  }}
  before -> Glob_Commalist, first, Nonempty_Glob_Commalist {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before ClassGlob_Commalist {{
    out.print(": ClassGlob_Commalist  {");
    indent++;
  }}
  after ClassGlob_Commalist {{
    out.print(" }");
    indent--;
  }}
  before -> ClassGlob_Commalist, first, Nonempty_ClassGlob_Commalist {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before ClassListName_CList {{
    out.print(": ClassListName_CList  {");
    indent++;
  }}
  after ClassListName_CList {{
    out.print(" }");
    indent--;
  }}
  before -> ClassListName_CList, first, Nonempty_ClassListName_CList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before Nonempty_Name {{
    out.print(": Nonempty_Name  (");
    indent++;
  }}
  after Nonempty_Name {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_Name, it, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_it() + "\"");
  }}
  before -> Nonempty_Name, next, Nonempty_Name {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_Declaration_List {{
    out.print(": Nonempty_Declaration_List  (");
    indent++;
  }}
  after Nonempty_Declaration_List {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_Declaration_List, it, Declaration {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_Declaration_List, next, Nonempty_Declaration_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_SGEdge_SList {{
    out.print(": Nonempty_SGEdge_SList  (");
    indent++;
  }}
  after Nonempty_SGEdge_SList {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_SGEdge_SList, it, SGEdge {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_SGEdge_SList, next, Nonempty_SGEdge_SList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_PathSegment_List {{
    out.print(": Nonempty_PathSegment_List  (");
    indent++;
  }}
  after Nonempty_PathSegment_List {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_PathSegment_List, it, PathSegment {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_PathSegment_List, next, Nonempty_PathSegment_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_Strategy_Commalist {{
    out.print(": Nonempty_Strategy_Commalist  (");
    indent++;
  }}
  after Nonempty_Strategy_Commalist {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_Strategy_Commalist, it, Strategy {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_Strategy_Commalist, next, Nonempty_Strategy_Commalist {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_NameBinding_Commalist {{
    out.print(": Nonempty_NameBinding_Commalist  (");
    indent++;
  }}
  after Nonempty_NameBinding_Commalist {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_NameBinding_Commalist, it, NameBinding {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_NameBinding_Commalist, next, Nonempty_NameBinding_Commalist {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_Glob_Commalist {{
    out.print(": Nonempty_Glob_Commalist  (");
    indent++;
  }}
  after Nonempty_Glob_Commalist {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_Glob_Commalist, it, Glob {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_Glob_Commalist, next, Nonempty_Glob_Commalist {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_ClassGlob_Commalist {{
    out.print(": Nonempty_ClassGlob_Commalist  (");
    indent++;
  }}
  after Nonempty_ClassGlob_Commalist {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_ClassGlob_Commalist, it, ClassGlob {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_ClassGlob_Commalist, next, Nonempty_ClassGlob_Commalist {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_ClassListName_CList {{
    out.print(": Nonempty_ClassListName_CList  (");
    indent++;
  }}
  after Nonempty_ClassListName_CList {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_ClassListName_CList, it, ClassListName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_ClassListName_CList, next, Nonempty_ClassListName_CList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
}