package EDU.neu.ccs.demeter.tools.apstudio.graphedit;
import java.awt.*;
import java.io.*;
import java.util.*;
import EDU.neu.ccs.demeter.*;
import EDU.neu.ccs.demeter.common.tg.*;


import EDU.neu.ccs.demeter.*;
class DisplayVisitor extends UniversalVisitor {
  protected int indent;
  public int get_indent() { return indent; }
  public void set_indent(int new_indent)
    { indent = new_indent; }
  DisplayVisitor() { super(); }
  public DisplayVisitor(int indent) {
    super();
    set_indent(indent);
  }

    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)); }
    public void finish() { out.flush(); }
  public void before(UGraph host) {
    out.print(": UGraph  (");
    indent++;
  }
  public void after(UGraph host) {
    out.print(" )");
    indent--;
  }
  public void before_pkg(UGraph source, Package dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<pkg> ");
  }
  public void before_imports(UGraph source, Import_SList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<imports> ");
  }
  public void before_preamble(UGraph source, JavaCode dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<preamble> ");
  }
  public void before_vertices(UGraph source, UVertex_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<vertices> ");
  }
  public void before_idToVertexTable(UGraph source, Hashtable dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<idToVertexTable> ");
  }
  public void before_edges(UGraph source, UEdge_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<edges> ");
  }
  public void before_idToEdgeTable(UGraph source, Hashtable dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<idToEdgeTable> ");
  }
  public void before_nameToIdVertexTable(UGraph source, Hashtable dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<nameToIdVertexTable> ");
  }
  public void before_firstuid(UGraph source, UID dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<firstuid> ");
  }
  public void before(UVertex_List host) {
    out.print(": UVertex_List  {");
    indent++;
  }
  public void after(UVertex_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(UVertex_List source, Nonempty_UVertex_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before_vid(UVertex source, UID dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<vid> ");
  }
  public void before_vertexname(UVertex source, UVertexName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<vertexname> ");
  }
  public void before_position(UVertex source, Coordinates dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<position> ");
  }
  public void before_incoming(UVertex source, IEdge_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<incoming> ");
  }
  public void before_outgoing(UVertex source, OEdge_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<outgoing> ");
  }
  public void before_inArcIdList(UVertex source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<inArcIdList> ");
  }
  public void before_outArcIdList(UVertex source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<outArcIdList> ");
  }
  public void before_vdeco(UVertex source, Decorator dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<vdeco> ");
  }
  public void before_tgv(UVertex source, TGVertex dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<tgv> ");
  }
  public void before_persp(UVertex source, Perspective dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<persp> ");
  }
  public void before_parse(UConstOrAltVertex source, ParseOrNot dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<parse> ");
  }
  public void before_outEdgeNameList(UConstOrAltVertex source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<outEdgeNameList> ");
  }
  public void before_keywords(UConstOrAltVertex source, ScopeIdentifier_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<keywords> ");
  }
  public void before(YaParse host) {
    out.print(": YaParse  (");
    indent++;
  }
  public void after(YaParse host) {
    out.print(" )");
    indent--;
  }
  public void before(NopParse host) {
    out.print(": NopParse  (");
    indent++;
  }
  public void after(NopParse host) {
    out.print(" )");
    indent--;
  }
  public void before(IEdge_List host) {
    out.print(": IEdge_List  {");
    indent++;
  }
  public void after(IEdge_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(IEdge_List source, Nonempty_IEdge_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(OEdge_List host) {
    out.print(": OEdge_List  {");
    indent++;
  }
  public void after(OEdge_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(OEdge_List source, Nonempty_OEdge_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(UConstVertex host) {
    out.print(": UConstVertex  (");
    indent++;
  }
  public void after(UConstVertex host) {
    out.print(" )");
    indent--;
  }
  public void before_beFore(UConstVertex source, UBefore dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<beFore> ");
  }
  public void before_afTer(UConstVertex source, UAfter dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<afTer> ");
  }
  public void before(UBefore host) {
    out.print(": UBefore  (");
    indent++;
  }
  public void after(UBefore host) {
    out.print(" )");
    indent--;
  }
  public void before_syntax(UBefore source, String dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<syntax> ");
    out.print(" : String");
    out.print(" \"" + source.get_syntax() + "\" ");
  }
  public void before(UAfter host) {
    out.print(": UAfter  (");
    indent++;
  }
  public void after(UAfter host) {
    out.print(" )");
    indent--;
  }
  public void before_syntax(UAfter source, String dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<syntax> ");
    out.print(" : String");
    out.print(" \"" + source.get_syntax() + "\" ");
  }
  public void before(UAltVertex host) {
    out.print(": UAltVertex  (");
    indent++;
  }
  public void after(UAltVertex host) {
    out.print(" )");
    indent--;
  }
  public void before(UInterface host) {
    out.print(": UInterface  (");
    indent++;
  }
  public void after(UInterface host) {
    out.print(" )");
    indent--;
  }
  public void before_keywords(UInterface source, InterfaceModifier_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<keywords> ");
  }
  public void before_javacode(UInterface source, JavaCode dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<javacode> ");
  }
  public void before(InterfaceModifier_List host) {
    out.print(": InterfaceModifier_List  {");
    indent++;
  }
  public void after(InterfaceModifier_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(InterfaceModifier_List source, Nonempty_InterfaceModifier_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(PublicModifier host) {
    out.print(": PublicModifier  (");
    indent++;
  }
  public void after(PublicModifier host) {
    out.print(" )");
    indent--;
  }
  public void before(UTermConstVertex host) {
    out.print(": UTermConstVertex  (");
    indent++;
  }
  public void after(UTermConstVertex host) {
    out.print(" )");
    indent--;
  }
  public void before(UTermInterface host) {
    out.print(": UTermInterface  (");
    indent++;
  }
  public void after(UTermInterface host) {
    out.print(" )");
    indent--;
  }
  public void before(ScopeIdentifier_List host) {
    out.print(": ScopeIdentifier_List  {");
    indent++;
  }
  public void after(ScopeIdentifier_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(ScopeIdentifier_List source, Nonempty_ScopeIdentifier_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(PublicIdentifier host) {
    out.print(": PublicIdentifier  (");
    indent++;
  }
  public void after(PublicIdentifier host) {
    out.print(" )");
    indent--;
  }
  public void before(FinalIdentifier host) {
    out.print(": FinalIdentifier  (");
    indent++;
  }
  public void after(FinalIdentifier host) {
    out.print(" )");
    indent--;
  }
  public void before(UEdge_List host) {
    out.print(": UEdge_List  {");
    indent++;
  }
  public void after(UEdge_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(UEdge_List source, Nonempty_UEdge_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before_eid(UEdge source, UID dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<eid> ");
  }
  public void before_fromVertex(UEdge source, UID dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<fromVertex> ");
  }
  public void before_toVertex(UEdge source, UID dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<toVertex> ");
  }
  public void before_edeco(UEdge source, Decorator dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<edeco> ");
  }
  public void before_bendpoint(UEdge source, BendPoint dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<bendpoint> ");
  }
  public void before_persp(UEdge source, ArcPerspective dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<persp> ");
  }
  public void before(BendPoint host) {
    out.print(": BendPoint  (");
    indent++;
  }
  public void after(BendPoint host) {
    out.print(" )");
    indent--;
  }
  public void before_position(BendPoint source, Coordinates dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<position> ");
  }
  public void before(UAltEdge host) {
    out.print(": UAltEdge  (");
    indent++;
  }
  public void after(UAltEdge host) {
    out.print(" )");
    indent--;
  }
  public void before_tge(UAltEdge source, TGAEdge dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<tge> ");
  }
  public void before(UExtendEdge host) {
    out.print(": UExtendEdge  (");
    indent++;
  }
  public void after(UExtendEdge host) {
    out.print(" )");
    indent--;
  }
  public void before_tge(UExtendEdge source, TGAEdge dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<tge> ");
  }
  public void before(UImplEdge host) {
    out.print(": UImplEdge  (");
    indent++;
  }
  public void after(UImplEdge host) {
    out.print(" )");
    indent--;
  }
  public void before_tge(UImplEdge source, TGIEdge dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<tge> ");
  }
  public void before(UConstEdge host) {
    out.print(": UConstEdge  (");
    indent++;
  }
  public void after(UConstEdge host) {
    out.print(" )");
    indent--;
  }
  public void before_edgename(UConstEdge source, UEdgeName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<edgename> ");
  }
  public void before_card(UConstEdge source, Cardinality dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<card> ");
  }
  public void before_beFore(UConstEdge source, UBefore dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<beFore> ");
  }
  public void before_afTer(UConstEdge source, UAfter dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<afTer> ");
  }
  public void before_keywords(UConstEdge source, PartModifier_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<keywords> ");
  }
  public void before_tge(UConstEdge source, TGCEdge dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<tge> ");
  }
  public void before(PartModifier_List host) {
    out.print(": PartModifier_List  {");
    indent++;
  }
  public void after(PartModifier_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(PartModifier_List source, Nonempty_PartModifier_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(FinalMod host) {
    out.print(": FinalMod  (");
    indent++;
  }
  public void after(FinalMod host) {
    out.print(" )");
    indent--;
  }
  public void before(StaticMod host) {
    out.print(": StaticMod  (");
    indent++;
  }
  public void after(StaticMod host) {
    out.print(" )");
    indent--;
  }
  public void before(ReadOnlyMod host) {
    out.print(": ReadOnlyMod  (");
    indent++;
  }
  public void after(ReadOnlyMod host) {
    out.print(" )");
    indent--;
  }
  public void before(PrivateMod host) {
    out.print(": PrivateMod  (");
    indent++;
  }
  public void after(PrivateMod host) {
    out.print(" )");
    indent--;
  }
  public void before(Cardinality host) {
    out.print(": Cardinality  (");
    indent++;
  }
  public void after(Cardinality host) {
    out.print(" )");
    indent--;
  }
  public void before_lower(Cardinality source, Lower dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<lower> ");
  }
  public void before_upper(Cardinality source, Upper dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<upper> ");
  }
  public void before(Lower host) {
    out.print(": Lower  (");
    indent++;
  }
  public void after(Lower host) {
    out.print(" )");
    indent--;
  }
  public void before_l(Lower source, Integer dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<l> ");
    out.print(" : Integer");
    out.print(" \"" + source.get_l() + "\"");
  }
  public void before(Upper host) {
    out.print(": Upper  (");
    indent++;
  }
  public void after(Upper host) {
    out.print(" )");
    indent--;
  }
  public void before_u(Upper source, String dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<u> ");
    out.print(" : String");
    out.print(" \"" + source.get_u() + "\" ");
  }
  public void before(UID host) {
    out.print(": UID  (");
    indent++;
  }
  public void after(UID host) {
    out.print(" )");
    indent--;
  }
  public void before_id(UID source, Integer dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<id> ");
    out.print(" : Integer");
    out.print(" \"" + source.get_id() + "\"");
  }
  public void before(UEdgeName host) {
    out.print(": UEdgeName  (");
    indent++;
  }
  public void after(UEdgeName host) {
    out.print(" )");
    indent--;
  }
  public void before_name(UEdgeName source, Ident dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_name() + "\"");
  }
  public void before(UVertexName host) {
    out.print(": UVertexName  (");
    indent++;
  }
  public void after(UVertexName host) {
    out.print(" )");
    indent--;
  }
  public void before_name(UVertexName source, Ident dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_name() + "\"");
  }
  public void before(Coordinates host) {
    out.print(": Coordinates  (");
    indent++;
  }
  public void after(Coordinates host) {
    out.print(" )");
    indent--;
  }
  public void before_x(Coordinates source, X dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<x> ");
  }
  public void before_y(Coordinates source, Y dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<y> ");
  }
  public void before(X host) {
    out.print(": X  (");
    indent++;
  }
  public void after(X host) {
    out.print(" )");
    indent--;
  }
  public void before_x(X source, Integer dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<x> ");
    out.print(" : Integer");
    out.print(" \"" + source.get_x() + "\"");
  }
  public void before(Y host) {
    out.print(": Y  (");
    indent++;
  }
  public void after(Y host) {
    out.print(" )");
    indent--;
  }
  public void before_y(Y source, Integer dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<y> ");
    out.print(" : Integer");
    out.print(" \"" + source.get_y() + "\"");
  }
  public void before(Decorator host) {
    out.print(": Decorator  (");
    indent++;
  }
  public void after(Decorator host) {
    out.print(" )");
    indent--;
  }
  public void before_travtag(Decorator source, Integer dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<travtag> ");
    out.print(" : Integer");
    out.print(" \"" + source.get_travtag() + "\"");
  }
  public void before_travtaglist(Decorator source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<travtaglist> ");
  }
  public void before(UniqueIDGenerator host) {
    out.print(": UniqueIDGenerator  (");
    indent++;
  }
  public void after(UniqueIDGenerator host) {
    out.print(" )");
    indent--;
  }
  public void before(Program host) {
    out.print(": Program  (");
    indent++;
  }
  public void after(Program host) {
    out.print(" )");
    indent--;
  }
  public void before_globalimports(Program source, GlobalImports dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<globalimports> ");
  }
  public void before_cg(Program source, ClassGraph dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<cg> ");
  }
  public void before(GlobalImports host) {
    out.print(": GlobalImports  (");
    indent++;
  }
  public void after(GlobalImports host) {
    out.print(" )");
    indent--;
  }
  public void before_imports(GlobalImports source, Import_SList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<imports> ");
  }
  public void before(Import host) {
    out.print(": Import  (");
    indent++;
  }
  public void after(Import host) {
    out.print(" )");
    indent--;
  }
  public void before_packagename(Import source, PackageName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<packagename> ");
  }
  public void before_importallclasses(Import source, ImportAllClasses dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<importallclasses> ");
  }
  public void before(ImportAllClasses host) {
    out.print(": ImportAllClasses  (");
    indent++;
  }
  public void after(ImportAllClasses host) {
    out.print(" )");
    indent--;
  }
  public void before(ClassGraph host) {
    out.print(": ClassGraph  (");
    indent++;
  }
  public void after(ClassGraph host) {
    out.print(" )");
    indent--;
  }
  public void before_defdict(ClassGraph source, Hashtable dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<defdict> ");
  }
  public void before_classes(ClassGraph source, ClassGraphEntry_DList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classes> ");
  }
  public void before_tg(ClassGraph source, TraversalGraph dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<tg> ");
  }
  public void before(ParseDirective host) {
    out.print(": ParseDirective  (");
    indent++;
  }
  public void after(ParseDirective host) {
    out.print(" )");
    indent--;
  }
  public void before_parsekeyword(ParseDirective source, ParseKeyword dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<parsekeyword> ");
  }
  public void before(VisitorDirective host) {
    out.print(": VisitorDirective  (");
    indent++;
  }
  public void after(VisitorDirective host) {
    out.print(" )");
    indent--;
  }
  public void before_visitorkeyword(VisitorDirective source, VisitorKeyword dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<visitorkeyword> ");
  }
  public void before(PackageDirective host) {
    out.print(": PackageDirective  (");
    indent++;
  }
  public void after(PackageDirective host) {
    out.print(" )");
    indent--;
  }
  public void before_pkg(PackageDirective source, Package dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<pkg> ");
  }
  public void before_localimports(PackageDirective source, LocalImports dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<localimports> ");
  }
  public void before(Package host) {
    out.print(": Package  (");
    indent++;
  }
  public void after(Package host) {
    out.print(" )");
    indent--;
  }
  public void before_packagename(Package source, PackageName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<packagename> ");
  }
  public void before(LocalImports host) {
    out.print(": LocalImports  (");
    indent++;
  }
  public void after(LocalImports host) {
    out.print(" )");
    indent--;
  }
  public void before_imports(LocalImports source, Import_SList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<imports> ");
  }
  public void before(ClassDef host) {
    out.print(": ClassDef  (");
    indent++;
  }
  public void after(ClassDef host) {
    out.print(" )");
    indent--;
  }
  public void before_keywords(ClassDef source, ClassKeyword_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<keywords> ");
  }
  public void before_paramclassname(ClassDef source, ParamClassName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<paramclassname> ");
  }
  public void before_parsedirective(ClassDef source, ParseDirective dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<parsedirective> ");
  }
  public void before_classparts(ClassDef source, ClassParts dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classparts> ");
  }
  public void before_classmethods(ClassDef source, ClassMethods dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classmethods> ");
  }
  public void before_eoftoken(ClassDef source, EOFtoken dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<eoftoken> ");
  }
  public void before(ParamClassName host) {
    out.print(": ParamClassName  (");
    indent++;
  }
  public void after(ParamClassName host) {
    out.print(" )");
    indent--;
  }
  public void before_classname(ParamClassName source, ClassName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classname> ");
  }
  public void before_parameters(ParamClassName source, ClassName_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<parameters> ");
  }
  public void before_parts(ConstOrAltClass source, PartOrSyntax_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<parts> ");
  }
  public void before_parents(ConstOrAltClass source, ClassParents dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<parents> ");
  }
  public void before(Part host) {
    out.print(": Part  (");
    indent++;
  }
  public void after(Part host) {
    out.print(" )");
    indent--;
  }
  public void before_partname(Part source, PartName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<partname> ");
  }
  public void before_keywords(Part source, PartKeyword_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<keywords> ");
  }
  public void before_classspec(Part source, ClassSpec dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classspec> ");
  }
  public void before_partinit(Part source, PartInit dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<partinit> ");
  }
  public void before(PartInit host) {
    out.print(": PartInit  (");
    indent++;
  }
  public void after(PartInit host) {
    out.print(" )");
    indent--;
  }
  public void before_partinitkeyword(PartInit source, PartInitKeyword dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<partinitkeyword> ");
  }
  public void before_javacode(PartInit source, JavaCode dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<javacode> ");
  }
  public void before(OptionalPart host) {
    out.print(": OptionalPart  (");
    indent++;
  }
  public void after(OptionalPart host) {
    out.print(" )");
    indent--;
  }
  public void before_locallookahead(OptionalPart source, LocalLookahead dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<locallookahead> ");
  }
  public void before_part(OptionalPart source, Part_Sandwich dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<part> ");
  }
  public void before(ClassParents host) {
    out.print(": ClassParents  (");
    indent++;
  }
  public void after(ClassParents host) {
    out.print(" )");
    indent--;
  }
  public void before_superclasses(ClassParents source, Superclasses dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<superclasses> ");
  }
  public void before_interfaces(ClassParents source, Interfaces dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<interfaces> ");
  }
  public void before(Superclasses host) {
    out.print(": Superclasses  (");
    indent++;
  }
  public void after(Superclasses host) {
    out.print(" )");
    indent--;
  }
  public void before_extendskeyword(Superclasses source, ExtendsKeyword dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<extendskeyword> ");
  }
  public void before_superclasses(Superclasses source, Superclass_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<superclasses> ");
  }
  public void before(Superclass host) {
    out.print(": Superclass  (");
    indent++;
  }
  public void after(Superclass host) {
    out.print(" )");
    indent--;
  }
  public void before_classspec(Superclass source, ClassSpec dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classspec> ");
  }
  public void before(Interfaces host) {
    out.print(": Interfaces  (");
    indent++;
  }
  public void after(Interfaces host) {
    out.print(" )");
    indent--;
  }
  public void before_implementskeyword(Interfaces source, ImplementsKeyword dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<implementskeyword> ");
  }
  public void before_interfaces(Interfaces source, Interface_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<interfaces> ");
  }
  public void before(Interface host) {
    out.print(": Interface  (");
    indent++;
  }
  public void after(Interface host) {
    out.print(" )");
    indent--;
  }
  public void before_classspec(Interface source, ClassSpec dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classspec> ");
  }
  public void before(ConstructionClass host) {
    out.print(": ConstructionClass  (");
    indent++;
  }
  public void after(ConstructionClass host) {
    out.print(" )");
    indent--;
  }
  public void before(AlternationClass host) {
    out.print(": AlternationClass  (");
    indent++;
  }
  public void after(AlternationClass host) {
    out.print(" )");
    indent--;
  }
  public void before_subclasses(AlternationClass source, Subclass_Barlist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<subclasses> ");
  }
  public void before_commonkeyword(AlternationClass source, CommonKeyword dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<commonkeyword> ");
  }
  public void before(Subclass host) {
    out.print(": Subclass  (");
    indent++;
  }
  public void after(Subclass host) {
    out.print(" )");
    indent--;
  }
  public void before_locallookahead(Subclass source, LocalLookahead dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<locallookahead> ");
  }
  public void before_classspec(Subclass source, ClassSpec dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classspec> ");
  }
  public void before(LocalLookahead host) {
    out.print(": LocalLookahead  (");
    indent++;
  }
  public void after(LocalLookahead host) {
    out.print(" )");
    indent--;
  }
  public void before_lookaheadkeyword(LocalLookahead source, LookaheadKeyword dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<lookaheadkeyword> ");
  }
  public void before_javacode(LocalLookahead source, JavaCode dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<javacode> ");
  }
  public void before(RepetitionClass host) {
    out.print(": RepetitionClass  (");
    indent++;
  }
  public void after(RepetitionClass host) {
    out.print(" )");
    indent--;
  }
  public void before_sandwiched(RepetitionClass source, RepeatedPart_Sandwich dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<sandwiched> ");
  }
  public void before(RepeatedPart host) {
    out.print(": RepeatedPart  (");
    indent++;
  }
  public void after(RepeatedPart host) {
    out.print(" )");
    indent--;
  }
  public void before_nonempty(RepeatedPart source, ClassSpec dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<nonempty> ");
  }
  public void before_locallookahead(RepeatedPart source, LocalLookahead dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<locallookahead> ");
  }
  public void before_repeated(RepeatedPart source, ClassSpec_Sandwich dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<repeated> ");
  }
  public void before(ClassSpec host) {
    out.print(": ClassSpec  (");
    indent++;
  }
  public void after(ClassSpec host) {
    out.print(" )");
    indent--;
  }
  public void before_classname(ClassSpec source, ClassName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classname> ");
  }
  public void before_actual_parameters(ClassSpec source, ClassSpec_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<actual_parameters> ");
  }
  public void before(PlainSyntax host) {
    out.print(": PlainSyntax  (");
    indent++;
  }
  public void after(PlainSyntax host) {
    out.print(" )");
    indent--;
  }
  public void before_string(PlainSyntax source, String dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<string> ");
    out.print(" : String");
    out.print(" \"" + source.get_string() + "\" ");
  }
  public void before(PrintIndent host) {
    out.print(": PrintIndent  (");
    indent++;
  }
  public void after(PrintIndent host) {
    out.print(" )");
    indent--;
  }
  public void before(PrintUnindent host) {
    out.print(": PrintUnindent  (");
    indent++;
  }
  public void after(PrintUnindent host) {
    out.print(" )");
    indent--;
  }
  public void before(PrintSkip host) {
    out.print(": PrintSkip  (");
    indent++;
  }
  public void after(PrintSkip host) {
    out.print(" )");
    indent--;
  }
  public void before(PrintSpace host) {
    out.print(": PrintSpace  (");
    indent++;
  }
  public void after(PrintSpace host) {
    out.print(" )");
    indent--;
  }
  public void before(EOFtoken host) {
    out.print(": EOFtoken  (");
    indent++;
  }
  public void after(EOFtoken host) {
    out.print(" )");
    indent--;
  }
  public void before(ProgramBehavior host) {
    out.print(": ProgramBehavior  (");
    indent++;
  }
  public void after(ProgramBehavior host) {
    out.print(" )");
    indent--;
  }
  public void before_behavior(ProgramBehavior source, Behavior_DList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<behavior> ");
  }
  public void before(StrategyDefinition host) {
    out.print(": StrategyDefinition  (");
    indent++;
  }
  public void after(StrategyDefinition host) {
    out.print(" )");
    indent--;
  }
  public void before_strategyname(StrategyDefinition source, StrategyName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<strategyname> ");
  }
  public void before_exp(StrategyDefinition source, StrategyExpression dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<exp> ");
  }
  public void before(StrategyGraph host) {
    out.print(": StrategyGraph  (");
    indent++;
  }
  public void after(StrategyGraph host) {
    out.print(" )");
    indent--;
  }
  public void before_edgeVec(StrategyGraph source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<edgeVec> ");
  }
  public void before_edges(StrategyGraph source, SGEdge_SList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<edges> ");
  }
  public void before_sources(StrategyGraph source, ClassGlobSpec dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<sources> ");
  }
  public void before_sourceEdges(StrategyGraph source, Integer_NList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<sourceEdges> ");
  }
  public void before_targets(StrategyGraph source, ClassGlobSpec dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<targets> ");
  }
  public void before(SGEdge host) {
    out.print(": SGEdge  (");
    indent++;
  }
  public void after(SGEdge host) {
    out.print(" )");
    indent--;
  }
  public void before_source(SGEdge source, ClassGlobSpec dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<source> ");
  }
  public void before_dest(SGEdge source, ClassGlobSpec dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<dest> ");
  }
  public void before_constraint(SGEdge source, NegativeConstraint dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<constraint> ");
  }
  public void before(PathDirective host) {
    out.print(": PathDirective  (");
    indent++;
  }
  public void after(PathDirective host) {
    out.print(" )");
    indent--;
  }
  public void before_constraint(PathDirective source, NegativeConstraint dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<constraint> ");
  }
  public void before_segments(PathDirective source, PathSegment_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<segments> ");
  }
  public void before_targetdirective(PathDirective source, TargetDirective dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<targetdirective> ");
  }
  public void before(PathSegment host) {
    out.print(": PathSegment  (");
    indent++;
  }
  public void after(PathSegment host) {
    out.print(" )");
    indent--;
  }
  public void before_node(PathSegment source, PositiveConstraint dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<node> ");
  }
  public void before_constraint(PathSegment source, NegativeConstraint dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<constraint> ");
  }
  public void before_glob(Constraint source, GlobSpec dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<glob> ");
  }
  public void before(Through host) {
    out.print(": Through  (");
    indent++;
  }
  public void after(Through host) {
    out.print(" )");
    indent--;
  }
  public void before(Via host) {
    out.print(": Via  (");
    indent++;
  }
  public void after(Via host) {
    out.print(" )");
    indent--;
  }
  public void before(Bypassing host) {
    out.print(": Bypassing  (");
    indent++;
  }
  public void after(Bypassing host) {
    out.print(" )");
    indent--;
  }
  public void before(OnlyThrough host) {
    out.print(": OnlyThrough  (");
    indent++;
  }
  public void after(OnlyThrough host) {
    out.print(" )");
    indent--;
  }
  public void before_targets(TargetDirective source, ClassGlobSpec dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<targets> ");
  }
  public void before(To host) {
    out.print(": To  (");
    indent++;
  }
  public void after(To host) {
    out.print(" )");
    indent--;
  }
  public void before(ToStop host) {
    out.print(": ToStop  (");
    indent++;
  }
  public void after(ToStop host) {
    out.print(" )");
    indent--;
  }
  public void before(StrategyVariable host) {
    out.print(": StrategyVariable  (");
    indent++;
  }
  public void after(StrategyVariable host) {
    out.print(" )");
    indent--;
  }
  public void before_strategyname(StrategyVariable source, StrategyName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<strategyname> ");
  }
  public void before_args(CompoundStrategy source, StrategyExpression_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<args> ");
  }
  public void before(Join host) {
    out.print(": Join  (");
    indent++;
  }
  public void after(Join host) {
    out.print(" )");
    indent--;
  }
  public void before(Merge host) {
    out.print(": Merge  (");
    indent++;
  }
  public void after(Merge host) {
    out.print(" )");
    indent--;
  }
  public void before(Intersect host) {
    out.print(": Intersect  (");
    indent++;
  }
  public void after(Intersect host) {
    out.print(" )");
    indent--;
  }
  public void before(OneGlob host) {
    out.print(": OneGlob  (");
    indent++;
  }
  public void after(OneGlob host) {
    out.print(" )");
    indent--;
  }
  public void before_glob(OneGlob source, Glob dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<glob> ");
  }
  public void before(GlobSet host) {
    out.print(": GlobSet  (");
    indent++;
  }
  public void after(GlobSet host) {
    out.print(" )");
    indent--;
  }
  public void before_globs(GlobSet source, Glob_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<globs> ");
  }
  public void before(ClassGlob host) {
    out.print(": ClassGlob  (");
    indent++;
  }
  public void after(ClassGlob host) {
    out.print(" )");
    indent--;
  }
  public void before_name(ClassGlob source, ClassNameGlob dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }
  public void before(PartGlob host) {
    out.print(": PartGlob  (");
    indent++;
  }
  public void after(PartGlob host) {
    out.print(" )");
    indent--;
  }
  public void before_source(PartGlob source, SourceGlob dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<source> ");
  }
  public void before_name(PartGlob source, PartNameGlob dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }
  public void before_dest(PartGlob source, DestGlob dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<dest> ");
  }
  public void before(SubclassGlob host) {
    out.print(": SubclassGlob  (");
    indent++;
  }
  public void after(SubclassGlob host) {
    out.print(" )");
    indent--;
  }
  public void before_source(SubclassGlob source, SourceGlob dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<source> ");
  }
  public void before_dest(SubclassGlob source, DestGlob dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<dest> ");
  }
  public void before(SuperclassGlob host) {
    out.print(": SuperclassGlob  (");
    indent++;
  }
  public void after(SuperclassGlob host) {
    out.print(" )");
    indent--;
  }
  public void before_source(SuperclassGlob source, SourceGlob dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<source> ");
  }
  public void before_dest(SuperclassGlob source, DestGlob dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<dest> ");
  }
  public void before(SourceGlob host) {
    out.print(": SourceGlob  (");
    indent++;
  }
  public void after(SourceGlob host) {
    out.print(" )");
    indent--;
  }
  public void before_name(SourceGlob source, ClassNameGlob dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }
  public void before(DestGlob host) {
    out.print(": DestGlob  (");
    indent++;
  }
  public void after(DestGlob host) {
    out.print(" )");
    indent--;
  }
  public void before_name(DestGlob source, ClassNameGlob dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }
  public void before(ClassNameExact host) {
    out.print(": ClassNameExact  (");
    indent++;
  }
  public void after(ClassNameExact host) {
    out.print(" )");
    indent--;
  }
  public void before_classname(ClassNameExact source, ClassName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classname> ");
  }
  public void before(AnyClass host) {
    out.print(": AnyClass  (");
    indent++;
  }
  public void after(AnyClass host) {
    out.print(" )");
    indent--;
  }
  public void before(PartNameExact host) {
    out.print(": PartNameExact  (");
    indent++;
  }
  public void after(PartNameExact host) {
    out.print(" )");
    indent--;
  }
  public void before_partname(PartNameExact source, PartName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<partname> ");
  }
  public void before(AnyPart host) {
    out.print(": AnyPart  (");
    indent++;
  }
  public void after(AnyPart host) {
    out.print(" )");
    indent--;
  }
  public void before(OneClassGlob host) {
    out.print(": OneClassGlob  (");
    indent++;
  }
  public void after(OneClassGlob host) {
    out.print(" )");
    indent--;
  }
  public void before_classglob(OneClassGlob source, ClassGlob dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classglob> ");
  }
  public void before(ClassGlobSet host) {
    out.print(": ClassGlobSet  (");
    indent++;
  }
  public void after(ClassGlobSet host) {
    out.print(" )");
    indent--;
  }
  public void before_globs(ClassGlobSet source, ClassGlob_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<globs> ");
  }
  public void before(ClassBehavior host) {
    out.print(": ClassBehavior  (");
    indent++;
  }
  public void after(ClassBehavior host) {
    out.print(" )");
    indent--;
  }
  public void before_classes(ClassBehavior source, ClassGlobSpec dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classes> ");
  }
  public void before_methods(ClassBehavior source, ClassMethods dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<methods> ");
  }
  public void before(ClassMethods host) {
    out.print(": ClassMethods  (");
    indent++;
  }
  public void after(ClassMethods host) {
    out.print(" )");
    indent--;
  }
  public void before_methods(ClassMethods source, Method_SList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<methods> ");
  }
  public void before_wrapperdict(ClassMethods source, Hashtable dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<wrapperdict> ");
  }
  public void before(HostSet host) {
    out.print(": HostSet  (");
    indent++;
  }
  public void after(HostSet host) {
    out.print(" )");
    indent--;
  }
  public void before_exactHosts(HostSet source, Hashtable dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<exactHosts> ");
  }
  public void before_partnames(HostSet source, Hashtable dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<partnames> ");
  }
  public void before_globs(HostSet source, GlobSet dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<globs> ");
  }
  public void before(TraversalDef host) {
    out.print(": TraversalDef  (");
    indent++;
  }
  public void after(TraversalDef host) {
    out.print(" )");
    indent--;
  }
  public void before_name(TraversalDef source, TraversalName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }
  public void before_parms(TraversalDef source, TraversalParms dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<parms> ");
  }
  public void before_strat(TraversalDef source, StrategyExpression dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<strat> ");
  }
  public void before(TraversalParms host) {
    out.print(": TraversalParms  (");
    indent++;
  }
  public void after(TraversalParms host) {
    out.print(" )");
    indent--;
  }
  public void before_visitors(TraversalParms source, Visitor_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<visitors> ");
  }
  public void before(Visitor host) {
    out.print(": Visitor  (");
    indent++;
  }
  public void after(Visitor host) {
    out.print(" )");
    indent--;
  }
  public void before_classname(Visitor source, ClassName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classname> ");
  }
  public void before_visitorname(Visitor source, VisitorName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<visitorname> ");
  }
  public void before(MethodDef host) {
    out.print(": MethodDef  (");
    indent++;
  }
  public void after(MethodDef host) {
    out.print(" )");
    indent--;
  }
  public void before_methodsignature(MethodDef source, MethodSignature dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<methodsignature> ");
  }
  public void before_methodbody(MethodDef source, MethodBody dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<methodbody> ");
  }
  public void before(MethodSignature host) {
    out.print(": MethodSignature  (");
    indent++;
  }
  public void after(MethodSignature host) {
    out.print(" )");
    indent--;
  }
  public void before_keywords(MethodSignature source, MethodKeyword_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<keywords> ");
  }
  public void before_returnType(MethodSignature source, JavaType dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<returnType> ");
  }
  public void before_name(MethodSignature source, MethodName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }
  public void before_parms(MethodSignature source, MethodParm_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<parms> ");
  }
  public void before_throwsclause(MethodSignature source, Throws dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<throwsclause> ");
  }
  public void before(PublicMethod host) {
    out.print(": PublicMethod  (");
    indent++;
  }
  public void after(PublicMethod host) {
    out.print(" )");
    indent--;
  }
  public void before(ProtectedMethod host) {
    out.print(": ProtectedMethod  (");
    indent++;
  }
  public void after(ProtectedMethod host) {
    out.print(" )");
    indent--;
  }
  public void before(PrivateMethod host) {
    out.print(": PrivateMethod  (");
    indent++;
  }
  public void after(PrivateMethod host) {
    out.print(" )");
    indent--;
  }
  public void before(StaticMethod host) {
    out.print(": StaticMethod  (");
    indent++;
  }
  public void after(StaticMethod host) {
    out.print(" )");
    indent--;
  }
  public void before(FinalMethod host) {
    out.print(": FinalMethod  (");
    indent++;
  }
  public void after(FinalMethod host) {
    out.print(" )");
    indent--;
  }
  public void before(AbstractMethod host) {
    out.print(": AbstractMethod  (");
    indent++;
  }
  public void after(AbstractMethod host) {
    out.print(" )");
    indent--;
  }
  public void before(MethodParm host) {
    out.print(": MethodParm  (");
    indent++;
  }
  public void after(MethodParm host) {
    out.print(" )");
    indent--;
  }
  public void before_type(MethodParm source, JavaType dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<type> ");
  }
  public void before_array1(MethodParm source, ArraySpec_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<array1> ");
  }
  public void before_name(MethodParm source, ParmName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }
  public void before_array2(MethodParm source, ArraySpec_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<array2> ");
  }
  public void before(ArraySpec host) {
    out.print(": ArraySpec  (");
    indent++;
  }
  public void after(ArraySpec host) {
    out.print(" )");
    indent--;
  }
  public void before(Throws host) {
    out.print(": Throws  (");
    indent++;
  }
  public void after(Throws host) {
    out.print(" )");
    indent--;
  }
  public void before_exceptions(Throws source, ClassName_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<exceptions> ");
  }
  public void before(VerbatimMethodBody host) {
    out.print(": VerbatimMethodBody  (");
    indent++;
  }
  public void after(VerbatimMethodBody host) {
    out.print(" )");
    indent--;
  }
  public void before_javacode(VerbatimMethodBody source, JavaCode dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<javacode> ");
  }
  public void before(AdaptiveMethodBody host) {
    out.print(": AdaptiveMethodBody  (");
    indent++;
  }
  public void after(AdaptiveMethodBody host) {
    out.print(" )");
    indent--;
  }
  public void before_trv(AdaptiveMethodBody source, TraversalExpression dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<trv> ");
  }
  public void before_vis(AdaptiveMethodBody source, VisitorExpression dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<vis> ");
  }
  public void before(NoMethodBody host) {
    out.print(": NoMethodBody  (");
    indent++;
  }
  public void after(NoMethodBody host) {
    out.print(" )");
    indent--;
  }
  public void before(TraversalRef host) {
    out.print(": TraversalRef  (");
    indent++;
  }
  public void after(TraversalRef host) {
    out.print(" )");
    indent--;
  }
  public void before_equals(TraversalRef source, Equals dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<equals> ");
  }
  public void before_name(TraversalRef source, TraversalName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }
  public void before(Equals host) {
    out.print(": Equals  (");
    indent++;
  }
  public void after(Equals host) {
    out.print(" )");
    indent--;
  }
  public void before(TraversalSpec host) {
    out.print(": TraversalSpec  (");
    indent++;
  }
  public void after(TraversalSpec host) {
    out.print(" )");
    indent--;
  }
  public void before_strat(TraversalSpec source, StrategyExpression dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<strat> ");
  }
  public void before(WithVisitorRef host) {
    out.print(": WithVisitorRef  (");
    indent++;
  }
  public void after(WithVisitorRef host) {
    out.print(" )");
    indent--;
  }
  public void before_visitorClasses(WithVisitorRef source, ClassName_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<visitorClasses> ");
  }
  public void before(ParenVisitorRef host) {
    out.print(": ParenVisitorRef  (");
    indent++;
  }
  public void after(ParenVisitorRef host) {
    out.print(" )");
    indent--;
  }
  public void before_visitorClasses(ParenVisitorRef source, ClassName_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<visitorClasses> ");
  }
  public void before(VisitorSpec host) {
    out.print(": VisitorSpec  (");
    indent++;
  }
  public void after(VisitorSpec host) {
    out.print(" )");
    indent--;
  }
  public void before_methods(VisitorSpec source, ClassMethods dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<methods> ");
  }
  public void before(Wrapper host) {
    out.print(": Wrapper  (");
    indent++;
  }
  public void after(Wrapper host) {
    out.print(" )");
    indent--;
  }
  public void before_kind(Wrapper source, WrapperKind dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<kind> ");
  }
  public void before_hosts(Wrapper source, HostSpec dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<hosts> ");
  }
  public void before_javacode(Wrapper source, JavaCode dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<javacode> ");
  }
  public void before(Before host) {
    out.print(": Before  (");
    indent++;
  }
  public void after(Before host) {
    out.print(" )");
    indent--;
  }
  public void before(Around host) {
    out.print(": Around  (");
    indent++;
  }
  public void after(Around host) {
    out.print(" )");
    indent--;
  }
  public void before(After host) {
    out.print(": After  (");
    indent++;
  }
  public void after(After host) {
    out.print(" )");
    indent--;
  }
  public void before_partname(Accessor source, PartName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<partname> ");
  }
  public void before_javacode(Accessor source, JavaCode dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<javacode> ");
  }
  public void before(Getter host) {
    out.print(": Getter  (");
    indent++;
  }
  public void after(Getter host) {
    out.print(" )");
    indent--;
  }
  public void before(Setter host) {
    out.print(": Setter  (");
    indent++;
  }
  public void after(Setter host) {
    out.print(" )");
    indent--;
  }
  public void before(Constructor host) {
    out.print(": Constructor  (");
    indent++;
  }
  public void after(Constructor host) {
    out.print(" )");
    indent--;
  }
  public void before_javacode(Constructor source, JavaCode dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<javacode> ");
  }
  public void before(Start host) {
    out.print(": Start  (");
    indent++;
  }
  public void after(Start host) {
    out.print(" )");
    indent--;
  }
  public void before_javacode(Start source, JavaCode dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<javacode> ");
  }
  public void before(Finish host) {
    out.print(": Finish  (");
    indent++;
  }
  public void after(Finish host) {
    out.print(" )");
    indent--;
  }
  public void before_javacode(Finish source, JavaCode dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<javacode> ");
  }
  public void before(ReturnValue host) {
    out.print(": ReturnValue  (");
    indent++;
  }
  public void after(ReturnValue host) {
    out.print(" )");
    indent--;
  }
  public void before_type(ReturnValue source, JavaType dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<type> ");
  }
  public void before_exp(ReturnValue source, JavaCode dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<exp> ");
  }
  public void before(Verbatim host) {
    out.print(": Verbatim  (");
    indent++;
  }
  public void after(Verbatim host) {
    out.print(" )");
    indent--;
  }
  public void before_javacode(Verbatim source, JavaCode dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<javacode> ");
  }
  public void before(PackageName host) {
    out.print(": PackageName  {");
    indent++;
  }
  public void after(PackageName host) {
    out.print(" }");
    indent--;
  }
  public void before_first(PackageName source, Nonempty_PackageName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(ClassName host) {
    out.print(": ClassName  (");
    indent++;
  }
  public void after(ClassName host) {
    out.print(" )");
    indent--;
  }
  public void before_name(ClassName source, Name dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }
  public void before(PartName host) {
    out.print(": PartName  (");
    indent++;
  }
  public void after(PartName host) {
    out.print(" )");
    indent--;
  }
  public void before_name(PartName source, IdentOrKeyword dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }
  public void before(TraversalName host) {
    out.print(": TraversalName  (");
    indent++;
  }
  public void after(TraversalName host) {
    out.print(" )");
    indent--;
  }
  public void before_name(TraversalName source, Name dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }
  public void before(VisitorName host) {
    out.print(": VisitorName  (");
    indent++;
  }
  public void after(VisitorName host) {
    out.print(" )");
    indent--;
  }
  public void before_name(VisitorName source, Name dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }
  public void before(MethodName host) {
    out.print(": MethodName  (");
    indent++;
  }
  public void after(MethodName host) {
    out.print(" )");
    indent--;
  }
  public void before_name(MethodName source, Ident dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_name() + "\"");
  }
  public void before(ParmName host) {
    out.print(": ParmName  (");
    indent++;
  }
  public void after(ParmName host) {
    out.print(" )");
    indent--;
  }
  public void before_name(ParmName source, Ident dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_name() + "\"");
  }
  public void before(StrategyName host) {
    out.print(": StrategyName  (");
    indent++;
  }
  public void after(StrategyName host) {
    out.print(" )");
    indent--;
  }
  public void before_name(StrategyName source, Ident dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_name() + "\"");
  }
  public void before(JavaType host) {
    out.print(": JavaType  (");
    indent++;
  }
  public void after(JavaType host) {
    out.print(" )");
    indent--;
  }
  public void before_type(JavaType source, Name dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<type> ");
  }
  public void before(JavaCode host) {
    out.print(": JavaCode  (");
    indent++;
  }
  public void after(JavaCode host) {
    out.print(" )");
    indent--;
  }
  public void before_code(JavaCode source, Text dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<code> ");
    out.print(" : Text");
    out.print(" (@" + source.get_code() + "@" + ")" + " ");
  }
  public void before(Name host) {
    out.print(": Name  {");
    indent++;
  }
  public void after(Name host) {
    out.print(" }");
    indent--;
  }
  public void before_first(Name source, Nonempty_Name dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(ParseIdent host) {
    out.print(": ParseIdent  (");
    indent++;
  }
  public void after(ParseIdent host) {
    out.print(" )");
    indent--;
  }
  public void before(NoParseIdent host) {
    out.print(": NoParseIdent  (");
    indent++;
  }
  public void after(NoParseIdent host) {
    out.print(" )");
    indent--;
  }
  public void before(VisitorsIdent host) {
    out.print(": VisitorsIdent  (");
    indent++;
  }
  public void after(VisitorsIdent host) {
    out.print(" )");
    indent--;
  }
  public void before(EndVisitorsIdent host) {
    out.print(": EndVisitorsIdent  (");
    indent++;
  }
  public void after(EndVisitorsIdent host) {
    out.print(" )");
    indent--;
  }
  public void before(VisitorIdent host) {
    out.print(": VisitorIdent  (");
    indent++;
  }
  public void after(VisitorIdent host) {
    out.print(" )");
    indent--;
  }
  public void before(NotParsedIdent host) {
    out.print(": NotParsedIdent  (");
    indent++;
  }
  public void after(NotParsedIdent host) {
    out.print(" )");
    indent--;
  }
  public void before(DerivedIdent host) {
    out.print(": DerivedIdent  (");
    indent++;
  }
  public void after(DerivedIdent host) {
    out.print(" )");
    indent--;
  }
  public void before(InitIdent host) {
    out.print(": InitIdent  (");
    indent++;
  }
  public void after(InitIdent host) {
    out.print(" )");
    indent--;
  }
  public void before(CommonIdent host) {
    out.print(": CommonIdent  (");
    indent++;
  }
  public void after(CommonIdent host) {
    out.print(" )");
    indent--;
  }
  public void before(LookaheadIdent host) {
    out.print(": LookaheadIdent  (");
    indent++;
  }
  public void after(LookaheadIdent host) {
    out.print(" )");
    indent--;
  }
  public void before(OtherIdent host) {
    out.print(": OtherIdent  (");
    indent++;
  }
  public void after(OtherIdent host) {
    out.print(" )");
    indent--;
  }
  public void before_id(OtherIdent source, Ident dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<id> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_id() + "\"");
  }
  public void before(DoParseWithoutStars host) {
    out.print(": DoParseWithoutStars  (");
    indent++;
  }
  public void after(DoParseWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(DoParseWithStars host) {
    out.print(": DoParseWithStars  (");
    indent++;
  }
  public void after(DoParseWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(DontParseWithoutStars host) {
    out.print(": DontParseWithoutStars  (");
    indent++;
  }
  public void after(DontParseWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(DontParseWithStars host) {
    out.print(": DontParseWithStars  (");
    indent++;
  }
  public void after(DontParseWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(BeginVisitorsWithoutStars host) {
    out.print(": BeginVisitorsWithoutStars  (");
    indent++;
  }
  public void after(BeginVisitorsWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(BeginVisitorsWithStars host) {
    out.print(": BeginVisitorsWithStars  (");
    indent++;
  }
  public void after(BeginVisitorsWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(EndVisitorsWithoutStars host) {
    out.print(": EndVisitorsWithoutStars  (");
    indent++;
  }
  public void after(EndVisitorsWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(EndVisitorsWithStars host) {
    out.print(": EndVisitorsWithStars  (");
    indent++;
  }
  public void after(EndVisitorsWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(PublicClassWithoutStars host) {
    out.print(": PublicClassWithoutStars  (");
    indent++;
  }
  public void after(PublicClassWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(PublicClassWithStars host) {
    out.print(": PublicClassWithStars  (");
    indent++;
  }
  public void after(PublicClassWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(FinalClassWithoutStars host) {
    out.print(": FinalClassWithoutStars  (");
    indent++;
  }
  public void after(FinalClassWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(FinalClassWithStars host) {
    out.print(": FinalClassWithStars  (");
    indent++;
  }
  public void after(FinalClassWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(InterfaceClassWithoutStars host) {
    out.print(": InterfaceClassWithoutStars  (");
    indent++;
  }
  public void after(InterfaceClassWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(InterfaceClassWithStars host) {
    out.print(": InterfaceClassWithStars  (");
    indent++;
  }
  public void after(InterfaceClassWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(VisitorClassWithoutStars host) {
    out.print(": VisitorClassWithoutStars  (");
    indent++;
  }
  public void after(VisitorClassWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(VisitorClassWithStars host) {
    out.print(": VisitorClassWithStars  (");
    indent++;
  }
  public void after(VisitorClassWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(NotParsedClassWithoutStars host) {
    out.print(": NotParsedClassWithoutStars  (");
    indent++;
  }
  public void after(NotParsedClassWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(NotParsedClassWithStars host) {
    out.print(": NotParsedClassWithStars  (");
    indent++;
  }
  public void after(NotParsedClassWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(FinalPartWithoutStars host) {
    out.print(": FinalPartWithoutStars  (");
    indent++;
  }
  public void after(FinalPartWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(FinalPartWithStars host) {
    out.print(": FinalPartWithStars  (");
    indent++;
  }
  public void after(FinalPartWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(StaticPartWithoutStars host) {
    out.print(": StaticPartWithoutStars  (");
    indent++;
  }
  public void after(StaticPartWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(StaticPartWithStars host) {
    out.print(": StaticPartWithStars  (");
    indent++;
  }
  public void after(StaticPartWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(ReadOnlyPartWithoutStars host) {
    out.print(": ReadOnlyPartWithoutStars  (");
    indent++;
  }
  public void after(ReadOnlyPartWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(ReadOnlyPartWithStars host) {
    out.print(": ReadOnlyPartWithStars  (");
    indent++;
  }
  public void after(ReadOnlyPartWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(PrivatePartWithoutStars host) {
    out.print(": PrivatePartWithoutStars  (");
    indent++;
  }
  public void after(PrivatePartWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(PrivatePartWithStars host) {
    out.print(": PrivatePartWithStars  (");
    indent++;
  }
  public void after(PrivatePartWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(DerivedPartWithoutStars host) {
    out.print(": DerivedPartWithoutStars  (");
    indent++;
  }
  public void after(DerivedPartWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(DerivedPartWithStars host) {
    out.print(": DerivedPartWithStars  (");
    indent++;
  }
  public void after(DerivedPartWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(PartInitKeywordWithoutStars host) {
    out.print(": PartInitKeywordWithoutStars  (");
    indent++;
  }
  public void after(PartInitKeywordWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(PartInitKeywordWithStars host) {
    out.print(": PartInitKeywordWithStars  (");
    indent++;
  }
  public void after(PartInitKeywordWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(ExtendsKeywordWithoutStars host) {
    out.print(": ExtendsKeywordWithoutStars  (");
    indent++;
  }
  public void after(ExtendsKeywordWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(ExtendsKeywordWithStars host) {
    out.print(": ExtendsKeywordWithStars  (");
    indent++;
  }
  public void after(ExtendsKeywordWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(ImplementsKeywordWithoutStars host) {
    out.print(": ImplementsKeywordWithoutStars  (");
    indent++;
  }
  public void after(ImplementsKeywordWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(ImplementsKeywordWithStars host) {
    out.print(": ImplementsKeywordWithStars  (");
    indent++;
  }
  public void after(ImplementsKeywordWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(CommonWithoutStars host) {
    out.print(": CommonWithoutStars  (");
    indent++;
  }
  public void after(CommonWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(CommonWithStars host) {
    out.print(": CommonWithStars  (");
    indent++;
  }
  public void after(CommonWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(LookaheadKeywordWithoutStars host) {
    out.print(": LookaheadKeywordWithoutStars  (");
    indent++;
  }
  public void after(LookaheadKeywordWithoutStars host) {
    out.print(" )");
    indent--;
  }
  public void before(LookaheadKeywordWithStars host) {
    out.print(": LookaheadKeywordWithStars  (");
    indent++;
  }
  public void after(LookaheadKeywordWithStars host) {
    out.print(" )");
    indent--;
  }
  public void before(TraversalMethodName host) {
    out.print(": TraversalMethodName  (");
    indent++;
  }
  public void after(TraversalMethodName host) {
    out.print(" )");
    indent--;
  }
  public void before_methodname(TraversalMethodName source, MethodName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<methodname> ");
  }
  public void before(ClassType host) {
    out.print(": ClassType  (");
    indent++;
  }
  public void after(ClassType host) {
    out.print(" )");
    indent--;
  }
  public void before_is_con(ClassType source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_con> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before_is_alt(ClassType source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_alt> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before_is_rep(ClassType source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_rep> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before_is_public(ClassType source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_public> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before_is_final(ClassType source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_final> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before_is_interface(ClassType source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_interface> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before_is_not_parsed(ClassType source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_not_parsed> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before_is_visitor(ClassType source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_visitor> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before(PartType host) {
    out.print(": PartType  (");
    indent++;
  }
  public void after(PartType host) {
    out.print(" )");
    indent--;
  }
  public void before_is_final(PartType source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_final> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before_is_static(PartType source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_static> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before_is_derived(PartType source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_derived> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before_has_getter(PartType source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<has_getter> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before_has_setter(PartType source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<has_setter> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before(Parts host) {
    out.print(": Parts  {");
    indent++;
  }
  public void after(Parts host) {
    out.print(" }");
    indent--;
  }
  public void before_first(Parts source, Nonempty_Parts dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(PlacementVisitor host) {
    out.print(": PlacementVisitor  (");
    indent++;
  }
  public void after(PlacementVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_ugraph(PlacementVisitor source, UGraph dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ugraph> ");
  }
  public void before(EdgeDistinctionVisitor host) {
    out.print(": EdgeDistinctionVisitor  (");
    indent++;
  }
  public void after(EdgeDistinctionVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_edgetype(EdgeDistinctionVisitor source, String dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<edgetype> ");
    out.print(" : String");
    out.print(" \"" + source.get_edgetype() + "\" ");
  }
  public void before(ClassNameRetVisitor host) {
    out.print(": ClassNameRetVisitor  (");
    indent++;
  }
  public void after(ClassNameRetVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_cn(ClassNameRetVisitor source, ClassName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<cn> ");
  }
  public void before(ClassNameTranspVisitor host) {
    out.print(": ClassNameTranspVisitor  (");
    indent++;
  }
  public void after(ClassNameTranspVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_pcn(ClassNameTranspVisitor source, ParamClassName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<pcn> ");
  }
  public void before(EdgeVisitor host) {
    out.print(": EdgeVisitor  (");
    indent++;
  }
  public void after(EdgeVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_edv(EdgeVisitor source, EdgeDistinctionVisitor dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<edv> ");
  }
  public void before_cntv(EdgeVisitor source, ClassNameTranspVisitor dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<cntv> ");
  }
  public void before_ugraph(EdgeVisitor source, UGraph dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ugraph> ");
  }
  public void before(VertexReadingVisitor host) {
    out.print(": VertexReadingVisitor  (");
    indent++;
  }
  public void after(VertexReadingVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_thegraph(VertexReadingVisitor source, UGraph dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<thegraph> ");
  }
  public void before_graphstring(VertexReadingVisitor source, String dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<graphstring> ");
    out.print(" : String");
    out.print(" \"" + source.get_graphstring() + "\" ");
  }
  public void before_lookupvid(VertexReadingVisitor source, Integer dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<lookupvid> ");
    out.print(" : Integer");
    out.print(" \"" + source.get_lookupvid() + "\"");
  }
  public void before_uppervalue(VertexReadingVisitor source, Integer dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<uppervalue> ");
    out.print(" : Integer");
    out.print(" \"" + source.get_uppervalue() + "\"");
  }
  public void before(EdgeReadingVisitor host) {
    out.print(": EdgeReadingVisitor  (");
    indent++;
  }
  public void after(EdgeReadingVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_thegraph(EdgeReadingVisitor source, UGraph dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<thegraph> ");
  }
  public void before_graphstring(EdgeReadingVisitor source, String dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<graphstring> ");
    out.print(" : String");
    out.print(" \"" + source.get_graphstring() + "\" ");
  }
  public void before_commonstring(EdgeReadingVisitor source, String dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<commonstring> ");
    out.print(" : String");
    out.print(" \"" + source.get_commonstring() + "\" ");
  }
  public void before_lookupvid(EdgeReadingVisitor source, Integer dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<lookupvid> ");
    out.print(" : Integer");
    out.print(" \"" + source.get_lookupvid() + "\"");
  }
  public void before_fromtype(EdgeReadingVisitor source, String dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<fromtype> ");
    out.print(" : String");
    out.print(" \"" + source.get_fromtype() + "\" ");
  }
  public void before_pipeswitch(EdgeReadingVisitor source, Integer dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<pipeswitch> ");
    out.print(" : Integer");
    out.print(" \"" + source.get_pipeswitch() + "\"");
  }
  public void before_listswitch(EdgeReadingVisitor source, Integer dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<listswitch> ");
    out.print(" : Integer");
    out.print(" \"" + source.get_listswitch() + "\"");
  }
  public void before(ReadVertexVisitor host) {
    out.print(": ReadVertexVisitor  (");
    indent++;
  }
  public void after(ReadVertexVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_elements(ReadVertexVisitor source, VertexContainer dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<elements> ");
  }
  public void before(VertexContainer host) {
    out.print(": VertexContainer  (");
    indent++;
  }
  public void after(VertexContainer host) {
    out.print(" )");
    indent--;
  }
  public void before_construction(VertexContainer source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<construction> ");
  }
  public void before_alternation(VertexContainer source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<alternation> ");
  }
  public void before_termination(VertexContainer source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<termination> ");
  }
  public void before(ReadEdgeVisitor host) {
    out.print(": ReadEdgeVisitor  (");
    indent++;
  }
  public void after(ReadEdgeVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_elements(ReadEdgeVisitor source, EdgeContainer dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<elements> ");
  }
  public void before(EdgeContainer host) {
    out.print(": EdgeContainer  (");
    indent++;
  }
  public void after(EdgeContainer host) {
    out.print(" )");
    indent--;
  }
  public void before_construction(EdgeContainer source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<construction> ");
  }
  public void before_alternation(EdgeContainer source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<alternation> ");
  }
  public void before(Main host) {
    out.print(": Main  (");
    indent++;
  }
  public void after(Main host) {
    out.print(" )");
    indent--;
  }
  public void before(CountingVisitor host) {
    out.print(": CountingVisitor  (");
    indent++;
  }
  public void after(CountingVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_total(CountingVisitor source, Integer dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<total> ");
    out.print(" : Integer");
    out.print(" \"" + source.get_total() + "\"");
  }
  public void before(InitVisitor host) {
    out.print(": InitVisitor  (");
    indent++;
  }
  public void after(InitVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before(HashCreateVisitor host) {
    out.print(": HashCreateVisitor  (");
    indent++;
  }
  public void after(HashCreateVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before(ListVectorVisitor host) {
    out.print(": ListVectorVisitor  (");
    indent++;
  }
  public void after(ListVectorVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_sv(ListVectorVisitor source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<sv> ");
  }
  public void before_dv(ListVectorVisitor source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<dv> ");
  }
  public void before_bv(ListVectorVisitor source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<bv> ");
  }
  public void before(DecoCollectVisitor host) {
    out.print(": DecoCollectVisitor  (");
    indent++;
  }
  public void after(DecoCollectVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_duid(DecoCollectVisitor source, UID dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<duid> ");
  }
  public void before_v(DecoCollectVisitor source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<v> ");
  }
  public void before(tostopVisitor host) {
    out.print(": tostopVisitor  (");
    indent++;
  }
  public void after(tostopVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before(RepClassSpecVisitor host) {
    out.print(": RepClassSpecVisitor  (");
    indent++;
  }
  public void after(RepClassSpecVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_first(RepClassSpecVisitor source, Name dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before_inner(RepClassSpecVisitor source, Name dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<inner> ");
  }
  public void before(PlaceVertexVisitor host) {
    out.print(": PlaceVertexVisitor  (");
    indent++;
  }
  public void after(PlaceVertexVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_pos(PlaceVertexVisitor source, Coordinates dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<pos> ");
  }
  public void before_vtable(PlaceVertexVisitor source, Hashtable dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<vtable> ");
  }
  public void before_etable(PlaceVertexVisitor source, Hashtable dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<etable> ");
  }
  public void before(SomeClassSpecVisitor host) {
    out.print(": SomeClassSpecVisitor  (");
    indent++;
  }
  public void after(SomeClassSpecVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_uce(SomeClassSpecVisitor source, UConstEdge dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<uce> ");
  }
  public void before(IntModVisitor host) {
    out.print(": IntModVisitor  (");
    indent++;
  }
  public void after(IntModVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_il(IntModVisitor source, InterfaceModifier_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<il> ");
  }
  public void before(ClassModVisitor host) {
    out.print(": ClassModVisitor  (");
    indent++;
  }
  public void after(ClassModVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_sl(ClassModVisitor source, ScopeIdentifier_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<sl> ");
  }
  public void before(PartModVisitor host) {
    out.print(": PartModVisitor  (");
    indent++;
  }
  public void after(PartModVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_pl(PartModVisitor source, PartModifier_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<pl> ");
  }
  public void before_return_val(cdStringVisitor source, String dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<return_val> ");
    out.print(" : String");
    out.print(" \"" + source.get_return_val() + "\" ");
  }
  public void before(ConstVisitor host) {
    out.print(": ConstVisitor  (");
    indent++;
  }
  public void after(ConstVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_vtable(ConstVisitor source, Hashtable dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<vtable> ");
  }
  public void before_etable(ConstVisitor source, Hashtable dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<etable> ");
  }
  public void before(AltVisitor host) {
    out.print(": AltVisitor  (");
    indent++;
  }
  public void after(AltVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_vtable(AltVisitor source, Hashtable dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<vtable> ");
  }
  public void before_etable(AltVisitor source, Hashtable dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<etable> ");
  }
  public void before(IntVisitor host) {
    out.print(": IntVisitor  (");
    indent++;
  }
  public void after(IntVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_vtable(IntVisitor source, Hashtable dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<vtable> ");
  }
  public void before_etable(IntVisitor source, Hashtable dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<etable> ");
  }
  public void before(SourceEdgeCollector host) {
    out.print(": SourceEdgeCollector  (");
    indent++;
  }
  public void after(SourceEdgeCollector host) {
    out.print(" )");
    indent--;
  }
  public void before_sg(SourceEdgeCollector source, StrategyGraph dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<sg> ");
  }
  public void before_edges(SourceEdgeCollector source, Integer_NList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<edges> ");
  }
  public void before(GlobMatcher host) {
    out.print(": GlobMatcher  (");
    indent++;
  }
  public void after(GlobMatcher host) {
    out.print(" )");
    indent--;
  }
  public void before_glob(GlobMatcher source, Glob dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<glob> ");
  }
  public void before_found_one(GlobMatcher source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<found_one> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before(GlobCollector host) {
    out.print(": GlobCollector  (");
    indent++;
  }
  public void after(GlobCollector host) {
    out.print(" )");
    indent--;
  }
  public void before_spec(GlobCollector source, GlobSet dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<spec> ");
  }
  public void before(ClassGlobCollector host) {
    out.print(": ClassGlobCollector  (");
    indent++;
  }
  public void after(ClassGlobCollector host) {
    out.print(" )");
    indent--;
  }
  public void before_spec(ClassGlobCollector source, ClassGlobSet dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<spec> ");
  }
  public void before(EdgeGlobCollector host) {
    out.print(": EdgeGlobCollector  (");
    indent++;
  }
  public void after(EdgeGlobCollector host) {
    out.print(" )");
    indent--;
  }
  public void before_spec(EdgeGlobCollector source, GlobSet dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<spec> ");
  }
  public void before(OutgoingEdgeSpecConvertor host) {
    out.print(": OutgoingEdgeSpecConvertor  (");
    indent++;
  }
  public void after(OutgoingEdgeSpecConvertor host) {
    out.print(" )");
    indent--;
  }
  public void before_spec(OutgoingEdgeSpecConvertor source, GlobSet dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<spec> ");
  }
  public void before(SGEdgeMatcher host) {
    out.print(": SGEdgeMatcher  (");
    indent++;
  }
  public void after(SGEdgeMatcher host) {
    out.print(" )");
    indent--;
  }
  public void before_c(SGEdgeMatcher source, ClassNameI dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<c> ");
  }
  public void before_index(SGEdgeMatcher source, int dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<index> ");
    out.print(" : int \"" + dest + "\"");
  }
  public void before_return_val(SGEdgeMatcher source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<return_val> ");
  }
  public void before(TGVertexCollector host) {
    out.print(": TGVertexCollector  (");
    indent++;
  }
  public void after(TGVertexCollector host) {
    out.print(" )");
    indent--;
  }
  public void before_tg(TGVertexCollector source, TraversalGraph dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<tg> ");
  }
  public void before(TGEdgeGlobMaker host) {
    out.print(": TGEdgeGlobMaker  (");
    indent++;
  }
  public void after(TGEdgeGlobMaker host) {
    out.print(" )");
    indent--;
  }
  public void before_s(TGEdgeGlobMaker source, ClassName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<s> ");
  }
  public void before_d(TGEdgeGlobMaker source, ClassName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<d> ");
  }
  public void before_cl(TGEdgeGlobMaker source, ClassName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<cl> ");
  }
  public void before_name(TGEdgeGlobMaker source, PartName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }
  public void before_return_val(TGEdgeGlobMaker source, Glob dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<return_val> ");
  }
  public void before(TGCreateVisitor host) {
    out.print(": TGCreateVisitor  (");
    indent++;
  }
  public void after(TGCreateVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_g(TGCreateVisitor source, TraversalGraph dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<g> ");
  }
  public void before_vtable(TGCreateVisitor source, Hashtable dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<vtable> ");
  }
  public void before(TGUpdateVisitor host) {
    out.print(": TGUpdateVisitor  (");
    indent++;
  }
  public void after(TGUpdateVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before(SaveGraphVisitor host) {
    out.print(": SaveGraphVisitor  (");
    indent++;
  }
  public void after(SaveGraphVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_graphString(SaveGraphVisitor source, String dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<graphString> ");
    out.print(" : String");
    out.print(" \"" + source.get_graphString() + "\" ");
  }
  public void before(SelectMarkedVisitor host) {
    out.print(": SelectMarkedVisitor  (");
    indent++;
  }
  public void after(SelectMarkedVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_bflag(SelectMarkedVisitor source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<bflag> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before_cflag(SelectMarkedVisitor source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<cflag> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before_anyEdgeflag(SelectMarkedVisitor source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<anyEdgeflag> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before_graphString(SelectMarkedVisitor source, String dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<graphString> ");
    out.print(" : String");
    out.print(" \"" + source.get_graphString() + "\" ");
  }
  public void before_ioeString(SelectMarkedVisitor source, String dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ioeString> ");
    out.print(" : String");
    out.print(" \"" + source.get_ioeString() + "\" ");
  }
  public void before(SGraphCollector host) {
    out.print(": SGraphCollector  (");
    indent++;
  }
  public void after(SGraphCollector host) {
    out.print(" )");
    indent--;
  }
  public void before_names(SGraphCollector source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<names> ");
  }
  public void before_graphs(SGraphCollector source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<graphs> ");
  }
  public void before(VecVisitor host) {
    out.print(": VecVisitor  (");
    indent++;
  }
  public void after(VecVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_names(VecVisitor source, Vector dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<names> ");
  }
  public void before(StringVisitor host) {
    out.print(": StringVisitor  (");
    indent++;
  }
  public void after(StringVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_name(StringVisitor source, String dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
    out.print(" : String");
    out.print(" \"" + source.get_name() + "\" ");
  }
  public void before(DummyVisitor host) {
    out.print(": DummyVisitor  (");
    indent++;
  }
  public void after(DummyVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before(PrintVisitor host) {
    out.print(": PrintVisitor  (");
    indent++;
  }
  public void after(PrintVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_indent(PrintVisitor source, int dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<indent> ");
    out.print(" : int \"" + dest + "\"");
  }
  public void before_needSpace(PrintVisitor source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<needSpace> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before(CopyVisitor host) {
    out.print(": CopyVisitor  (");
    indent++;
  }
  public void after(CopyVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_copy(CopyVisitor source, Object dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<copy> ");
  }
  public void before(EqualVisitor host) {
    out.print(": EqualVisitor  (");
    indent++;
  }
  public void after(EqualVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_is_equal(EqualVisitor source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_equal> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before(DisplayVisitor host) {
    out.print(": DisplayVisitor  (");
    indent++;
  }
  public void after(DisplayVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_indent(DisplayVisitor source, int dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<indent> ");
    out.print(" : int \"" + dest + "\"");
  }
  public void before(TraceVisitor host) {
    out.print(": TraceVisitor  (");
    indent++;
  }
  public void after(TraceVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_indent(TraceVisitor source, int dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<indent> ");
    out.print(" : int \"" + dest + "\"");
  }
  public void before(Import_SList host) {
    out.print(": Import_SList  {");
    indent++;
  }
  public void after(Import_SList host) {
    out.print(" }");
    indent--;
  }
  public void before_first(Import_SList source, Nonempty_Import_SList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(ClassGraphEntry_DList host) {
    out.print(": ClassGraphEntry_DList  {");
    indent++;
  }
  public void after(ClassGraphEntry_DList host) {
    out.print(" }");
    indent--;
  }
  public void before_first(ClassGraphEntry_DList source, Nonempty_ClassGraphEntry_DList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(ClassKeyword_List host) {
    out.print(": ClassKeyword_List  {");
    indent++;
  }
  public void after(ClassKeyword_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(ClassKeyword_List source, Nonempty_ClassKeyword_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(ClassName_Commalist host) {
    out.print(": ClassName_Commalist  {");
    indent++;
  }
  public void after(ClassName_Commalist host) {
    out.print(" }");
    indent--;
  }
  public void before_first(ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(PartOrSyntax_List host) {
    out.print(": PartOrSyntax_List  {");
    indent++;
  }
  public void after(PartOrSyntax_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(PartOrSyntax_List source, Nonempty_PartOrSyntax_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(PartKeyword_List host) {
    out.print(": PartKeyword_List  {");
    indent++;
  }
  public void after(PartKeyword_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(PartKeyword_List source, Nonempty_PartKeyword_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(Part_Sandwich host) {
    out.print(": Part_Sandwich  (");
    indent++;
  }
  public void after(Part_Sandwich host) {
    out.print(" )");
    indent--;
  }
  public void before_first(Part_Sandwich source, Syntax_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before_inner(Part_Sandwich source, Part dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<inner> ");
  }
  public void before_second(Part_Sandwich source, Syntax_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<second> ");
  }
  public void before(Superclass_Commalist host) {
    out.print(": Superclass_Commalist  {");
    indent++;
  }
  public void after(Superclass_Commalist host) {
    out.print(" }");
    indent--;
  }
  public void before_first(Superclass_Commalist source, Nonempty_Superclass_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(Interface_Commalist host) {
    out.print(": Interface_Commalist  {");
    indent++;
  }
  public void after(Interface_Commalist host) {
    out.print(" }");
    indent--;
  }
  public void before_first(Interface_Commalist source, Nonempty_Interface_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(Subclass_Barlist host) {
    out.print(": Subclass_Barlist  {");
    indent++;
  }
  public void after(Subclass_Barlist host) {
    out.print(" }");
    indent--;
  }
  public void before_first(Subclass_Barlist source, Nonempty_Subclass_Barlist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(RepeatedPart_Sandwich host) {
    out.print(": RepeatedPart_Sandwich  (");
    indent++;
  }
  public void after(RepeatedPart_Sandwich host) {
    out.print(" )");
    indent--;
  }
  public void before_first(RepeatedPart_Sandwich source, Syntax_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before_inner(RepeatedPart_Sandwich source, RepeatedPart dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<inner> ");
  }
  public void before_second(RepeatedPart_Sandwich source, Syntax_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<second> ");
  }
  public void before(ClassSpec_Sandwich host) {
    out.print(": ClassSpec_Sandwich  (");
    indent++;
  }
  public void after(ClassSpec_Sandwich host) {
    out.print(" )");
    indent--;
  }
  public void before_first(ClassSpec_Sandwich source, Syntax_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before_inner(ClassSpec_Sandwich source, ClassSpec dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<inner> ");
  }
  public void before_second(ClassSpec_Sandwich source, Syntax_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<second> ");
  }
  public void before(Syntax_List host) {
    out.print(": Syntax_List  {");
    indent++;
  }
  public void after(Syntax_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(Syntax_List source, Nonempty_Syntax_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(ClassSpec_Commalist host) {
    out.print(": ClassSpec_Commalist  {");
    indent++;
  }
  public void after(ClassSpec_Commalist host) {
    out.print(" }");
    indent--;
  }
  public void before_first(ClassSpec_Commalist source, Nonempty_ClassSpec_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(Behavior_DList host) {
    out.print(": Behavior_DList  {");
    indent++;
  }
  public void after(Behavior_DList host) {
    out.print(" }");
    indent--;
  }
  public void before_first(Behavior_DList source, Nonempty_Behavior_DList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(SGEdge_SList host) {
    out.print(": SGEdge_SList  {");
    indent++;
  }
  public void after(SGEdge_SList host) {
    out.print(" }");
    indent--;
  }
  public void before_first(SGEdge_SList source, Nonempty_SGEdge_SList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(Integer_NList host) {
    out.print(": Integer_NList  {");
    indent++;
  }
  public void after(Integer_NList host) {
    out.print(" }");
    indent--;
  }
  public void before_first(Integer_NList source, Nonempty_Integer_NList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(PathSegment_List host) {
    out.print(": PathSegment_List  {");
    indent++;
  }
  public void after(PathSegment_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(PathSegment_List source, Nonempty_PathSegment_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(StrategyExpression_Commalist host) {
    out.print(": StrategyExpression_Commalist  {");
    indent++;
  }
  public void after(StrategyExpression_Commalist host) {
    out.print(" }");
    indent--;
  }
  public void before_first(StrategyExpression_Commalist source, Nonempty_StrategyExpression_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(Glob_Commalist host) {
    out.print(": Glob_Commalist  {");
    indent++;
  }
  public void after(Glob_Commalist host) {
    out.print(" }");
    indent--;
  }
  public void before_first(Glob_Commalist source, Nonempty_Glob_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(ClassGlob_Commalist host) {
    out.print(": ClassGlob_Commalist  {");
    indent++;
  }
  public void after(ClassGlob_Commalist host) {
    out.print(" }");
    indent--;
  }
  public void before_first(ClassGlob_Commalist source, Nonempty_ClassGlob_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(Method_SList host) {
    out.print(": Method_SList  {");
    indent++;
  }
  public void after(Method_SList host) {
    out.print(" }");
    indent--;
  }
  public void before_first(Method_SList source, Nonempty_Method_SList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(Visitor_Commalist host) {
    out.print(": Visitor_Commalist  {");
    indent++;
  }
  public void after(Visitor_Commalist host) {
    out.print(" }");
    indent--;
  }
  public void before_first(Visitor_Commalist source, Nonempty_Visitor_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(MethodKeyword_List host) {
    out.print(": MethodKeyword_List  {");
    indent++;
  }
  public void after(MethodKeyword_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(MethodParm_Commalist host) {
    out.print(": MethodParm_Commalist  {");
    indent++;
  }
  public void after(MethodParm_Commalist host) {
    out.print(" }");
    indent--;
  }
  public void before_first(MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(ArraySpec_List host) {
    out.print(": ArraySpec_List  {");
    indent++;
  }
  public void after(ArraySpec_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(ArraySpec_List source, Nonempty_ArraySpec_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(Nonempty_UVertex_List host) {
    out.print(": Nonempty_UVertex_List  (");
    indent++;
  }
  public void after(Nonempty_UVertex_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_UVertex_List source, UVertex dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_UVertex_List source, Nonempty_UVertex_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_IEdge_List host) {
    out.print(": Nonempty_IEdge_List  (");
    indent++;
  }
  public void after(Nonempty_IEdge_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_IEdge_List source, UID dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_IEdge_List source, Nonempty_IEdge_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_OEdge_List host) {
    out.print(": Nonempty_OEdge_List  (");
    indent++;
  }
  public void after(Nonempty_OEdge_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_OEdge_List source, UID dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_OEdge_List source, Nonempty_OEdge_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_InterfaceModifier_List host) {
    out.print(": Nonempty_InterfaceModifier_List  (");
    indent++;
  }
  public void after(Nonempty_InterfaceModifier_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_InterfaceModifier_List source, InterfaceModifier dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_InterfaceModifier_List source, Nonempty_InterfaceModifier_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_ScopeIdentifier_List host) {
    out.print(": Nonempty_ScopeIdentifier_List  (");
    indent++;
  }
  public void after(Nonempty_ScopeIdentifier_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_ScopeIdentifier_List source, ScopeIdentifier dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_ScopeIdentifier_List source, Nonempty_ScopeIdentifier_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_UEdge_List host) {
    out.print(": Nonempty_UEdge_List  (");
    indent++;
  }
  public void after(Nonempty_UEdge_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_UEdge_List source, UEdge dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_UEdge_List source, Nonempty_UEdge_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_PartModifier_List host) {
    out.print(": Nonempty_PartModifier_List  (");
    indent++;
  }
  public void after(Nonempty_PartModifier_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_PartModifier_List source, PartModifier dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_PartModifier_List source, Nonempty_PartModifier_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_PackageName host) {
    out.print(": Nonempty_PackageName  (");
    indent++;
  }
  public void after(Nonempty_PackageName host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_PackageName source, IdentOrKeyword dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_PackageName source, Nonempty_PackageName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_Name host) {
    out.print(": Nonempty_Name  (");
    indent++;
  }
  public void after(Nonempty_Name host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_Name source, Ident dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_it() + "\"");
  }
  public void before_next(Nonempty_Name source, Nonempty_Name dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_Parts host) {
    out.print(": Nonempty_Parts  (");
    indent++;
  }
  public void after(Nonempty_Parts host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_Parts source, Part dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_Parts source, Nonempty_Parts dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_Import_SList host) {
    out.print(": Nonempty_Import_SList  (");
    indent++;
  }
  public void after(Nonempty_Import_SList host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_Import_SList source, Import dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_Import_SList source, Nonempty_Import_SList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_ClassGraphEntry_DList host) {
    out.print(": Nonempty_ClassGraphEntry_DList  (");
    indent++;
  }
  public void after(Nonempty_ClassGraphEntry_DList host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_ClassGraphEntry_DList source, ClassGraphEntry dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_ClassGraphEntry_DList source, Nonempty_ClassGraphEntry_DList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_ClassKeyword_List host) {
    out.print(": Nonempty_ClassKeyword_List  (");
    indent++;
  }
  public void after(Nonempty_ClassKeyword_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_ClassKeyword_List source, ClassKeyword dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_ClassKeyword_List source, Nonempty_ClassKeyword_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_ClassName_Commalist host) {
    out.print(": Nonempty_ClassName_Commalist  (");
    indent++;
  }
  public void after(Nonempty_ClassName_Commalist host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_ClassName_Commalist source, ClassName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_PartOrSyntax_List host) {
    out.print(": Nonempty_PartOrSyntax_List  (");
    indent++;
  }
  public void after(Nonempty_PartOrSyntax_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_PartOrSyntax_List source, PartOrSyntax dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_PartOrSyntax_List source, Nonempty_PartOrSyntax_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_PartKeyword_List host) {
    out.print(": Nonempty_PartKeyword_List  (");
    indent++;
  }
  public void after(Nonempty_PartKeyword_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_PartKeyword_List source, PartKeyword dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_PartKeyword_List source, Nonempty_PartKeyword_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_Superclass_Commalist host) {
    out.print(": Nonempty_Superclass_Commalist  (");
    indent++;
  }
  public void after(Nonempty_Superclass_Commalist host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_Superclass_Commalist source, Superclass dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_Superclass_Commalist source, Nonempty_Superclass_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_Interface_Commalist host) {
    out.print(": Nonempty_Interface_Commalist  (");
    indent++;
  }
  public void after(Nonempty_Interface_Commalist host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_Interface_Commalist source, Interface dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_Interface_Commalist source, Nonempty_Interface_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_Subclass_Barlist host) {
    out.print(": Nonempty_Subclass_Barlist  (");
    indent++;
  }
  public void after(Nonempty_Subclass_Barlist host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_Subclass_Barlist source, Subclass dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_Subclass_Barlist source, Nonempty_Subclass_Barlist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_Syntax_List host) {
    out.print(": Nonempty_Syntax_List  (");
    indent++;
  }
  public void after(Nonempty_Syntax_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_Syntax_List source, Syntax dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_Syntax_List source, Nonempty_Syntax_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_ClassSpec_Commalist host) {
    out.print(": Nonempty_ClassSpec_Commalist  (");
    indent++;
  }
  public void after(Nonempty_ClassSpec_Commalist host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_ClassSpec_Commalist source, ClassSpec dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_ClassSpec_Commalist source, Nonempty_ClassSpec_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_Behavior_DList host) {
    out.print(": Nonempty_Behavior_DList  (");
    indent++;
  }
  public void after(Nonempty_Behavior_DList host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_Behavior_DList source, Behavior dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_Behavior_DList source, Nonempty_Behavior_DList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_SGEdge_SList host) {
    out.print(": Nonempty_SGEdge_SList  (");
    indent++;
  }
  public void after(Nonempty_SGEdge_SList host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_SGEdge_SList source, SGEdge dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_SGEdge_SList source, Nonempty_SGEdge_SList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_Integer_NList host) {
    out.print(": Nonempty_Integer_NList  (");
    indent++;
  }
  public void after(Nonempty_Integer_NList host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_Integer_NList source, Integer dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
    out.print(" : Integer");
    out.print(" \"" + source.get_it() + "\"");
  }
  public void before_next(Nonempty_Integer_NList source, Nonempty_Integer_NList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_PathSegment_List host) {
    out.print(": Nonempty_PathSegment_List  (");
    indent++;
  }
  public void after(Nonempty_PathSegment_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_PathSegment_List source, PathSegment dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_PathSegment_List source, Nonempty_PathSegment_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_StrategyExpression_Commalist host) {
    out.print(": Nonempty_StrategyExpression_Commalist  (");
    indent++;
  }
  public void after(Nonempty_StrategyExpression_Commalist host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_StrategyExpression_Commalist source, StrategyExpression dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_StrategyExpression_Commalist source, Nonempty_StrategyExpression_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_Glob_Commalist host) {
    out.print(": Nonempty_Glob_Commalist  (");
    indent++;
  }
  public void after(Nonempty_Glob_Commalist host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_Glob_Commalist source, Glob dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_Glob_Commalist source, Nonempty_Glob_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_ClassGlob_Commalist host) {
    out.print(": Nonempty_ClassGlob_Commalist  (");
    indent++;
  }
  public void after(Nonempty_ClassGlob_Commalist host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_ClassGlob_Commalist source, ClassGlob dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_ClassGlob_Commalist source, Nonempty_ClassGlob_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_Method_SList host) {
    out.print(": Nonempty_Method_SList  (");
    indent++;
  }
  public void after(Nonempty_Method_SList host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_Method_SList source, Method dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_Method_SList source, Nonempty_Method_SList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_Visitor_Commalist host) {
    out.print(": Nonempty_Visitor_Commalist  (");
    indent++;
  }
  public void after(Nonempty_Visitor_Commalist host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_Visitor_Commalist source, Visitor dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_Visitor_Commalist source, Nonempty_Visitor_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_MethodKeyword_List host) {
    out.print(": Nonempty_MethodKeyword_List  (");
    indent++;
  }
  public void after(Nonempty_MethodKeyword_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_MethodKeyword_List source, MethodKeyword dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_MethodParm_Commalist host) {
    out.print(": Nonempty_MethodParm_Commalist  (");
    indent++;
  }
  public void after(Nonempty_MethodParm_Commalist host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_MethodParm_Commalist source, MethodParm dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_ArraySpec_List host) {
    out.print(": Nonempty_ArraySpec_List  (");
    indent++;
  }
  public void after(Nonempty_ArraySpec_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_ArraySpec_List source, ArraySpec dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_ArraySpec_List source, Nonempty_ArraySpec_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  void universal_trv0_bef(UniversalVisitor _v_) {
    super.universal_trv0_bef(_v_);
  }
  void universal_trv0_aft(UniversalVisitor _v_) {
    super.universal_trv0_aft(_v_);
  }
  void universal_trv0(UniversalVisitor _v_) {
    universal_trv0_bef(_v_);
    super.universal_trv0(_v_);
    universal_trv0_aft(_v_);
  }
}

