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 CopyVisitor extends UniversalVisitor {
  public CopyVisitor() {
    super();
  }

    private java.util.Stack history = new java.util.Stack();
    public CopyVisitor(Class firstClass) {
      try {
        history.push(firstClass.newInstance());
      } catch(Exception e) {
        e.printStackTrace();
      }
    }
    public Object get_copy() { return history.peek(); }
  Object get_return_val() { return get_copy() ; }
  public void before_pkg(UGraph source, Package dest) {
    UGraph it = (UGraph) history.peek();
    Package p = new Package();
    it.set_pkg(p);
    history.push(p);
  }
  public void after_pkg(UGraph source, Package dest) {
    history.pop();
  }
  public void before_imports(UGraph source, Import_SList dest) {
    UGraph it = (UGraph) history.peek();
    Import_SList p = new Import_SList();
    it.set_imports(p);
    history.push(p);
  }
  public void after_imports(UGraph source, Import_SList dest) {
    history.pop();
  }
  public void before_preamble(UGraph source, JavaCode dest) {
    UGraph it = (UGraph) history.peek();
    JavaCode p = new JavaCode();
    it.set_preamble(p);
    history.push(p);
  }
  public void after_preamble(UGraph source, JavaCode dest) {
    history.pop();
  }
  public void before_vertices(UGraph source, UVertex_List dest) {
    UGraph it = (UGraph) history.peek();
    UVertex_List p = new UVertex_List();
    it.set_vertices(p);
    history.push(p);
  }
  public void after_vertices(UGraph source, UVertex_List dest) {
    history.pop();
  }
  public void before_idToVertexTable(UGraph source, Hashtable dest) {
    UGraph it = (UGraph) history.peek();
    it.set_idToVertexTable(dest);
  }
  public void before_edges(UGraph source, UEdge_List dest) {
    UGraph it = (UGraph) history.peek();
    UEdge_List p = new UEdge_List();
    it.set_edges(p);
    history.push(p);
  }
  public void after_edges(UGraph source, UEdge_List dest) {
    history.pop();
  }
  public void before_idToEdgeTable(UGraph source, Hashtable dest) {
    UGraph it = (UGraph) history.peek();
    it.set_idToEdgeTable(dest);
  }
  public void before_nameToIdVertexTable(UGraph source, Hashtable dest) {
    UGraph it = (UGraph) history.peek();
    it.set_nameToIdVertexTable(dest);
  }
  public void before_firstuid(UGraph source, UID dest) {
    UGraph it = (UGraph) history.peek();
    UID p = new UID();
    it.set_firstuid(p);
    history.push(p);
  }
  public void after_firstuid(UGraph source, UID dest) {
    history.pop();
  }
  public void before_first(UVertex_List source, Nonempty_UVertex_List dest) {
    UVertex_List it = (UVertex_List) history.peek();
    Nonempty_UVertex_List p = new Nonempty_UVertex_List();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(UVertex_List source, Nonempty_UVertex_List dest) {
    history.pop();
  }
  public void before_vid(UVertex source, UID dest) {
    UVertex it = (UVertex) history.peek();
    UID p = new UID();
    it.set_vid(p);
    history.push(p);
  }
  public void after_vid(UVertex source, UID dest) {
    history.pop();
  }
  public void before_vertexname(UVertex source, UVertexName dest) {
    UVertex it = (UVertex) history.peek();
    UVertexName p = new UVertexName();
    it.set_vertexname(p);
    history.push(p);
  }
  public void after_vertexname(UVertex source, UVertexName dest) {
    history.pop();
  }
  public void before_position(UVertex source, Coordinates dest) {
    UVertex it = (UVertex) history.peek();
    Coordinates p = new Coordinates();
    it.set_position(p);
    history.push(p);
  }
  public void after_position(UVertex source, Coordinates dest) {
    history.pop();
  }
  public void before_incoming(UVertex source, IEdge_List dest) {
    UVertex it = (UVertex) history.peek();
    IEdge_List p = new IEdge_List();
    it.set_incoming(p);
    history.push(p);
  }
  public void after_incoming(UVertex source, IEdge_List dest) {
    history.pop();
  }
  public void before_outgoing(UVertex source, OEdge_List dest) {
    UVertex it = (UVertex) history.peek();
    OEdge_List p = new OEdge_List();
    it.set_outgoing(p);
    history.push(p);
  }
  public void after_outgoing(UVertex source, OEdge_List dest) {
    history.pop();
  }
  public void before_inArcIdList(UVertex source, Vector dest) {
    UVertex it = (UVertex) history.peek();
    it.set_inArcIdList(dest);
  }
  public void before_outArcIdList(UVertex source, Vector dest) {
    UVertex it = (UVertex) history.peek();
    it.set_outArcIdList(dest);
  }
  public void before_vdeco(UVertex source, Decorator dest) {
    UVertex it = (UVertex) history.peek();
    Decorator p = new Decorator();
    it.set_vdeco(p);
    history.push(p);
  }
  public void after_vdeco(UVertex source, Decorator dest) {
    history.pop();
  }
  public void before_tgv(UVertex source, TGVertex dest) {
    UVertex it = (UVertex) history.peek();
    it.set_tgv(dest);
  }
  public void before_persp(UVertex source, Perspective dest) {
    UVertex it = (UVertex) history.peek();
    it.set_persp(dest);
  }
  public void before_parse(UConstOrAltVertex source, ParseOrNot dest) {
    UConstOrAltVertex it = (UConstOrAltVertex) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_parse((ParseOrNot) p);
    history.push(p);
  }
  public void after_parse(UConstOrAltVertex source, ParseOrNot dest) {
    history.pop();
  }
  public void before_outEdgeNameList(UConstOrAltVertex source, Vector dest) {
    UConstOrAltVertex it = (UConstOrAltVertex) history.peek();
    it.set_outEdgeNameList(dest);
  }
  public void before_keywords(UConstOrAltVertex source, ScopeIdentifier_List dest) {
    UConstOrAltVertex it = (UConstOrAltVertex) history.peek();
    ScopeIdentifier_List p = new ScopeIdentifier_List();
    it.set_keywords(p);
    history.push(p);
  }
  public void after_keywords(UConstOrAltVertex source, ScopeIdentifier_List dest) {
    history.pop();
  }
  public void before_first(IEdge_List source, Nonempty_IEdge_List dest) {
    IEdge_List it = (IEdge_List) history.peek();
    Nonempty_IEdge_List p = new Nonempty_IEdge_List();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(IEdge_List source, Nonempty_IEdge_List dest) {
    history.pop();
  }
  public void before_first(OEdge_List source, Nonempty_OEdge_List dest) {
    OEdge_List it = (OEdge_List) history.peek();
    Nonempty_OEdge_List p = new Nonempty_OEdge_List();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(OEdge_List source, Nonempty_OEdge_List dest) {
    history.pop();
  }
  public void before_beFore(UConstVertex source, UBefore dest) {
    UConstVertex it = (UConstVertex) history.peek();
    UBefore p = new UBefore();
    it.set_beFore(p);
    history.push(p);
  }
  public void after_beFore(UConstVertex source, UBefore dest) {
    history.pop();
  }
  public void before_afTer(UConstVertex source, UAfter dest) {
    UConstVertex it = (UConstVertex) history.peek();
    UAfter p = new UAfter();
    it.set_afTer(p);
    history.push(p);
  }
  public void after_afTer(UConstVertex source, UAfter dest) {
    history.pop();
  }
  public void before_syntax(UBefore source, String dest) {
    UBefore it = (UBefore) history.peek();
    it.set_syntax(dest);
  }
  public void before_syntax(UAfter source, String dest) {
    UAfter it = (UAfter) history.peek();
    it.set_syntax(dest);
  }
  public void before_keywords(UInterface source, InterfaceModifier_List dest) {
    UInterface it = (UInterface) history.peek();
    InterfaceModifier_List p = new InterfaceModifier_List();
    it.set_keywords(p);
    history.push(p);
  }
  public void after_keywords(UInterface source, InterfaceModifier_List dest) {
    history.pop();
  }
  public void before_javacode(UInterface source, JavaCode dest) {
    UInterface it = (UInterface) history.peek();
    JavaCode p = new JavaCode();
    it.set_javacode(p);
    history.push(p);
  }
  public void after_javacode(UInterface source, JavaCode dest) {
    history.pop();
  }
  public void before_first(InterfaceModifier_List source, Nonempty_InterfaceModifier_List dest) {
    InterfaceModifier_List it = (InterfaceModifier_List) history.peek();
    Nonempty_InterfaceModifier_List p = new Nonempty_InterfaceModifier_List();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(InterfaceModifier_List source, Nonempty_InterfaceModifier_List dest) {
    history.pop();
  }
  public void before_first(ScopeIdentifier_List source, Nonempty_ScopeIdentifier_List dest) {
    ScopeIdentifier_List it = (ScopeIdentifier_List) history.peek();
    Nonempty_ScopeIdentifier_List p = new Nonempty_ScopeIdentifier_List();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(ScopeIdentifier_List source, Nonempty_ScopeIdentifier_List dest) {
    history.pop();
  }
  public void before_first(UEdge_List source, Nonempty_UEdge_List dest) {
    UEdge_List it = (UEdge_List) history.peek();
    Nonempty_UEdge_List p = new Nonempty_UEdge_List();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(UEdge_List source, Nonempty_UEdge_List dest) {
    history.pop();
  }
  public void before_eid(UEdge source, UID dest) {
    UEdge it = (UEdge) history.peek();
    UID p = new UID();
    it.set_eid(p);
    history.push(p);
  }
  public void after_eid(UEdge source, UID dest) {
    history.pop();
  }
  public void before_fromVertex(UEdge source, UID dest) {
    UEdge it = (UEdge) history.peek();
    UID p = new UID();
    it.set_fromVertex(p);
    history.push(p);
  }
  public void after_fromVertex(UEdge source, UID dest) {
    history.pop();
  }
  public void before_toVertex(UEdge source, UID dest) {
    UEdge it = (UEdge) history.peek();
    UID p = new UID();
    it.set_toVertex(p);
    history.push(p);
  }
  public void after_toVertex(UEdge source, UID dest) {
    history.pop();
  }
  public void before_edeco(UEdge source, Decorator dest) {
    UEdge it = (UEdge) history.peek();
    Decorator p = new Decorator();
    it.set_edeco(p);
    history.push(p);
  }
  public void after_edeco(UEdge source, Decorator dest) {
    history.pop();
  }
  public void before_bendpoint(UEdge source, BendPoint dest) {
    UEdge it = (UEdge) history.peek();
    BendPoint p = new BendPoint();
    it.set_bendpoint(p);
    history.push(p);
  }
  public void after_bendpoint(UEdge source, BendPoint dest) {
    history.pop();
  }
  public void before_persp(UEdge source, ArcPerspective dest) {
    UEdge it = (UEdge) history.peek();
    it.set_persp(dest);
  }
  public void before_position(BendPoint source, Coordinates dest) {
    BendPoint it = (BendPoint) history.peek();
    Coordinates p = new Coordinates();
    it.set_position(p);
    history.push(p);
  }
  public void after_position(BendPoint source, Coordinates dest) {
    history.pop();
  }
  public void before_tge(UAltEdge source, TGAEdge dest) {
    UAltEdge it = (UAltEdge) history.peek();
    it.set_tge(dest);
  }
  public void before_tge(UExtendEdge source, TGAEdge dest) {
    UExtendEdge it = (UExtendEdge) history.peek();
    it.set_tge(dest);
  }
  public void before_tge(UImplEdge source, TGIEdge dest) {
    UImplEdge it = (UImplEdge) history.peek();
    it.set_tge(dest);
  }
  public void before_edgename(UConstEdge source, UEdgeName dest) {
    UConstEdge it = (UConstEdge) history.peek();
    UEdgeName p = new UEdgeName();
    it.set_edgename(p);
    history.push(p);
  }
  public void after_edgename(UConstEdge source, UEdgeName dest) {
    history.pop();
  }
  public void before_card(UConstEdge source, Cardinality dest) {
    UConstEdge it = (UConstEdge) history.peek();
    Cardinality p = new Cardinality();
    it.set_card(p);
    history.push(p);
  }
  public void after_card(UConstEdge source, Cardinality dest) {
    history.pop();
  }
  public void before_beFore(UConstEdge source, UBefore dest) {
    UConstEdge it = (UConstEdge) history.peek();
    UBefore p = new UBefore();
    it.set_beFore(p);
    history.push(p);
  }
  public void after_beFore(UConstEdge source, UBefore dest) {
    history.pop();
  }
  public void before_afTer(UConstEdge source, UAfter dest) {
    UConstEdge it = (UConstEdge) history.peek();
    UAfter p = new UAfter();
    it.set_afTer(p);
    history.push(p);
  }
  public void after_afTer(UConstEdge source, UAfter dest) {
    history.pop();
  }
  public void before_keywords(UConstEdge source, PartModifier_List dest) {
    UConstEdge it = (UConstEdge) history.peek();
    PartModifier_List p = new PartModifier_List();
    it.set_keywords(p);
    history.push(p);
  }
  public void after_keywords(UConstEdge source, PartModifier_List dest) {
    history.pop();
  }
  public void before_tge(UConstEdge source, TGCEdge dest) {
    UConstEdge it = (UConstEdge) history.peek();
    it.set_tge(dest);
  }
  public void before_first(PartModifier_List source, Nonempty_PartModifier_List dest) {
    PartModifier_List it = (PartModifier_List) history.peek();
    Nonempty_PartModifier_List p = new Nonempty_PartModifier_List();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(PartModifier_List source, Nonempty_PartModifier_List dest) {
    history.pop();
  }
  public void before_lower(Cardinality source, Lower dest) {
    Cardinality it = (Cardinality) history.peek();
    Lower p = new Lower();
    it.set_lower(p);
    history.push(p);
  }
  public void after_lower(Cardinality source, Lower dest) {
    history.pop();
  }
  public void before_upper(Cardinality source, Upper dest) {
    Cardinality it = (Cardinality) history.peek();
    Upper p = new Upper();
    it.set_upper(p);
    history.push(p);
  }
  public void after_upper(Cardinality source, Upper dest) {
    history.pop();
  }
  public void before_l(Lower source, Integer dest) {
    Lower it = (Lower) history.peek();
    it.set_l(dest);
  }
  public void before_u(Upper source, String dest) {
    Upper it = (Upper) history.peek();
    it.set_u(dest);
  }
  public void before_id(UID source, Integer dest) {
    UID it = (UID) history.peek();
    it.set_id(dest);
  }
  public void before_name(UEdgeName source, Ident dest) {
    UEdgeName it = (UEdgeName) history.peek();
    it.set_name(dest);
  }
  public void before_name(UVertexName source, Ident dest) {
    UVertexName it = (UVertexName) history.peek();
    it.set_name(dest);
  }
  public void before_x(Coordinates source, X dest) {
    Coordinates it = (Coordinates) history.peek();
    X p = new X();
    it.set_x(p);
    history.push(p);
  }
  public void after_x(Coordinates source, X dest) {
    history.pop();
  }
  public void before_y(Coordinates source, Y dest) {
    Coordinates it = (Coordinates) history.peek();
    Y p = new Y();
    it.set_y(p);
    history.push(p);
  }
  public void after_y(Coordinates source, Y dest) {
    history.pop();
  }
  public void before_x(X source, Integer dest) {
    X it = (X) history.peek();
    it.set_x(dest);
  }
  public void before_y(Y source, Integer dest) {
    Y it = (Y) history.peek();
    it.set_y(dest);
  }
  public void before_travtag(Decorator source, Integer dest) {
    Decorator it = (Decorator) history.peek();
    it.set_travtag(dest);
  }
  public void before_travtaglist(Decorator source, Vector dest) {
    Decorator it = (Decorator) history.peek();
    it.set_travtaglist(dest);
  }
  public void before_globalimports(Program source, GlobalImports dest) {
    Program it = (Program) history.peek();
    GlobalImports p = new GlobalImports();
    it.set_globalimports(p);
    history.push(p);
  }
  public void after_globalimports(Program source, GlobalImports dest) {
    history.pop();
  }
  public void before_cg(Program source, ClassGraph dest) {
    Program it = (Program) history.peek();
    ClassGraph p = new ClassGraph();
    it.set_cg(p);
    history.push(p);
  }
  public void after_cg(Program source, ClassGraph dest) {
    history.pop();
  }
  public void before_imports(GlobalImports source, Import_SList dest) {
    GlobalImports it = (GlobalImports) history.peek();
    Import_SList p = new Import_SList();
    it.set_imports(p);
    history.push(p);
  }
  public void after_imports(GlobalImports source, Import_SList dest) {
    history.pop();
  }
  public void before_packagename(Import source, PackageName dest) {
    Import it = (Import) history.peek();
    PackageName p = new PackageName();
    it.set_packagename(p);
    history.push(p);
  }
  public void after_packagename(Import source, PackageName dest) {
    history.pop();
  }
  public void before_importallclasses(Import source, ImportAllClasses dest) {
    Import it = (Import) history.peek();
    ImportAllClasses p = new ImportAllClasses();
    it.set_importallclasses(p);
    history.push(p);
  }
  public void after_importallclasses(Import source, ImportAllClasses dest) {
    history.pop();
  }
  public void before_defdict(ClassGraph source, Hashtable dest) {
    ClassGraph it = (ClassGraph) history.peek();
    it.set_defdict(dest);
  }
  public void before_classes(ClassGraph source, ClassGraphEntry_DList dest) {
    ClassGraph it = (ClassGraph) history.peek();
    ClassGraphEntry_DList p = new ClassGraphEntry_DList();
    it.set_classes(p);
    history.push(p);
  }
  public void after_classes(ClassGraph source, ClassGraphEntry_DList dest) {
    history.pop();
  }
  public void before_tg(ClassGraph source, TraversalGraph dest) {
    ClassGraph it = (ClassGraph) history.peek();
    it.set_tg(dest);
  }
  public void before_parsekeyword(ParseDirective source, ParseKeyword dest) {
    ParseDirective it = (ParseDirective) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_parsekeyword((ParseKeyword) p);
    history.push(p);
  }
  public void after_parsekeyword(ParseDirective source, ParseKeyword dest) {
    history.pop();
  }
  public void before_visitorkeyword(VisitorDirective source, VisitorKeyword dest) {
    VisitorDirective it = (VisitorDirective) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_visitorkeyword((VisitorKeyword) p);
    history.push(p);
  }
  public void after_visitorkeyword(VisitorDirective source, VisitorKeyword dest) {
    history.pop();
  }
  public void before_pkg(PackageDirective source, Package dest) {
    PackageDirective it = (PackageDirective) history.peek();
    Package p = new Package();
    it.set_pkg(p);
    history.push(p);
  }
  public void after_pkg(PackageDirective source, Package dest) {
    history.pop();
  }
  public void before_localimports(PackageDirective source, LocalImports dest) {
    PackageDirective it = (PackageDirective) history.peek();
    LocalImports p = new LocalImports();
    it.set_localimports(p);
    history.push(p);
  }
  public void after_localimports(PackageDirective source, LocalImports dest) {
    history.pop();
  }
  public void before_packagename(Package source, PackageName dest) {
    Package it = (Package) history.peek();
    PackageName p = new PackageName();
    it.set_packagename(p);
    history.push(p);
  }
  public void after_packagename(Package source, PackageName dest) {
    history.pop();
  }
  public void before_imports(LocalImports source, Import_SList dest) {
    LocalImports it = (LocalImports) history.peek();
    Import_SList p = new Import_SList();
    it.set_imports(p);
    history.push(p);
  }
  public void after_imports(LocalImports source, Import_SList dest) {
    history.pop();
  }
  public void before_keywords(ClassDef source, ClassKeyword_List dest) {
    ClassDef it = (ClassDef) history.peek();
    ClassKeyword_List p = new ClassKeyword_List();
    it.set_keywords(p);
    history.push(p);
  }
  public void after_keywords(ClassDef source, ClassKeyword_List dest) {
    history.pop();
  }
  public void before_paramclassname(ClassDef source, ParamClassName dest) {
    ClassDef it = (ClassDef) history.peek();
    ParamClassName p = new ParamClassName();
    it.set_paramclassname(p);
    history.push(p);
  }
  public void after_paramclassname(ClassDef source, ParamClassName dest) {
    history.pop();
  }
  public void before_parsedirective(ClassDef source, ParseDirective dest) {
    ClassDef it = (ClassDef) history.peek();
    ParseDirective p = new ParseDirective();
    it.set_parsedirective(p);
    history.push(p);
  }
  public void after_parsedirective(ClassDef source, ParseDirective dest) {
    history.pop();
  }
  public void before_classparts(ClassDef source, ClassParts dest) {
    ClassDef it = (ClassDef) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_classparts((ClassParts) p);
    history.push(p);
  }
  public void after_classparts(ClassDef source, ClassParts dest) {
    history.pop();
  }
  public void before_classmethods(ClassDef source, ClassMethods dest) {
    ClassDef it = (ClassDef) history.peek();
    ClassMethods p = new ClassMethods();
    it.set_classmethods(p);
    history.push(p);
  }
  public void after_classmethods(ClassDef source, ClassMethods dest) {
    history.pop();
  }
  public void before_eoftoken(ClassDef source, EOFtoken dest) {
    ClassDef it = (ClassDef) history.peek();
    EOFtoken p = new EOFtoken();
    it.set_eoftoken(p);
    history.push(p);
  }
  public void after_eoftoken(ClassDef source, EOFtoken dest) {
    history.pop();
  }
  public void before_classname(ParamClassName source, ClassName dest) {
    ParamClassName it = (ParamClassName) history.peek();
    ClassName p = new ClassName();
    it.set_classname(p);
    history.push(p);
  }
  public void after_classname(ParamClassName source, ClassName dest) {
    history.pop();
  }
  public void before_parameters(ParamClassName source, ClassName_Commalist dest) {
    ParamClassName it = (ParamClassName) history.peek();
    ClassName_Commalist p = new ClassName_Commalist();
    it.set_parameters(p);
    history.push(p);
  }
  public void after_parameters(ParamClassName source, ClassName_Commalist dest) {
    history.pop();
  }
  public void before_parts(ConstOrAltClass source, PartOrSyntax_List dest) {
    ConstOrAltClass it = (ConstOrAltClass) history.peek();
    PartOrSyntax_List p = new PartOrSyntax_List();
    it.set_parts(p);
    history.push(p);
  }
  public void after_parts(ConstOrAltClass source, PartOrSyntax_List dest) {
    history.pop();
  }
  public void before_parents(ConstOrAltClass source, ClassParents dest) {
    ConstOrAltClass it = (ConstOrAltClass) history.peek();
    ClassParents p = new ClassParents();
    it.set_parents(p);
    history.push(p);
  }
  public void after_parents(ConstOrAltClass source, ClassParents dest) {
    history.pop();
  }
  public void before_partname(Part source, PartName dest) {
    Part it = (Part) history.peek();
    PartName p = new PartName();
    it.set_partname(p);
    history.push(p);
  }
  public void after_partname(Part source, PartName dest) {
    history.pop();
  }
  public void before_keywords(Part source, PartKeyword_List dest) {
    Part it = (Part) history.peek();
    PartKeyword_List p = new PartKeyword_List();
    it.set_keywords(p);
    history.push(p);
  }
  public void after_keywords(Part source, PartKeyword_List dest) {
    history.pop();
  }
  public void before_classspec(Part source, ClassSpec dest) {
    Part it = (Part) history.peek();
    ClassSpec p = new ClassSpec();
    it.set_classspec(p);
    history.push(p);
  }
  public void after_classspec(Part source, ClassSpec dest) {
    history.pop();
  }
  public void before_partinit(Part source, PartInit dest) {
    Part it = (Part) history.peek();
    PartInit p = new PartInit();
    it.set_partinit(p);
    history.push(p);
  }
  public void after_partinit(Part source, PartInit dest) {
    history.pop();
  }
  public void before_partinitkeyword(PartInit source, PartInitKeyword dest) {
    PartInit it = (PartInit) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_partinitkeyword((PartInitKeyword) p);
    history.push(p);
  }
  public void after_partinitkeyword(PartInit source, PartInitKeyword dest) {
    history.pop();
  }
  public void before_javacode(PartInit source, JavaCode dest) {
    PartInit it = (PartInit) history.peek();
    JavaCode p = new JavaCode();
    it.set_javacode(p);
    history.push(p);
  }
  public void after_javacode(PartInit source, JavaCode dest) {
    history.pop();
  }
  public void before_locallookahead(OptionalPart source, LocalLookahead dest) {
    OptionalPart it = (OptionalPart) history.peek();
    LocalLookahead p = new LocalLookahead();
    it.set_locallookahead(p);
    history.push(p);
  }
  public void after_locallookahead(OptionalPart source, LocalLookahead dest) {
    history.pop();
  }
  public void before_part(OptionalPart source, Part_Sandwich dest) {
    OptionalPart it = (OptionalPart) history.peek();
    Part_Sandwich p = new Part_Sandwich();
    it.set_part(p);
    history.push(p);
  }
  public void after_part(OptionalPart source, Part_Sandwich dest) {
    history.pop();
  }
  public void before_superclasses(ClassParents source, Superclasses dest) {
    ClassParents it = (ClassParents) history.peek();
    Superclasses p = new Superclasses();
    it.set_superclasses(p);
    history.push(p);
  }
  public void after_superclasses(ClassParents source, Superclasses dest) {
    history.pop();
  }
  public void before_interfaces(ClassParents source, Interfaces dest) {
    ClassParents it = (ClassParents) history.peek();
    Interfaces p = new Interfaces();
    it.set_interfaces(p);
    history.push(p);
  }
  public void after_interfaces(ClassParents source, Interfaces dest) {
    history.pop();
  }
  public void before_extendskeyword(Superclasses source, ExtendsKeyword dest) {
    Superclasses it = (Superclasses) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_extendskeyword((ExtendsKeyword) p);
    history.push(p);
  }
  public void after_extendskeyword(Superclasses source, ExtendsKeyword dest) {
    history.pop();
  }
  public void before_superclasses(Superclasses source, Superclass_Commalist dest) {
    Superclasses it = (Superclasses) history.peek();
    Superclass_Commalist p = new Superclass_Commalist();
    it.set_superclasses(p);
    history.push(p);
  }
  public void after_superclasses(Superclasses source, Superclass_Commalist dest) {
    history.pop();
  }
  public void before_classspec(Superclass source, ClassSpec dest) {
    Superclass it = (Superclass) history.peek();
    ClassSpec p = new ClassSpec();
    it.set_classspec(p);
    history.push(p);
  }
  public void after_classspec(Superclass source, ClassSpec dest) {
    history.pop();
  }
  public void before_implementskeyword(Interfaces source, ImplementsKeyword dest) {
    Interfaces it = (Interfaces) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_implementskeyword((ImplementsKeyword) p);
    history.push(p);
  }
  public void after_implementskeyword(Interfaces source, ImplementsKeyword dest) {
    history.pop();
  }
  public void before_interfaces(Interfaces source, Interface_Commalist dest) {
    Interfaces it = (Interfaces) history.peek();
    Interface_Commalist p = new Interface_Commalist();
    it.set_interfaces(p);
    history.push(p);
  }
  public void after_interfaces(Interfaces source, Interface_Commalist dest) {
    history.pop();
  }
  public void before_classspec(Interface source, ClassSpec dest) {
    Interface it = (Interface) history.peek();
    ClassSpec p = new ClassSpec();
    it.set_classspec(p);
    history.push(p);
  }
  public void after_classspec(Interface source, ClassSpec dest) {
    history.pop();
  }
  public void before_subclasses(AlternationClass source, Subclass_Barlist dest) {
    AlternationClass it = (AlternationClass) history.peek();
    Subclass_Barlist p = new Subclass_Barlist();
    it.set_subclasses(p);
    history.push(p);
  }
  public void after_subclasses(AlternationClass source, Subclass_Barlist dest) {
    history.pop();
  }
  public void before_commonkeyword(AlternationClass source, CommonKeyword dest) {
    AlternationClass it = (AlternationClass) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_commonkeyword((CommonKeyword) p);
    history.push(p);
  }
  public void after_commonkeyword(AlternationClass source, CommonKeyword dest) {
    history.pop();
  }
  public void before_locallookahead(Subclass source, LocalLookahead dest) {
    Subclass it = (Subclass) history.peek();
    LocalLookahead p = new LocalLookahead();
    it.set_locallookahead(p);
    history.push(p);
  }
  public void after_locallookahead(Subclass source, LocalLookahead dest) {
    history.pop();
  }
  public void before_classspec(Subclass source, ClassSpec dest) {
    Subclass it = (Subclass) history.peek();
    ClassSpec p = new ClassSpec();
    it.set_classspec(p);
    history.push(p);
  }
  public void after_classspec(Subclass source, ClassSpec dest) {
    history.pop();
  }
  public void before_lookaheadkeyword(LocalLookahead source, LookaheadKeyword dest) {
    LocalLookahead it = (LocalLookahead) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_lookaheadkeyword((LookaheadKeyword) p);
    history.push(p);
  }
  public void after_lookaheadkeyword(LocalLookahead source, LookaheadKeyword dest) {
    history.pop();
  }
  public void before_javacode(LocalLookahead source, JavaCode dest) {
    LocalLookahead it = (LocalLookahead) history.peek();
    JavaCode p = new JavaCode();
    it.set_javacode(p);
    history.push(p);
  }
  public void after_javacode(LocalLookahead source, JavaCode dest) {
    history.pop();
  }
  public void before_sandwiched(RepetitionClass source, RepeatedPart_Sandwich dest) {
    RepetitionClass it = (RepetitionClass) history.peek();
    RepeatedPart_Sandwich p = new RepeatedPart_Sandwich();
    it.set_sandwiched(p);
    history.push(p);
  }
  public void after_sandwiched(RepetitionClass source, RepeatedPart_Sandwich dest) {
    history.pop();
  }
  public void before_nonempty(RepeatedPart source, ClassSpec dest) {
    RepeatedPart it = (RepeatedPart) history.peek();
    ClassSpec p = new ClassSpec();
    it.set_nonempty(p);
    history.push(p);
  }
  public void after_nonempty(RepeatedPart source, ClassSpec dest) {
    history.pop();
  }
  public void before_locallookahead(RepeatedPart source, LocalLookahead dest) {
    RepeatedPart it = (RepeatedPart) history.peek();
    LocalLookahead p = new LocalLookahead();
    it.set_locallookahead(p);
    history.push(p);
  }
  public void after_locallookahead(RepeatedPart source, LocalLookahead dest) {
    history.pop();
  }
  public void before_repeated(RepeatedPart source, ClassSpec_Sandwich dest) {
    RepeatedPart it = (RepeatedPart) history.peek();
    ClassSpec_Sandwich p = new ClassSpec_Sandwich();
    it.set_repeated(p);
    history.push(p);
  }
  public void after_repeated(RepeatedPart source, ClassSpec_Sandwich dest) {
    history.pop();
  }
  public void before_classname(ClassSpec source, ClassName dest) {
    ClassSpec it = (ClassSpec) history.peek();
    ClassName p = new ClassName();
    it.set_classname(p);
    history.push(p);
  }
  public void after_classname(ClassSpec source, ClassName dest) {
    history.pop();
  }
  public void before_actual_parameters(ClassSpec source, ClassSpec_Commalist dest) {
    ClassSpec it = (ClassSpec) history.peek();
    ClassSpec_Commalist p = new ClassSpec_Commalist();
    it.set_actual_parameters(p);
    history.push(p);
  }
  public void after_actual_parameters(ClassSpec source, ClassSpec_Commalist dest) {
    history.pop();
  }
  public void before_string(PlainSyntax source, String dest) {
    PlainSyntax it = (PlainSyntax) history.peek();
    it.set_string(dest);
  }
  public void before_behavior(ProgramBehavior source, Behavior_DList dest) {
    ProgramBehavior it = (ProgramBehavior) history.peek();
    Behavior_DList p = new Behavior_DList();
    it.set_behavior(p);
    history.push(p);
  }
  public void after_behavior(ProgramBehavior source, Behavior_DList dest) {
    history.pop();
  }
  public void before_strategyname(StrategyDefinition source, StrategyName dest) {
    StrategyDefinition it = (StrategyDefinition) history.peek();
    StrategyName p = new StrategyName();
    it.set_strategyname(p);
    history.push(p);
  }
  public void after_strategyname(StrategyDefinition source, StrategyName dest) {
    history.pop();
  }
  public void before_exp(StrategyDefinition source, StrategyExpression dest) {
    StrategyDefinition it = (StrategyDefinition) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_exp((StrategyExpression) p);
    history.push(p);
  }
  public void after_exp(StrategyDefinition source, StrategyExpression dest) {
    history.pop();
  }
  public void before_edgeVec(StrategyGraph source, Vector dest) {
    StrategyGraph it = (StrategyGraph) history.peek();
    it.set_edgeVec(dest);
  }
  public void before_edges(StrategyGraph source, SGEdge_SList dest) {
    StrategyGraph it = (StrategyGraph) history.peek();
    SGEdge_SList p = new SGEdge_SList();
    it.set_edges(p);
    history.push(p);
  }
  public void after_edges(StrategyGraph source, SGEdge_SList dest) {
    history.pop();
  }
  public void before_sources(StrategyGraph source, ClassGlobSpec dest) {
    StrategyGraph it = (StrategyGraph) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_sources((ClassGlobSpec) p);
    history.push(p);
  }
  public void after_sources(StrategyGraph source, ClassGlobSpec dest) {
    history.pop();
  }
  public void before_sourceEdges(StrategyGraph source, Integer_NList dest) {
    StrategyGraph it = (StrategyGraph) history.peek();
    Integer_NList p = new Integer_NList();
    it.set_sourceEdges(p);
    history.push(p);
  }
  public void after_sourceEdges(StrategyGraph source, Integer_NList dest) {
    history.pop();
  }
  public void before_targets(StrategyGraph source, ClassGlobSpec dest) {
    StrategyGraph it = (StrategyGraph) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_targets((ClassGlobSpec) p);
    history.push(p);
  }
  public void after_targets(StrategyGraph source, ClassGlobSpec dest) {
    history.pop();
  }
  public void before_source(SGEdge source, ClassGlobSpec dest) {
    SGEdge it = (SGEdge) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_source((ClassGlobSpec) p);
    history.push(p);
  }
  public void after_source(SGEdge source, ClassGlobSpec dest) {
    history.pop();
  }
  public void before_dest(SGEdge source, ClassGlobSpec dest) {
    SGEdge it = (SGEdge) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_dest((ClassGlobSpec) p);
    history.push(p);
  }
  public void after_dest(SGEdge source, ClassGlobSpec dest) {
    history.pop();
  }
  public void before_constraint(SGEdge source, NegativeConstraint dest) {
    SGEdge it = (SGEdge) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_constraint((NegativeConstraint) p);
    history.push(p);
  }
  public void after_constraint(SGEdge source, NegativeConstraint dest) {
    history.pop();
  }
  public void before_constraint(PathDirective source, NegativeConstraint dest) {
    PathDirective it = (PathDirective) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_constraint((NegativeConstraint) p);
    history.push(p);
  }
  public void after_constraint(PathDirective source, NegativeConstraint dest) {
    history.pop();
  }
  public void before_segments(PathDirective source, PathSegment_List dest) {
    PathDirective it = (PathDirective) history.peek();
    PathSegment_List p = new PathSegment_List();
    it.set_segments(p);
    history.push(p);
  }
  public void after_segments(PathDirective source, PathSegment_List dest) {
    history.pop();
  }
  public void before_targetdirective(PathDirective source, TargetDirective dest) {
    PathDirective it = (PathDirective) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_targetdirective((TargetDirective) p);
    history.push(p);
  }
  public void after_targetdirective(PathDirective source, TargetDirective dest) {
    history.pop();
  }
  public void before_node(PathSegment source, PositiveConstraint dest) {
    PathSegment it = (PathSegment) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_node((PositiveConstraint) p);
    history.push(p);
  }
  public void after_node(PathSegment source, PositiveConstraint dest) {
    history.pop();
  }
  public void before_constraint(PathSegment source, NegativeConstraint dest) {
    PathSegment it = (PathSegment) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_constraint((NegativeConstraint) p);
    history.push(p);
  }
  public void after_constraint(PathSegment source, NegativeConstraint dest) {
    history.pop();
  }
  public void before_glob(Constraint source, GlobSpec dest) {
    Constraint it = (Constraint) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_glob((GlobSpec) p);
    history.push(p);
  }
  public void after_glob(Constraint source, GlobSpec dest) {
    history.pop();
  }
  public void before_targets(TargetDirective source, ClassGlobSpec dest) {
    TargetDirective it = (TargetDirective) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_targets((ClassGlobSpec) p);
    history.push(p);
  }
  public void after_targets(TargetDirective source, ClassGlobSpec dest) {
    history.pop();
  }
  public void before_strategyname(StrategyVariable source, StrategyName dest) {
    StrategyVariable it = (StrategyVariable) history.peek();
    StrategyName p = new StrategyName();
    it.set_strategyname(p);
    history.push(p);
  }
  public void after_strategyname(StrategyVariable source, StrategyName dest) {
    history.pop();
  }
  public void before_args(CompoundStrategy source, StrategyExpression_Commalist dest) {
    CompoundStrategy it = (CompoundStrategy) history.peek();
    StrategyExpression_Commalist p = new StrategyExpression_Commalist();
    it.set_args(p);
    history.push(p);
  }
  public void after_args(CompoundStrategy source, StrategyExpression_Commalist dest) {
    history.pop();
  }
  public void before_glob(OneGlob source, Glob dest) {
    OneGlob it = (OneGlob) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_glob((Glob) p);
    history.push(p);
  }
  public void after_glob(OneGlob source, Glob dest) {
    history.pop();
  }
  public void before_globs(GlobSet source, Glob_Commalist dest) {
    GlobSet it = (GlobSet) history.peek();
    Glob_Commalist p = new Glob_Commalist();
    it.set_globs(p);
    history.push(p);
  }
  public void after_globs(GlobSet source, Glob_Commalist dest) {
    history.pop();
  }
  public void before_name(ClassGlob source, ClassNameGlob dest) {
    ClassGlob it = (ClassGlob) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_name((ClassNameGlob) p);
    history.push(p);
  }
  public void after_name(ClassGlob source, ClassNameGlob dest) {
    history.pop();
  }
  public void before_source(PartGlob source, SourceGlob dest) {
    PartGlob it = (PartGlob) history.peek();
    SourceGlob p = new SourceGlob();
    it.set_source(p);
    history.push(p);
  }
  public void after_source(PartGlob source, SourceGlob dest) {
    history.pop();
  }
  public void before_name(PartGlob source, PartNameGlob dest) {
    PartGlob it = (PartGlob) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_name((PartNameGlob) p);
    history.push(p);
  }
  public void after_name(PartGlob source, PartNameGlob dest) {
    history.pop();
  }
  public void before_dest(PartGlob source, DestGlob dest) {
    PartGlob it = (PartGlob) history.peek();
    DestGlob p = new DestGlob();
    it.set_dest(p);
    history.push(p);
  }
  public void after_dest(PartGlob source, DestGlob dest) {
    history.pop();
  }
  public void before_source(SubclassGlob source, SourceGlob dest) {
    SubclassGlob it = (SubclassGlob) history.peek();
    SourceGlob p = new SourceGlob();
    it.set_source(p);
    history.push(p);
  }
  public void after_source(SubclassGlob source, SourceGlob dest) {
    history.pop();
  }
  public void before_dest(SubclassGlob source, DestGlob dest) {
    SubclassGlob it = (SubclassGlob) history.peek();
    DestGlob p = new DestGlob();
    it.set_dest(p);
    history.push(p);
  }
  public void after_dest(SubclassGlob source, DestGlob dest) {
    history.pop();
  }
  public void before_source(SuperclassGlob source, SourceGlob dest) {
    SuperclassGlob it = (SuperclassGlob) history.peek();
    SourceGlob p = new SourceGlob();
    it.set_source(p);
    history.push(p);
  }
  public void after_source(SuperclassGlob source, SourceGlob dest) {
    history.pop();
  }
  public void before_dest(SuperclassGlob source, DestGlob dest) {
    SuperclassGlob it = (SuperclassGlob) history.peek();
    DestGlob p = new DestGlob();
    it.set_dest(p);
    history.push(p);
  }
  public void after_dest(SuperclassGlob source, DestGlob dest) {
    history.pop();
  }
  public void before_name(SourceGlob source, ClassNameGlob dest) {
    SourceGlob it = (SourceGlob) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_name((ClassNameGlob) p);
    history.push(p);
  }
  public void after_name(SourceGlob source, ClassNameGlob dest) {
    history.pop();
  }
  public void before_name(DestGlob source, ClassNameGlob dest) {
    DestGlob it = (DestGlob) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_name((ClassNameGlob) p);
    history.push(p);
  }
  public void after_name(DestGlob source, ClassNameGlob dest) {
    history.pop();
  }
  public void before_classname(ClassNameExact source, ClassName dest) {
    ClassNameExact it = (ClassNameExact) history.peek();
    ClassName p = new ClassName();
    it.set_classname(p);
    history.push(p);
  }
  public void after_classname(ClassNameExact source, ClassName dest) {
    history.pop();
  }
  public void before_partname(PartNameExact source, PartName dest) {
    PartNameExact it = (PartNameExact) history.peek();
    PartName p = new PartName();
    it.set_partname(p);
    history.push(p);
  }
  public void after_partname(PartNameExact source, PartName dest) {
    history.pop();
  }
  public void before_classglob(OneClassGlob source, ClassGlob dest) {
    OneClassGlob it = (OneClassGlob) history.peek();
    ClassGlob p = new ClassGlob();
    it.set_classglob(p);
    history.push(p);
  }
  public void after_classglob(OneClassGlob source, ClassGlob dest) {
    history.pop();
  }
  public void before_globs(ClassGlobSet source, ClassGlob_Commalist dest) {
    ClassGlobSet it = (ClassGlobSet) history.peek();
    ClassGlob_Commalist p = new ClassGlob_Commalist();
    it.set_globs(p);
    history.push(p);
  }
  public void after_globs(ClassGlobSet source, ClassGlob_Commalist dest) {
    history.pop();
  }
  public void before_classes(ClassBehavior source, ClassGlobSpec dest) {
    ClassBehavior it = (ClassBehavior) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_classes((ClassGlobSpec) p);
    history.push(p);
  }
  public void after_classes(ClassBehavior source, ClassGlobSpec dest) {
    history.pop();
  }
  public void before_methods(ClassBehavior source, ClassMethods dest) {
    ClassBehavior it = (ClassBehavior) history.peek();
    ClassMethods p = new ClassMethods();
    it.set_methods(p);
    history.push(p);
  }
  public void after_methods(ClassBehavior source, ClassMethods dest) {
    history.pop();
  }
  public void before_methods(ClassMethods source, Method_SList dest) {
    ClassMethods it = (ClassMethods) history.peek();
    Method_SList p = new Method_SList();
    it.set_methods(p);
    history.push(p);
  }
  public void after_methods(ClassMethods source, Method_SList dest) {
    history.pop();
  }
  public void before_wrapperdict(ClassMethods source, Hashtable dest) {
    ClassMethods it = (ClassMethods) history.peek();
    it.set_wrapperdict(dest);
  }
  public void before_exactHosts(HostSet source, Hashtable dest) {
    HostSet it = (HostSet) history.peek();
    it.set_exactHosts(dest);
  }
  public void before_partnames(HostSet source, Hashtable dest) {
    HostSet it = (HostSet) history.peek();
    it.set_partnames(dest);
  }
  public void before_globs(HostSet source, GlobSet dest) {
    HostSet it = (HostSet) history.peek();
    GlobSet p = new GlobSet();
    it.set_globs(p);
    history.push(p);
  }
  public void after_globs(HostSet source, GlobSet dest) {
    history.pop();
  }
  public void before_name(TraversalDef source, TraversalName dest) {
    TraversalDef it = (TraversalDef) history.peek();
    TraversalName p = new TraversalName();
    it.set_name(p);
    history.push(p);
  }
  public void after_name(TraversalDef source, TraversalName dest) {
    history.pop();
  }
  public void before_parms(TraversalDef source, TraversalParms dest) {
    TraversalDef it = (TraversalDef) history.peek();
    TraversalParms p = new TraversalParms();
    it.set_parms(p);
    history.push(p);
  }
  public void after_parms(TraversalDef source, TraversalParms dest) {
    history.pop();
  }
  public void before_strat(TraversalDef source, StrategyExpression dest) {
    TraversalDef it = (TraversalDef) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_strat((StrategyExpression) p);
    history.push(p);
  }
  public void after_strat(TraversalDef source, StrategyExpression dest) {
    history.pop();
  }
  public void before_visitors(TraversalParms source, Visitor_Commalist dest) {
    TraversalParms it = (TraversalParms) history.peek();
    Visitor_Commalist p = new Visitor_Commalist();
    it.set_visitors(p);
    history.push(p);
  }
  public void after_visitors(TraversalParms source, Visitor_Commalist dest) {
    history.pop();
  }
  public void before_classname(Visitor source, ClassName dest) {
    Visitor it = (Visitor) history.peek();
    ClassName p = new ClassName();
    it.set_classname(p);
    history.push(p);
  }
  public void after_classname(Visitor source, ClassName dest) {
    history.pop();
  }
  public void before_visitorname(Visitor source, VisitorName dest) {
    Visitor it = (Visitor) history.peek();
    VisitorName p = new VisitorName();
    it.set_visitorname(p);
    history.push(p);
  }
  public void after_visitorname(Visitor source, VisitorName dest) {
    history.pop();
  }
  public void before_methodsignature(MethodDef source, MethodSignature dest) {
    MethodDef it = (MethodDef) history.peek();
    MethodSignature p = new MethodSignature();
    it.set_methodsignature(p);
    history.push(p);
  }
  public void after_methodsignature(MethodDef source, MethodSignature dest) {
    history.pop();
  }
  public void before_methodbody(MethodDef source, MethodBody dest) {
    MethodDef it = (MethodDef) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_methodbody((MethodBody) p);
    history.push(p);
  }
  public void after_methodbody(MethodDef source, MethodBody dest) {
    history.pop();
  }
  public void before_keywords(MethodSignature source, MethodKeyword_List dest) {
    MethodSignature it = (MethodSignature) history.peek();
    MethodKeyword_List p = new MethodKeyword_List();
    it.set_keywords(p);
    history.push(p);
  }
  public void after_keywords(MethodSignature source, MethodKeyword_List dest) {
    history.pop();
  }
  public void before_returnType(MethodSignature source, JavaType dest) {
    MethodSignature it = (MethodSignature) history.peek();
    JavaType p = new JavaType();
    it.set_returnType(p);
    history.push(p);
  }
  public void after_returnType(MethodSignature source, JavaType dest) {
    history.pop();
  }
  public void before_name(MethodSignature source, MethodName dest) {
    MethodSignature it = (MethodSignature) history.peek();
    MethodName p = new MethodName();
    it.set_name(p);
    history.push(p);
  }
  public void after_name(MethodSignature source, MethodName dest) {
    history.pop();
  }
  public void before_parms(MethodSignature source, MethodParm_Commalist dest) {
    MethodSignature it = (MethodSignature) history.peek();
    MethodParm_Commalist p = new MethodParm_Commalist();
    it.set_parms(p);
    history.push(p);
  }
  public void after_parms(MethodSignature source, MethodParm_Commalist dest) {
    history.pop();
  }
  public void before_throwsclause(MethodSignature source, Throws dest) {
    MethodSignature it = (MethodSignature) history.peek();
    Throws p = new Throws();
    it.set_throwsclause(p);
    history.push(p);
  }
  public void after_throwsclause(MethodSignature source, Throws dest) {
    history.pop();
  }
  public void before_type(MethodParm source, JavaType dest) {
    MethodParm it = (MethodParm) history.peek();
    JavaType p = new JavaType();
    it.set_type(p);
    history.push(p);
  }
  public void after_type(MethodParm source, JavaType dest) {
    history.pop();
  }
  public void before_array1(MethodParm source, ArraySpec_List dest) {
    MethodParm it = (MethodParm) history.peek();
    ArraySpec_List p = new ArraySpec_List();
    it.set_array1(p);
    history.push(p);
  }
  public void after_array1(MethodParm source, ArraySpec_List dest) {
    history.pop();
  }
  public void before_name(MethodParm source, ParmName dest) {
    MethodParm it = (MethodParm) history.peek();
    ParmName p = new ParmName();
    it.set_name(p);
    history.push(p);
  }
  public void after_name(MethodParm source, ParmName dest) {
    history.pop();
  }
  public void before_array2(MethodParm source, ArraySpec_List dest) {
    MethodParm it = (MethodParm) history.peek();
    ArraySpec_List p = new ArraySpec_List();
    it.set_array2(p);
    history.push(p);
  }
  public void after_array2(MethodParm source, ArraySpec_List dest) {
    history.pop();
  }
  public void before_exceptions(Throws source, ClassName_Commalist dest) {
    Throws it = (Throws) history.peek();
    ClassName_Commalist p = new ClassName_Commalist();
    it.set_exceptions(p);
    history.push(p);
  }
  public void after_exceptions(Throws source, ClassName_Commalist dest) {
    history.pop();
  }
  public void before_javacode(VerbatimMethodBody source, JavaCode dest) {
    VerbatimMethodBody it = (VerbatimMethodBody) history.peek();
    JavaCode p = new JavaCode();
    it.set_javacode(p);
    history.push(p);
  }
  public void after_javacode(VerbatimMethodBody source, JavaCode dest) {
    history.pop();
  }
  public void before_trv(AdaptiveMethodBody source, TraversalExpression dest) {
    AdaptiveMethodBody it = (AdaptiveMethodBody) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_trv((TraversalExpression) p);
    history.push(p);
  }
  public void after_trv(AdaptiveMethodBody source, TraversalExpression dest) {
    history.pop();
  }
  public void before_vis(AdaptiveMethodBody source, VisitorExpression dest) {
    AdaptiveMethodBody it = (AdaptiveMethodBody) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_vis((VisitorExpression) p);
    history.push(p);
  }
  public void after_vis(AdaptiveMethodBody source, VisitorExpression dest) {
    history.pop();
  }
  public void before_equals(TraversalRef source, Equals dest) {
    TraversalRef it = (TraversalRef) history.peek();
    Equals p = new Equals();
    it.set_equals(p);
    history.push(p);
  }
  public void after_equals(TraversalRef source, Equals dest) {
    history.pop();
  }
  public void before_name(TraversalRef source, TraversalName dest) {
    TraversalRef it = (TraversalRef) history.peek();
    TraversalName p = new TraversalName();
    it.set_name(p);
    history.push(p);
  }
  public void after_name(TraversalRef source, TraversalName dest) {
    history.pop();
  }
  public void before_strat(TraversalSpec source, StrategyExpression dest) {
    TraversalSpec it = (TraversalSpec) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_strat((StrategyExpression) p);
    history.push(p);
  }
  public void after_strat(TraversalSpec source, StrategyExpression dest) {
    history.pop();
  }
  public void before_visitorClasses(WithVisitorRef source, ClassName_Commalist dest) {
    WithVisitorRef it = (WithVisitorRef) history.peek();
    ClassName_Commalist p = new ClassName_Commalist();
    it.set_visitorClasses(p);
    history.push(p);
  }
  public void after_visitorClasses(WithVisitorRef source, ClassName_Commalist dest) {
    history.pop();
  }
  public void before_visitorClasses(ParenVisitorRef source, ClassName_Commalist dest) {
    ParenVisitorRef it = (ParenVisitorRef) history.peek();
    ClassName_Commalist p = new ClassName_Commalist();
    it.set_visitorClasses(p);
    history.push(p);
  }
  public void after_visitorClasses(ParenVisitorRef source, ClassName_Commalist dest) {
    history.pop();
  }
  public void before_methods(VisitorSpec source, ClassMethods dest) {
    VisitorSpec it = (VisitorSpec) history.peek();
    ClassMethods p = new ClassMethods();
    it.set_methods(p);
    history.push(p);
  }
  public void after_methods(VisitorSpec source, ClassMethods dest) {
    history.pop();
  }
  public void before_kind(Wrapper source, WrapperKind dest) {
    Wrapper it = (Wrapper) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_kind((WrapperKind) p);
    history.push(p);
  }
  public void after_kind(Wrapper source, WrapperKind dest) {
    history.pop();
  }
  public void before_hosts(Wrapper source, HostSpec dest) {
    Wrapper it = (Wrapper) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_hosts((HostSpec) p);
    history.push(p);
  }
  public void after_hosts(Wrapper source, HostSpec dest) {
    history.pop();
  }
  public void before_javacode(Wrapper source, JavaCode dest) {
    Wrapper it = (Wrapper) history.peek();
    JavaCode p = new JavaCode();
    it.set_javacode(p);
    history.push(p);
  }
  public void after_javacode(Wrapper source, JavaCode dest) {
    history.pop();
  }
  public void before_partname(Accessor source, PartName dest) {
    Accessor it = (Accessor) history.peek();
    PartName p = new PartName();
    it.set_partname(p);
    history.push(p);
  }
  public void after_partname(Accessor source, PartName dest) {
    history.pop();
  }
  public void before_javacode(Accessor source, JavaCode dest) {
    Accessor it = (Accessor) history.peek();
    JavaCode p = new JavaCode();
    it.set_javacode(p);
    history.push(p);
  }
  public void after_javacode(Accessor source, JavaCode dest) {
    history.pop();
  }
  public void before_javacode(Constructor source, JavaCode dest) {
    Constructor it = (Constructor) history.peek();
    JavaCode p = new JavaCode();
    it.set_javacode(p);
    history.push(p);
  }
  public void after_javacode(Constructor source, JavaCode dest) {
    history.pop();
  }
  public void before_javacode(Start source, JavaCode dest) {
    Start it = (Start) history.peek();
    JavaCode p = new JavaCode();
    it.set_javacode(p);
    history.push(p);
  }
  public void after_javacode(Start source, JavaCode dest) {
    history.pop();
  }
  public void before_javacode(Finish source, JavaCode dest) {
    Finish it = (Finish) history.peek();
    JavaCode p = new JavaCode();
    it.set_javacode(p);
    history.push(p);
  }
  public void after_javacode(Finish source, JavaCode dest) {
    history.pop();
  }
  public void before_type(ReturnValue source, JavaType dest) {
    ReturnValue it = (ReturnValue) history.peek();
    JavaType p = new JavaType();
    it.set_type(p);
    history.push(p);
  }
  public void after_type(ReturnValue source, JavaType dest) {
    history.pop();
  }
  public void before_exp(ReturnValue source, JavaCode dest) {
    ReturnValue it = (ReturnValue) history.peek();
    JavaCode p = new JavaCode();
    it.set_exp(p);
    history.push(p);
  }
  public void after_exp(ReturnValue source, JavaCode dest) {
    history.pop();
  }
  public void before_javacode(Verbatim source, JavaCode dest) {
    Verbatim it = (Verbatim) history.peek();
    JavaCode p = new JavaCode();
    it.set_javacode(p);
    history.push(p);
  }
  public void after_javacode(Verbatim source, JavaCode dest) {
    history.pop();
  }
  public void before_first(PackageName source, Nonempty_PackageName dest) {
    PackageName it = (PackageName) history.peek();
    Nonempty_PackageName p = new Nonempty_PackageName();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(PackageName source, Nonempty_PackageName dest) {
    history.pop();
  }
  public void before_name(ClassName source, Name dest) {
    ClassName it = (ClassName) history.peek();
    Name p = new Name();
    it.set_name(p);
    history.push(p);
  }
  public void after_name(ClassName source, Name dest) {
    history.pop();
  }
  public void before_name(PartName source, IdentOrKeyword dest) {
    PartName it = (PartName) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_name((IdentOrKeyword) p);
    history.push(p);
  }
  public void after_name(PartName source, IdentOrKeyword dest) {
    history.pop();
  }
  public void before_name(TraversalName source, Name dest) {
    TraversalName it = (TraversalName) history.peek();
    Name p = new Name();
    it.set_name(p);
    history.push(p);
  }
  public void after_name(TraversalName source, Name dest) {
    history.pop();
  }
  public void before_name(VisitorName source, Name dest) {
    VisitorName it = (VisitorName) history.peek();
    Name p = new Name();
    it.set_name(p);
    history.push(p);
  }
  public void after_name(VisitorName source, Name dest) {
    history.pop();
  }
  public void before_name(MethodName source, Ident dest) {
    MethodName it = (MethodName) history.peek();
    it.set_name(dest);
  }
  public void before_name(ParmName source, Ident dest) {
    ParmName it = (ParmName) history.peek();
    it.set_name(dest);
  }
  public void before_name(StrategyName source, Ident dest) {
    StrategyName it = (StrategyName) history.peek();
    it.set_name(dest);
  }
  public void before_type(JavaType source, Name dest) {
    JavaType it = (JavaType) history.peek();
    Name p = new Name();
    it.set_type(p);
    history.push(p);
  }
  public void after_type(JavaType source, Name dest) {
    history.pop();
  }
  public void before_code(JavaCode source, Text dest) {
    JavaCode it = (JavaCode) history.peek();
    it.set_code(dest);
  }
  public void before_first(Name source, Nonempty_Name dest) {
    Name it = (Name) history.peek();
    Nonempty_Name p = new Nonempty_Name();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(Name source, Nonempty_Name dest) {
    history.pop();
  }
  public void before_id(OtherIdent source, Ident dest) {
    OtherIdent it = (OtherIdent) history.peek();
    it.set_id(dest);
  }
  public void before_methodname(TraversalMethodName source, MethodName dest) {
    TraversalMethodName it = (TraversalMethodName) history.peek();
    MethodName p = new MethodName();
    it.set_methodname(p);
    history.push(p);
  }
  public void after_methodname(TraversalMethodName source, MethodName dest) {
    history.pop();
  }
  public void before_is_con(ClassType source, boolean dest) {
    ClassType it = (ClassType) history.peek();
    it.set_is_con(dest);
  }
  public void before_is_alt(ClassType source, boolean dest) {
    ClassType it = (ClassType) history.peek();
    it.set_is_alt(dest);
  }
  public void before_is_rep(ClassType source, boolean dest) {
    ClassType it = (ClassType) history.peek();
    it.set_is_rep(dest);
  }
  public void before_is_public(ClassType source, boolean dest) {
    ClassType it = (ClassType) history.peek();
    it.set_is_public(dest);
  }
  public void before_is_final(ClassType source, boolean dest) {
    ClassType it = (ClassType) history.peek();
    it.set_is_final(dest);
  }
  public void before_is_interface(ClassType source, boolean dest) {
    ClassType it = (ClassType) history.peek();
    it.set_is_interface(dest);
  }
  public void before_is_not_parsed(ClassType source, boolean dest) {
    ClassType it = (ClassType) history.peek();
    it.set_is_not_parsed(dest);
  }
  public void before_is_visitor(ClassType source, boolean dest) {
    ClassType it = (ClassType) history.peek();
    it.set_is_visitor(dest);
  }
  public void before_is_final(PartType source, boolean dest) {
    PartType it = (PartType) history.peek();
    it.set_is_final(dest);
  }
  public void before_is_static(PartType source, boolean dest) {
    PartType it = (PartType) history.peek();
    it.set_is_static(dest);
  }
  public void before_is_derived(PartType source, boolean dest) {
    PartType it = (PartType) history.peek();
    it.set_is_derived(dest);
  }
  public void before_has_getter(PartType source, boolean dest) {
    PartType it = (PartType) history.peek();
    it.set_has_getter(dest);
  }
  public void before_has_setter(PartType source, boolean dest) {
    PartType it = (PartType) history.peek();
    it.set_has_setter(dest);
  }
  public void before_first(Parts source, Nonempty_Parts dest) {
    Parts it = (Parts) history.peek();
    Nonempty_Parts p = new Nonempty_Parts();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(Parts source, Nonempty_Parts dest) {
    history.pop();
  }
  public void before_ugraph(PlacementVisitor source, UGraph dest) {
    PlacementVisitor it = (PlacementVisitor) history.peek();
    UGraph p = new UGraph();
    it.set_ugraph(p);
    history.push(p);
  }
  public void after_ugraph(PlacementVisitor source, UGraph dest) {
    history.pop();
  }
  public void before_edgetype(EdgeDistinctionVisitor source, String dest) {
    EdgeDistinctionVisitor it = (EdgeDistinctionVisitor) history.peek();
    it.set_edgetype(dest);
  }
  public void before_cn(ClassNameRetVisitor source, ClassName dest) {
    ClassNameRetVisitor it = (ClassNameRetVisitor) history.peek();
    ClassName p = new ClassName();
    it.set_cn(p);
    history.push(p);
  }
  public void after_cn(ClassNameRetVisitor source, ClassName dest) {
    history.pop();
  }
  public void before_pcn(ClassNameTranspVisitor source, ParamClassName dest) {
    ClassNameTranspVisitor it = (ClassNameTranspVisitor) history.peek();
    ParamClassName p = new ParamClassName();
    it.set_pcn(p);
    history.push(p);
  }
  public void after_pcn(ClassNameTranspVisitor source, ParamClassName dest) {
    history.pop();
  }
  public void before_edv(EdgeVisitor source, EdgeDistinctionVisitor dest) {
    EdgeVisitor it = (EdgeVisitor) history.peek();
    EdgeDistinctionVisitor p = new EdgeDistinctionVisitor();
    it.set_edv(p);
    history.push(p);
  }
  public void after_edv(EdgeVisitor source, EdgeDistinctionVisitor dest) {
    history.pop();
  }
  public void before_cntv(EdgeVisitor source, ClassNameTranspVisitor dest) {
    EdgeVisitor it = (EdgeVisitor) history.peek();
    ClassNameTranspVisitor p = new ClassNameTranspVisitor();
    it.set_cntv(p);
    history.push(p);
  }
  public void after_cntv(EdgeVisitor source, ClassNameTranspVisitor dest) {
    history.pop();
  }
  public void before_ugraph(EdgeVisitor source, UGraph dest) {
    EdgeVisitor it = (EdgeVisitor) history.peek();
    UGraph p = new UGraph();
    it.set_ugraph(p);
    history.push(p);
  }
  public void after_ugraph(EdgeVisitor source, UGraph dest) {
    history.pop();
  }
  public void before_thegraph(VertexReadingVisitor source, UGraph dest) {
    VertexReadingVisitor it = (VertexReadingVisitor) history.peek();
    UGraph p = new UGraph();
    it.set_thegraph(p);
    history.push(p);
  }
  public void after_thegraph(VertexReadingVisitor source, UGraph dest) {
    history.pop();
  }
  public void before_graphstring(VertexReadingVisitor source, String dest) {
    VertexReadingVisitor it = (VertexReadingVisitor) history.peek();
    it.set_graphstring(dest);
  }
  public void before_lookupvid(VertexReadingVisitor source, Integer dest) {
    VertexReadingVisitor it = (VertexReadingVisitor) history.peek();
    it.set_lookupvid(dest);
  }
  public void before_uppervalue(VertexReadingVisitor source, Integer dest) {
    VertexReadingVisitor it = (VertexReadingVisitor) history.peek();
    it.set_uppervalue(dest);
  }
  public void before_thegraph(EdgeReadingVisitor source, UGraph dest) {
    EdgeReadingVisitor it = (EdgeReadingVisitor) history.peek();
    UGraph p = new UGraph();
    it.set_thegraph(p);
    history.push(p);
  }
  public void after_thegraph(EdgeReadingVisitor source, UGraph dest) {
    history.pop();
  }
  public void before_graphstring(EdgeReadingVisitor source, String dest) {
    EdgeReadingVisitor it = (EdgeReadingVisitor) history.peek();
    it.set_graphstring(dest);
  }
  public void before_commonstring(EdgeReadingVisitor source, String dest) {
    EdgeReadingVisitor it = (EdgeReadingVisitor) history.peek();
    it.set_commonstring(dest);
  }
  public void before_lookupvid(EdgeReadingVisitor source, Integer dest) {
    EdgeReadingVisitor it = (EdgeReadingVisitor) history.peek();
    it.set_lookupvid(dest);
  }
  public void before_fromtype(EdgeReadingVisitor source, String dest) {
    EdgeReadingVisitor it = (EdgeReadingVisitor) history.peek();
    it.set_fromtype(dest);
  }
  public void before_pipeswitch(EdgeReadingVisitor source, Integer dest) {
    EdgeReadingVisitor it = (EdgeReadingVisitor) history.peek();
    it.set_pipeswitch(dest);
  }
  public void before_listswitch(EdgeReadingVisitor source, Integer dest) {
    EdgeReadingVisitor it = (EdgeReadingVisitor) history.peek();
    it.set_listswitch(dest);
  }
  public void before_elements(ReadVertexVisitor source, VertexContainer dest) {
    ReadVertexVisitor it = (ReadVertexVisitor) history.peek();
    VertexContainer p = new VertexContainer();
    it.set_elements(p);
    history.push(p);
  }
  public void after_elements(ReadVertexVisitor source, VertexContainer dest) {
    history.pop();
  }
  public void before_construction(VertexContainer source, Vector dest) {
    VertexContainer it = (VertexContainer) history.peek();
    it.set_construction(dest);
  }
  public void before_alternation(VertexContainer source, Vector dest) {
    VertexContainer it = (VertexContainer) history.peek();
    it.set_alternation(dest);
  }
  public void before_termination(VertexContainer source, Vector dest) {
    VertexContainer it = (VertexContainer) history.peek();
    it.set_termination(dest);
  }
  public void before_elements(ReadEdgeVisitor source, EdgeContainer dest) {
    ReadEdgeVisitor it = (ReadEdgeVisitor) history.peek();
    EdgeContainer p = new EdgeContainer();
    it.set_elements(p);
    history.push(p);
  }
  public void after_elements(ReadEdgeVisitor source, EdgeContainer dest) {
    history.pop();
  }
  public void before_construction(EdgeContainer source, Vector dest) {
    EdgeContainer it = (EdgeContainer) history.peek();
    it.set_construction(dest);
  }
  public void before_alternation(EdgeContainer source, Vector dest) {
    EdgeContainer it = (EdgeContainer) history.peek();
    it.set_alternation(dest);
  }
  public void before_total(CountingVisitor source, Integer dest) {
    CountingVisitor it = (CountingVisitor) history.peek();
    it.set_total(dest);
  }
  public void before_sv(ListVectorVisitor source, Vector dest) {
    ListVectorVisitor it = (ListVectorVisitor) history.peek();
    it.set_sv(dest);
  }
  public void before_dv(ListVectorVisitor source, Vector dest) {
    ListVectorVisitor it = (ListVectorVisitor) history.peek();
    it.set_dv(dest);
  }
  public void before_bv(ListVectorVisitor source, Vector dest) {
    ListVectorVisitor it = (ListVectorVisitor) history.peek();
    it.set_bv(dest);
  }
  public void before_duid(DecoCollectVisitor source, UID dest) {
    DecoCollectVisitor it = (DecoCollectVisitor) history.peek();
    UID p = new UID();
    it.set_duid(p);
    history.push(p);
  }
  public void after_duid(DecoCollectVisitor source, UID dest) {
    history.pop();
  }
  public void before_v(DecoCollectVisitor source, Vector dest) {
    DecoCollectVisitor it = (DecoCollectVisitor) history.peek();
    it.set_v(dest);
  }
  public void before_first(RepClassSpecVisitor source, Name dest) {
    RepClassSpecVisitor it = (RepClassSpecVisitor) history.peek();
    Name p = new Name();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(RepClassSpecVisitor source, Name dest) {
    history.pop();
  }
  public void before_inner(RepClassSpecVisitor source, Name dest) {
    RepClassSpecVisitor it = (RepClassSpecVisitor) history.peek();
    Name p = new Name();
    it.set_inner(p);
    history.push(p);
  }
  public void after_inner(RepClassSpecVisitor source, Name dest) {
    history.pop();
  }
  public void before_pos(PlaceVertexVisitor source, Coordinates dest) {
    PlaceVertexVisitor it = (PlaceVertexVisitor) history.peek();
    Coordinates p = new Coordinates();
    it.set_pos(p);
    history.push(p);
  }
  public void after_pos(PlaceVertexVisitor source, Coordinates dest) {
    history.pop();
  }
  public void before_vtable(PlaceVertexVisitor source, Hashtable dest) {
    PlaceVertexVisitor it = (PlaceVertexVisitor) history.peek();
    it.set_vtable(dest);
  }
  public void before_etable(PlaceVertexVisitor source, Hashtable dest) {
    PlaceVertexVisitor it = (PlaceVertexVisitor) history.peek();
    it.set_etable(dest);
  }
  public void before_uce(SomeClassSpecVisitor source, UConstEdge dest) {
    SomeClassSpecVisitor it = (SomeClassSpecVisitor) history.peek();
    UConstEdge p = new UConstEdge();
    it.set_uce(p);
    history.push(p);
  }
  public void after_uce(SomeClassSpecVisitor source, UConstEdge dest) {
    history.pop();
  }
  public void before_il(IntModVisitor source, InterfaceModifier_List dest) {
    IntModVisitor it = (IntModVisitor) history.peek();
    InterfaceModifier_List p = new InterfaceModifier_List();
    it.set_il(p);
    history.push(p);
  }
  public void after_il(IntModVisitor source, InterfaceModifier_List dest) {
    history.pop();
  }
  public void before_sl(ClassModVisitor source, ScopeIdentifier_List dest) {
    ClassModVisitor it = (ClassModVisitor) history.peek();
    ScopeIdentifier_List p = new ScopeIdentifier_List();
    it.set_sl(p);
    history.push(p);
  }
  public void after_sl(ClassModVisitor source, ScopeIdentifier_List dest) {
    history.pop();
  }
  public void before_pl(PartModVisitor source, PartModifier_List dest) {
    PartModVisitor it = (PartModVisitor) history.peek();
    PartModifier_List p = new PartModifier_List();
    it.set_pl(p);
    history.push(p);
  }
  public void after_pl(PartModVisitor source, PartModifier_List dest) {
    history.pop();
  }
  public void before_return_val(cdStringVisitor source, String dest) {
    cdStringVisitor it = (cdStringVisitor) history.peek();
    it.set_return_val(dest);
  }
  public void before_vtable(ConstVisitor source, Hashtable dest) {
    ConstVisitor it = (ConstVisitor) history.peek();
    it.set_vtable(dest);
  }
  public void before_etable(ConstVisitor source, Hashtable dest) {
    ConstVisitor it = (ConstVisitor) history.peek();
    it.set_etable(dest);
  }
  public void before_vtable(AltVisitor source, Hashtable dest) {
    AltVisitor it = (AltVisitor) history.peek();
    it.set_vtable(dest);
  }
  public void before_etable(AltVisitor source, Hashtable dest) {
    AltVisitor it = (AltVisitor) history.peek();
    it.set_etable(dest);
  }
  public void before_vtable(IntVisitor source, Hashtable dest) {
    IntVisitor it = (IntVisitor) history.peek();
    it.set_vtable(dest);
  }
  public void before_etable(IntVisitor source, Hashtable dest) {
    IntVisitor it = (IntVisitor) history.peek();
    it.set_etable(dest);
  }
  public void before_sg(SourceEdgeCollector source, StrategyGraph dest) {
    SourceEdgeCollector it = (SourceEdgeCollector) history.peek();
    StrategyGraph p = new StrategyGraph();
    it.set_sg(p);
    history.push(p);
  }
  public void after_sg(SourceEdgeCollector source, StrategyGraph dest) {
    history.pop();
  }
  public void before_edges(SourceEdgeCollector source, Integer_NList dest) {
    SourceEdgeCollector it = (SourceEdgeCollector) history.peek();
    Integer_NList p = new Integer_NList();
    it.set_edges(p);
    history.push(p);
  }
  public void after_edges(SourceEdgeCollector source, Integer_NList dest) {
    history.pop();
  }
  public void before_glob(GlobMatcher source, Glob dest) {
    GlobMatcher it = (GlobMatcher) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_glob((Glob) p);
    history.push(p);
  }
  public void after_glob(GlobMatcher source, Glob dest) {
    history.pop();
  }
  public void before_found_one(GlobMatcher source, boolean dest) {
    GlobMatcher it = (GlobMatcher) history.peek();
    it.set_found_one(dest);
  }
  public void before_spec(GlobCollector source, GlobSet dest) {
    GlobCollector it = (GlobCollector) history.peek();
    GlobSet p = new GlobSet();
    it.set_spec(p);
    history.push(p);
  }
  public void after_spec(GlobCollector source, GlobSet dest) {
    history.pop();
  }
  public void before_spec(ClassGlobCollector source, ClassGlobSet dest) {
    ClassGlobCollector it = (ClassGlobCollector) history.peek();
    ClassGlobSet p = new ClassGlobSet();
    it.set_spec(p);
    history.push(p);
  }
  public void after_spec(ClassGlobCollector source, ClassGlobSet dest) {
    history.pop();
  }
  public void before_spec(EdgeGlobCollector source, GlobSet dest) {
    EdgeGlobCollector it = (EdgeGlobCollector) history.peek();
    GlobSet p = new GlobSet();
    it.set_spec(p);
    history.push(p);
  }
  public void after_spec(EdgeGlobCollector source, GlobSet dest) {
    history.pop();
  }
  public void before_spec(OutgoingEdgeSpecConvertor source, GlobSet dest) {
    OutgoingEdgeSpecConvertor it = (OutgoingEdgeSpecConvertor) history.peek();
    GlobSet p = new GlobSet();
    it.set_spec(p);
    history.push(p);
  }
  public void after_spec(OutgoingEdgeSpecConvertor source, GlobSet dest) {
    history.pop();
  }
  public void before_c(SGEdgeMatcher source, ClassNameI dest) {
    SGEdgeMatcher it = (SGEdgeMatcher) history.peek();
    it.set_c(dest);
  }
  public void before_index(SGEdgeMatcher source, int dest) {
    SGEdgeMatcher it = (SGEdgeMatcher) history.peek();
    it.set_index(dest);
  }
  public void before_return_val(SGEdgeMatcher source, Vector dest) {
    SGEdgeMatcher it = (SGEdgeMatcher) history.peek();
    it.set_return_val(dest);
  }
  public void before_tg(TGVertexCollector source, TraversalGraph dest) {
    TGVertexCollector it = (TGVertexCollector) history.peek();
    it.set_tg(dest);
  }
  public void before_s(TGEdgeGlobMaker source, ClassName dest) {
    TGEdgeGlobMaker it = (TGEdgeGlobMaker) history.peek();
    ClassName p = new ClassName();
    it.set_s(p);
    history.push(p);
  }
  public void after_s(TGEdgeGlobMaker source, ClassName dest) {
    history.pop();
  }
  public void before_d(TGEdgeGlobMaker source, ClassName dest) {
    TGEdgeGlobMaker it = (TGEdgeGlobMaker) history.peek();
    ClassName p = new ClassName();
    it.set_d(p);
    history.push(p);
  }
  public void after_d(TGEdgeGlobMaker source, ClassName dest) {
    history.pop();
  }
  public void before_cl(TGEdgeGlobMaker source, ClassName dest) {
    TGEdgeGlobMaker it = (TGEdgeGlobMaker) history.peek();
    ClassName p = new ClassName();
    it.set_cl(p);
    history.push(p);
  }
  public void after_cl(TGEdgeGlobMaker source, ClassName dest) {
    history.pop();
  }
  public void before_name(TGEdgeGlobMaker source, PartName dest) {
    TGEdgeGlobMaker it = (TGEdgeGlobMaker) history.peek();
    PartName p = new PartName();
    it.set_name(p);
    history.push(p);
  }
  public void after_name(TGEdgeGlobMaker source, PartName dest) {
    history.pop();
  }
  public void before_return_val(TGEdgeGlobMaker source, Glob dest) {
    TGEdgeGlobMaker it = (TGEdgeGlobMaker) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_return_val((Glob) p);
    history.push(p);
  }
  public void after_return_val(TGEdgeGlobMaker source, Glob dest) {
    history.pop();
  }
  public void before_g(TGCreateVisitor source, TraversalGraph dest) {
    TGCreateVisitor it = (TGCreateVisitor) history.peek();
    it.set_g(dest);
  }
  public void before_vtable(TGCreateVisitor source, Hashtable dest) {
    TGCreateVisitor it = (TGCreateVisitor) history.peek();
    it.set_vtable(dest);
  }
  public void before_graphString(SaveGraphVisitor source, String dest) {
    SaveGraphVisitor it = (SaveGraphVisitor) history.peek();
    it.set_graphString(dest);
  }
  public void before_bflag(SelectMarkedVisitor source, boolean dest) {
    SelectMarkedVisitor it = (SelectMarkedVisitor) history.peek();
    it.set_bflag(dest);
  }
  public void before_cflag(SelectMarkedVisitor source, boolean dest) {
    SelectMarkedVisitor it = (SelectMarkedVisitor) history.peek();
    it.set_cflag(dest);
  }
  public void before_anyEdgeflag(SelectMarkedVisitor source, boolean dest) {
    SelectMarkedVisitor it = (SelectMarkedVisitor) history.peek();
    it.set_anyEdgeflag(dest);
  }
  public void before_graphString(SelectMarkedVisitor source, String dest) {
    SelectMarkedVisitor it = (SelectMarkedVisitor) history.peek();
    it.set_graphString(dest);
  }
  public void before_ioeString(SelectMarkedVisitor source, String dest) {
    SelectMarkedVisitor it = (SelectMarkedVisitor) history.peek();
    it.set_ioeString(dest);
  }
  public void before_names(SGraphCollector source, Vector dest) {
    SGraphCollector it = (SGraphCollector) history.peek();
    it.set_names(dest);
  }
  public void before_graphs(SGraphCollector source, Vector dest) {
    SGraphCollector it = (SGraphCollector) history.peek();
    it.set_graphs(dest);
  }
  public void before_names(VecVisitor source, Vector dest) {
    VecVisitor it = (VecVisitor) history.peek();
    it.set_names(dest);
  }
  public void before_name(StringVisitor source, String dest) {
    StringVisitor it = (StringVisitor) history.peek();
    it.set_name(dest);
  }
  public void before_indent(PrintVisitor source, int dest) {
    PrintVisitor it = (PrintVisitor) history.peek();
    it.set_indent(dest);
  }
  public void before_needSpace(PrintVisitor source, boolean dest) {
    PrintVisitor it = (PrintVisitor) history.peek();
    it.set_needSpace(dest);
  }
  public void before_is_equal(EqualVisitor source, boolean dest) {
    EqualVisitor it = (EqualVisitor) history.peek();
    it.set_is_equal(dest);
  }
  public void before_indent(DisplayVisitor source, int dest) {
    DisplayVisitor it = (DisplayVisitor) history.peek();
    it.set_indent(dest);
  }
  public void before_indent(TraceVisitor source, int dest) {
    TraceVisitor it = (TraceVisitor) history.peek();
    it.set_indent(dest);
  }
  public void before_first(Import_SList source, Nonempty_Import_SList dest) {
    Import_SList it = (Import_SList) history.peek();
    Nonempty_Import_SList p = new Nonempty_Import_SList();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(Import_SList source, Nonempty_Import_SList dest) {
    history.pop();
  }
  public void before_first(ClassGraphEntry_DList source, Nonempty_ClassGraphEntry_DList dest) {
    ClassGraphEntry_DList it = (ClassGraphEntry_DList) history.peek();
    Nonempty_ClassGraphEntry_DList p = new Nonempty_ClassGraphEntry_DList();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(ClassGraphEntry_DList source, Nonempty_ClassGraphEntry_DList dest) {
    history.pop();
  }
  public void before_first(ClassKeyword_List source, Nonempty_ClassKeyword_List dest) {
    ClassKeyword_List it = (ClassKeyword_List) history.peek();
    Nonempty_ClassKeyword_List p = new Nonempty_ClassKeyword_List();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(ClassKeyword_List source, Nonempty_ClassKeyword_List dest) {
    history.pop();
  }
  public void before_first(ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {
    ClassName_Commalist it = (ClassName_Commalist) history.peek();
    Nonempty_ClassName_Commalist p = new Nonempty_ClassName_Commalist();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {
    history.pop();
  }
  public void before_first(PartOrSyntax_List source, Nonempty_PartOrSyntax_List dest) {
    PartOrSyntax_List it = (PartOrSyntax_List) history.peek();
    Nonempty_PartOrSyntax_List p = new Nonempty_PartOrSyntax_List();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(PartOrSyntax_List source, Nonempty_PartOrSyntax_List dest) {
    history.pop();
  }
  public void before_first(PartKeyword_List source, Nonempty_PartKeyword_List dest) {
    PartKeyword_List it = (PartKeyword_List) history.peek();
    Nonempty_PartKeyword_List p = new Nonempty_PartKeyword_List();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(PartKeyword_List source, Nonempty_PartKeyword_List dest) {
    history.pop();
  }
  public void before_first(Part_Sandwich source, Syntax_List dest) {
    Part_Sandwich it = (Part_Sandwich) history.peek();
    Syntax_List p = new Syntax_List();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(Part_Sandwich source, Syntax_List dest) {
    history.pop();
  }
  public void before_inner(Part_Sandwich source, Part dest) {
    Part_Sandwich it = (Part_Sandwich) history.peek();
    Part p = new Part();
    it.set_inner(p);
    history.push(p);
  }
  public void after_inner(Part_Sandwich source, Part dest) {
    history.pop();
  }
  public void before_second(Part_Sandwich source, Syntax_List dest) {
    Part_Sandwich it = (Part_Sandwich) history.peek();
    Syntax_List p = new Syntax_List();
    it.set_second(p);
    history.push(p);
  }
  public void after_second(Part_Sandwich source, Syntax_List dest) {
    history.pop();
  }
  public void before_first(Superclass_Commalist source, Nonempty_Superclass_Commalist dest) {
    Superclass_Commalist it = (Superclass_Commalist) history.peek();
    Nonempty_Superclass_Commalist p = new Nonempty_Superclass_Commalist();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(Superclass_Commalist source, Nonempty_Superclass_Commalist dest) {
    history.pop();
  }
  public void before_first(Interface_Commalist source, Nonempty_Interface_Commalist dest) {
    Interface_Commalist it = (Interface_Commalist) history.peek();
    Nonempty_Interface_Commalist p = new Nonempty_Interface_Commalist();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(Interface_Commalist source, Nonempty_Interface_Commalist dest) {
    history.pop();
  }
  public void before_first(Subclass_Barlist source, Nonempty_Subclass_Barlist dest) {
    Subclass_Barlist it = (Subclass_Barlist) history.peek();
    Nonempty_Subclass_Barlist p = new Nonempty_Subclass_Barlist();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(Subclass_Barlist source, Nonempty_Subclass_Barlist dest) {
    history.pop();
  }
  public void before_first(RepeatedPart_Sandwich source, Syntax_List dest) {
    RepeatedPart_Sandwich it = (RepeatedPart_Sandwich) history.peek();
    Syntax_List p = new Syntax_List();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(RepeatedPart_Sandwich source, Syntax_List dest) {
    history.pop();
  }
  public void before_inner(RepeatedPart_Sandwich source, RepeatedPart dest) {
    RepeatedPart_Sandwich it = (RepeatedPart_Sandwich) history.peek();
    RepeatedPart p = new RepeatedPart();
    it.set_inner(p);
    history.push(p);
  }
  public void after_inner(RepeatedPart_Sandwich source, RepeatedPart dest) {
    history.pop();
  }
  public void before_second(RepeatedPart_Sandwich source, Syntax_List dest) {
    RepeatedPart_Sandwich it = (RepeatedPart_Sandwich) history.peek();
    Syntax_List p = new Syntax_List();
    it.set_second(p);
    history.push(p);
  }
  public void after_second(RepeatedPart_Sandwich source, Syntax_List dest) {
    history.pop();
  }
  public void before_first(ClassSpec_Sandwich source, Syntax_List dest) {
    ClassSpec_Sandwich it = (ClassSpec_Sandwich) history.peek();
    Syntax_List p = new Syntax_List();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(ClassSpec_Sandwich source, Syntax_List dest) {
    history.pop();
  }
  public void before_inner(ClassSpec_Sandwich source, ClassSpec dest) {
    ClassSpec_Sandwich it = (ClassSpec_Sandwich) history.peek();
    ClassSpec p = new ClassSpec();
    it.set_inner(p);
    history.push(p);
  }
  public void after_inner(ClassSpec_Sandwich source, ClassSpec dest) {
    history.pop();
  }
  public void before_second(ClassSpec_Sandwich source, Syntax_List dest) {
    ClassSpec_Sandwich it = (ClassSpec_Sandwich) history.peek();
    Syntax_List p = new Syntax_List();
    it.set_second(p);
    history.push(p);
  }
  public void after_second(ClassSpec_Sandwich source, Syntax_List dest) {
    history.pop();
  }
  public void before_first(Syntax_List source, Nonempty_Syntax_List dest) {
    Syntax_List it = (Syntax_List) history.peek();
    Nonempty_Syntax_List p = new Nonempty_Syntax_List();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(Syntax_List source, Nonempty_Syntax_List dest) {
    history.pop();
  }
  public void before_first(ClassSpec_Commalist source, Nonempty_ClassSpec_Commalist dest) {
    ClassSpec_Commalist it = (ClassSpec_Commalist) history.peek();
    Nonempty_ClassSpec_Commalist p = new Nonempty_ClassSpec_Commalist();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(ClassSpec_Commalist source, Nonempty_ClassSpec_Commalist dest) {
    history.pop();
  }
  public void before_first(Behavior_DList source, Nonempty_Behavior_DList dest) {
    Behavior_DList it = (Behavior_DList) history.peek();
    Nonempty_Behavior_DList p = new Nonempty_Behavior_DList();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(Behavior_DList source, Nonempty_Behavior_DList dest) {
    history.pop();
  }
  public void before_first(SGEdge_SList source, Nonempty_SGEdge_SList dest) {
    SGEdge_SList it = (SGEdge_SList) history.peek();
    Nonempty_SGEdge_SList p = new Nonempty_SGEdge_SList();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(SGEdge_SList source, Nonempty_SGEdge_SList dest) {
    history.pop();
  }
  public void before_first(Integer_NList source, Nonempty_Integer_NList dest) {
    Integer_NList it = (Integer_NList) history.peek();
    Nonempty_Integer_NList p = new Nonempty_Integer_NList();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(Integer_NList source, Nonempty_Integer_NList dest) {
    history.pop();
  }
  public void before_first(PathSegment_List source, Nonempty_PathSegment_List dest) {
    PathSegment_List it = (PathSegment_List) history.peek();
    Nonempty_PathSegment_List p = new Nonempty_PathSegment_List();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(PathSegment_List source, Nonempty_PathSegment_List dest) {
    history.pop();
  }
  public void before_first(StrategyExpression_Commalist source, Nonempty_StrategyExpression_Commalist dest) {
    StrategyExpression_Commalist it = (StrategyExpression_Commalist) history.peek();
    Nonempty_StrategyExpression_Commalist p = new Nonempty_StrategyExpression_Commalist();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(StrategyExpression_Commalist source, Nonempty_StrategyExpression_Commalist dest) {
    history.pop();
  }
  public void before_first(Glob_Commalist source, Nonempty_Glob_Commalist dest) {
    Glob_Commalist it = (Glob_Commalist) history.peek();
    Nonempty_Glob_Commalist p = new Nonempty_Glob_Commalist();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(Glob_Commalist source, Nonempty_Glob_Commalist dest) {
    history.pop();
  }
  public void before_first(ClassGlob_Commalist source, Nonempty_ClassGlob_Commalist dest) {
    ClassGlob_Commalist it = (ClassGlob_Commalist) history.peek();
    Nonempty_ClassGlob_Commalist p = new Nonempty_ClassGlob_Commalist();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(ClassGlob_Commalist source, Nonempty_ClassGlob_Commalist dest) {
    history.pop();
  }
  public void before_first(Method_SList source, Nonempty_Method_SList dest) {
    Method_SList it = (Method_SList) history.peek();
    Nonempty_Method_SList p = new Nonempty_Method_SList();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(Method_SList source, Nonempty_Method_SList dest) {
    history.pop();
  }
  public void before_first(Visitor_Commalist source, Nonempty_Visitor_Commalist dest) {
    Visitor_Commalist it = (Visitor_Commalist) history.peek();
    Nonempty_Visitor_Commalist p = new Nonempty_Visitor_Commalist();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(Visitor_Commalist source, Nonempty_Visitor_Commalist dest) {
    history.pop();
  }
  public void before_first(MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {
    MethodKeyword_List it = (MethodKeyword_List) history.peek();
    Nonempty_MethodKeyword_List p = new Nonempty_MethodKeyword_List();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {
    history.pop();
  }
  public void before_first(MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {
    MethodParm_Commalist it = (MethodParm_Commalist) history.peek();
    Nonempty_MethodParm_Commalist p = new Nonempty_MethodParm_Commalist();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {
    history.pop();
  }
  public void before_first(ArraySpec_List source, Nonempty_ArraySpec_List dest) {
    ArraySpec_List it = (ArraySpec_List) history.peek();
    Nonempty_ArraySpec_List p = new Nonempty_ArraySpec_List();
    it.set_first(p);
    history.push(p);
  }
  public void after_first(ArraySpec_List source, Nonempty_ArraySpec_List dest) {
    history.pop();
  }
  public void before_it(Nonempty_UVertex_List source, UVertex dest) {
    Nonempty_UVertex_List it = (Nonempty_UVertex_List) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_it((UVertex) p);
    history.push(p);
  }
  public void after_it(Nonempty_UVertex_List source, UVertex dest) {
    history.pop();
  }
  public void before_next(Nonempty_UVertex_List source, Nonempty_UVertex_List dest) {
    Nonempty_UVertex_List it = (Nonempty_UVertex_List) history.peek();
    Nonempty_UVertex_List p = new Nonempty_UVertex_List();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_UVertex_List source, Nonempty_UVertex_List dest) {
    history.pop();
  }
  public void before_it(Nonempty_IEdge_List source, UID dest) {
    Nonempty_IEdge_List it = (Nonempty_IEdge_List) history.peek();
    UID p = new UID();
    it.set_it(p);
    history.push(p);
  }
  public void after_it(Nonempty_IEdge_List source, UID dest) {
    history.pop();
  }
  public void before_next(Nonempty_IEdge_List source, Nonempty_IEdge_List dest) {
    Nonempty_IEdge_List it = (Nonempty_IEdge_List) history.peek();
    Nonempty_IEdge_List p = new Nonempty_IEdge_List();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_IEdge_List source, Nonempty_IEdge_List dest) {
    history.pop();
  }
  public void before_it(Nonempty_OEdge_List source, UID dest) {
    Nonempty_OEdge_List it = (Nonempty_OEdge_List) history.peek();
    UID p = new UID();
    it.set_it(p);
    history.push(p);
  }
  public void after_it(Nonempty_OEdge_List source, UID dest) {
    history.pop();
  }
  public void before_next(Nonempty_OEdge_List source, Nonempty_OEdge_List dest) {
    Nonempty_OEdge_List it = (Nonempty_OEdge_List) history.peek();
    Nonempty_OEdge_List p = new Nonempty_OEdge_List();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_OEdge_List source, Nonempty_OEdge_List dest) {
    history.pop();
  }
  public void before_it(Nonempty_InterfaceModifier_List source, InterfaceModifier dest) {
    Nonempty_InterfaceModifier_List it = (Nonempty_InterfaceModifier_List) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_it((InterfaceModifier) p);
    history.push(p);
  }
  public void after_it(Nonempty_InterfaceModifier_List source, InterfaceModifier dest) {
    history.pop();
  }
  public void before_next(Nonempty_InterfaceModifier_List source, Nonempty_InterfaceModifier_List dest) {
    Nonempty_InterfaceModifier_List it = (Nonempty_InterfaceModifier_List) history.peek();
    Nonempty_InterfaceModifier_List p = new Nonempty_InterfaceModifier_List();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_InterfaceModifier_List source, Nonempty_InterfaceModifier_List dest) {
    history.pop();
  }
  public void before_it(Nonempty_ScopeIdentifier_List source, ScopeIdentifier dest) {
    Nonempty_ScopeIdentifier_List it = (Nonempty_ScopeIdentifier_List) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_it((ScopeIdentifier) p);
    history.push(p);
  }
  public void after_it(Nonempty_ScopeIdentifier_List source, ScopeIdentifier dest) {
    history.pop();
  }
  public void before_next(Nonempty_ScopeIdentifier_List source, Nonempty_ScopeIdentifier_List dest) {
    Nonempty_ScopeIdentifier_List it = (Nonempty_ScopeIdentifier_List) history.peek();
    Nonempty_ScopeIdentifier_List p = new Nonempty_ScopeIdentifier_List();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_ScopeIdentifier_List source, Nonempty_ScopeIdentifier_List dest) {
    history.pop();
  }
  public void before_it(Nonempty_UEdge_List source, UEdge dest) {
    Nonempty_UEdge_List it = (Nonempty_UEdge_List) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_it((UEdge) p);
    history.push(p);
  }
  public void after_it(Nonempty_UEdge_List source, UEdge dest) {
    history.pop();
  }
  public void before_next(Nonempty_UEdge_List source, Nonempty_UEdge_List dest) {
    Nonempty_UEdge_List it = (Nonempty_UEdge_List) history.peek();
    Nonempty_UEdge_List p = new Nonempty_UEdge_List();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_UEdge_List source, Nonempty_UEdge_List dest) {
    history.pop();
  }
  public void before_it(Nonempty_PartModifier_List source, PartModifier dest) {
    Nonempty_PartModifier_List it = (Nonempty_PartModifier_List) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_it((PartModifier) p);
    history.push(p);
  }
  public void after_it(Nonempty_PartModifier_List source, PartModifier dest) {
    history.pop();
  }
  public void before_next(Nonempty_PartModifier_List source, Nonempty_PartModifier_List dest) {
    Nonempty_PartModifier_List it = (Nonempty_PartModifier_List) history.peek();
    Nonempty_PartModifier_List p = new Nonempty_PartModifier_List();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_PartModifier_List source, Nonempty_PartModifier_List dest) {
    history.pop();
  }
  public void before_it(Nonempty_PackageName source, IdentOrKeyword dest) {
    Nonempty_PackageName it = (Nonempty_PackageName) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_it((IdentOrKeyword) p);
    history.push(p);
  }
  public void after_it(Nonempty_PackageName source, IdentOrKeyword dest) {
    history.pop();
  }
  public void before_next(Nonempty_PackageName source, Nonempty_PackageName dest) {
    Nonempty_PackageName it = (Nonempty_PackageName) history.peek();
    Nonempty_PackageName p = new Nonempty_PackageName();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_PackageName source, Nonempty_PackageName dest) {
    history.pop();
  }
  public void before_it(Nonempty_Name source, Ident dest) {
    Nonempty_Name it = (Nonempty_Name) history.peek();
    it.set_it(dest);
  }
  public void before_next(Nonempty_Name source, Nonempty_Name dest) {
    Nonempty_Name it = (Nonempty_Name) history.peek();
    Nonempty_Name p = new Nonempty_Name();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_Name source, Nonempty_Name dest) {
    history.pop();
  }
  public void before_it(Nonempty_Parts source, Part dest) {
    Nonempty_Parts it = (Nonempty_Parts) history.peek();
    Part p = new Part();
    it.set_it(p);
    history.push(p);
  }
  public void after_it(Nonempty_Parts source, Part dest) {
    history.pop();
  }
  public void before_next(Nonempty_Parts source, Nonempty_Parts dest) {
    Nonempty_Parts it = (Nonempty_Parts) history.peek();
    Nonempty_Parts p = new Nonempty_Parts();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_Parts source, Nonempty_Parts dest) {
    history.pop();
  }
  public void before_it(Nonempty_Import_SList source, Import dest) {
    Nonempty_Import_SList it = (Nonempty_Import_SList) history.peek();
    Import p = new Import();
    it.set_it(p);
    history.push(p);
  }
  public void after_it(Nonempty_Import_SList source, Import dest) {
    history.pop();
  }
  public void before_next(Nonempty_Import_SList source, Nonempty_Import_SList dest) {
    Nonempty_Import_SList it = (Nonempty_Import_SList) history.peek();
    Nonempty_Import_SList p = new Nonempty_Import_SList();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_Import_SList source, Nonempty_Import_SList dest) {
    history.pop();
  }
  public void before_it(Nonempty_ClassGraphEntry_DList source, ClassGraphEntry dest) {
    Nonempty_ClassGraphEntry_DList it = (Nonempty_ClassGraphEntry_DList) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_it((ClassGraphEntry) p);
    history.push(p);
  }
  public void after_it(Nonempty_ClassGraphEntry_DList source, ClassGraphEntry dest) {
    history.pop();
  }
  public void before_next(Nonempty_ClassGraphEntry_DList source, Nonempty_ClassGraphEntry_DList dest) {
    Nonempty_ClassGraphEntry_DList it = (Nonempty_ClassGraphEntry_DList) history.peek();
    Nonempty_ClassGraphEntry_DList p = new Nonempty_ClassGraphEntry_DList();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_ClassGraphEntry_DList source, Nonempty_ClassGraphEntry_DList dest) {
    history.pop();
  }
  public void before_it(Nonempty_ClassKeyword_List source, ClassKeyword dest) {
    Nonempty_ClassKeyword_List it = (Nonempty_ClassKeyword_List) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_it((ClassKeyword) p);
    history.push(p);
  }
  public void after_it(Nonempty_ClassKeyword_List source, ClassKeyword dest) {
    history.pop();
  }
  public void before_next(Nonempty_ClassKeyword_List source, Nonempty_ClassKeyword_List dest) {
    Nonempty_ClassKeyword_List it = (Nonempty_ClassKeyword_List) history.peek();
    Nonempty_ClassKeyword_List p = new Nonempty_ClassKeyword_List();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_ClassKeyword_List source, Nonempty_ClassKeyword_List dest) {
    history.pop();
  }
  public void before_it(Nonempty_ClassName_Commalist source, ClassName dest) {
    Nonempty_ClassName_Commalist it = (Nonempty_ClassName_Commalist) history.peek();
    ClassName p = new ClassName();
    it.set_it(p);
    history.push(p);
  }
  public void after_it(Nonempty_ClassName_Commalist source, ClassName dest) {
    history.pop();
  }
  public void before_next(Nonempty_ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {
    Nonempty_ClassName_Commalist it = (Nonempty_ClassName_Commalist) history.peek();
    Nonempty_ClassName_Commalist p = new Nonempty_ClassName_Commalist();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {
    history.pop();
  }
  public void before_it(Nonempty_PartOrSyntax_List source, PartOrSyntax dest) {
    Nonempty_PartOrSyntax_List it = (Nonempty_PartOrSyntax_List) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_it((PartOrSyntax) p);
    history.push(p);
  }
  public void after_it(Nonempty_PartOrSyntax_List source, PartOrSyntax dest) {
    history.pop();
  }
  public void before_next(Nonempty_PartOrSyntax_List source, Nonempty_PartOrSyntax_List dest) {
    Nonempty_PartOrSyntax_List it = (Nonempty_PartOrSyntax_List) history.peek();
    Nonempty_PartOrSyntax_List p = new Nonempty_PartOrSyntax_List();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_PartOrSyntax_List source, Nonempty_PartOrSyntax_List dest) {
    history.pop();
  }
  public void before_it(Nonempty_PartKeyword_List source, PartKeyword dest) {
    Nonempty_PartKeyword_List it = (Nonempty_PartKeyword_List) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_it((PartKeyword) p);
    history.push(p);
  }
  public void after_it(Nonempty_PartKeyword_List source, PartKeyword dest) {
    history.pop();
  }
  public void before_next(Nonempty_PartKeyword_List source, Nonempty_PartKeyword_List dest) {
    Nonempty_PartKeyword_List it = (Nonempty_PartKeyword_List) history.peek();
    Nonempty_PartKeyword_List p = new Nonempty_PartKeyword_List();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_PartKeyword_List source, Nonempty_PartKeyword_List dest) {
    history.pop();
  }
  public void before_it(Nonempty_Superclass_Commalist source, Superclass dest) {
    Nonempty_Superclass_Commalist it = (Nonempty_Superclass_Commalist) history.peek();
    Superclass p = new Superclass();
    it.set_it(p);
    history.push(p);
  }
  public void after_it(Nonempty_Superclass_Commalist source, Superclass dest) {
    history.pop();
  }
  public void before_next(Nonempty_Superclass_Commalist source, Nonempty_Superclass_Commalist dest) {
    Nonempty_Superclass_Commalist it = (Nonempty_Superclass_Commalist) history.peek();
    Nonempty_Superclass_Commalist p = new Nonempty_Superclass_Commalist();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_Superclass_Commalist source, Nonempty_Superclass_Commalist dest) {
    history.pop();
  }
  public void before_it(Nonempty_Interface_Commalist source, Interface dest) {
    Nonempty_Interface_Commalist it = (Nonempty_Interface_Commalist) history.peek();
    Interface p = new Interface();
    it.set_it(p);
    history.push(p);
  }
  public void after_it(Nonempty_Interface_Commalist source, Interface dest) {
    history.pop();
  }
  public void before_next(Nonempty_Interface_Commalist source, Nonempty_Interface_Commalist dest) {
    Nonempty_Interface_Commalist it = (Nonempty_Interface_Commalist) history.peek();
    Nonempty_Interface_Commalist p = new Nonempty_Interface_Commalist();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_Interface_Commalist source, Nonempty_Interface_Commalist dest) {
    history.pop();
  }
  public void before_it(Nonempty_Subclass_Barlist source, Subclass dest) {
    Nonempty_Subclass_Barlist it = (Nonempty_Subclass_Barlist) history.peek();
    Subclass p = new Subclass();
    it.set_it(p);
    history.push(p);
  }
  public void after_it(Nonempty_Subclass_Barlist source, Subclass dest) {
    history.pop();
  }
  public void before_next(Nonempty_Subclass_Barlist source, Nonempty_Subclass_Barlist dest) {
    Nonempty_Subclass_Barlist it = (Nonempty_Subclass_Barlist) history.peek();
    Nonempty_Subclass_Barlist p = new Nonempty_Subclass_Barlist();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_Subclass_Barlist source, Nonempty_Subclass_Barlist dest) {
    history.pop();
  }
  public void before_it(Nonempty_Syntax_List source, Syntax dest) {
    Nonempty_Syntax_List it = (Nonempty_Syntax_List) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_it((Syntax) p);
    history.push(p);
  }
  public void after_it(Nonempty_Syntax_List source, Syntax dest) {
    history.pop();
  }
  public void before_next(Nonempty_Syntax_List source, Nonempty_Syntax_List dest) {
    Nonempty_Syntax_List it = (Nonempty_Syntax_List) history.peek();
    Nonempty_Syntax_List p = new Nonempty_Syntax_List();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_Syntax_List source, Nonempty_Syntax_List dest) {
    history.pop();
  }
  public void before_it(Nonempty_ClassSpec_Commalist source, ClassSpec dest) {
    Nonempty_ClassSpec_Commalist it = (Nonempty_ClassSpec_Commalist) history.peek();
    ClassSpec p = new ClassSpec();
    it.set_it(p);
    history.push(p);
  }
  public void after_it(Nonempty_ClassSpec_Commalist source, ClassSpec dest) {
    history.pop();
  }
  public void before_next(Nonempty_ClassSpec_Commalist source, Nonempty_ClassSpec_Commalist dest) {
    Nonempty_ClassSpec_Commalist it = (Nonempty_ClassSpec_Commalist) history.peek();
    Nonempty_ClassSpec_Commalist p = new Nonempty_ClassSpec_Commalist();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_ClassSpec_Commalist source, Nonempty_ClassSpec_Commalist dest) {
    history.pop();
  }
  public void before_it(Nonempty_Behavior_DList source, Behavior dest) {
    Nonempty_Behavior_DList it = (Nonempty_Behavior_DList) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_it((Behavior) p);
    history.push(p);
  }
  public void after_it(Nonempty_Behavior_DList source, Behavior dest) {
    history.pop();
  }
  public void before_next(Nonempty_Behavior_DList source, Nonempty_Behavior_DList dest) {
    Nonempty_Behavior_DList it = (Nonempty_Behavior_DList) history.peek();
    Nonempty_Behavior_DList p = new Nonempty_Behavior_DList();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_Behavior_DList source, Nonempty_Behavior_DList dest) {
    history.pop();
  }
  public void before_it(Nonempty_SGEdge_SList source, SGEdge dest) {
    Nonempty_SGEdge_SList it = (Nonempty_SGEdge_SList) history.peek();
    SGEdge p = new SGEdge();
    it.set_it(p);
    history.push(p);
  }
  public void after_it(Nonempty_SGEdge_SList source, SGEdge dest) {
    history.pop();
  }
  public void before_next(Nonempty_SGEdge_SList source, Nonempty_SGEdge_SList dest) {
    Nonempty_SGEdge_SList it = (Nonempty_SGEdge_SList) history.peek();
    Nonempty_SGEdge_SList p = new Nonempty_SGEdge_SList();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_SGEdge_SList source, Nonempty_SGEdge_SList dest) {
    history.pop();
  }
  public void before_it(Nonempty_Integer_NList source, Integer dest) {
    Nonempty_Integer_NList it = (Nonempty_Integer_NList) history.peek();
    it.set_it(dest);
  }
  public void before_next(Nonempty_Integer_NList source, Nonempty_Integer_NList dest) {
    Nonempty_Integer_NList it = (Nonempty_Integer_NList) history.peek();
    Nonempty_Integer_NList p = new Nonempty_Integer_NList();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_Integer_NList source, Nonempty_Integer_NList dest) {
    history.pop();
  }
  public void before_it(Nonempty_PathSegment_List source, PathSegment dest) {
    Nonempty_PathSegment_List it = (Nonempty_PathSegment_List) history.peek();
    PathSegment p = new PathSegment();
    it.set_it(p);
    history.push(p);
  }
  public void after_it(Nonempty_PathSegment_List source, PathSegment dest) {
    history.pop();
  }
  public void before_next(Nonempty_PathSegment_List source, Nonempty_PathSegment_List dest) {
    Nonempty_PathSegment_List it = (Nonempty_PathSegment_List) history.peek();
    Nonempty_PathSegment_List p = new Nonempty_PathSegment_List();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_PathSegment_List source, Nonempty_PathSegment_List dest) {
    history.pop();
  }
  public void before_it(Nonempty_StrategyExpression_Commalist source, StrategyExpression dest) {
    Nonempty_StrategyExpression_Commalist it = (Nonempty_StrategyExpression_Commalist) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_it((StrategyExpression) p);
    history.push(p);
  }
  public void after_it(Nonempty_StrategyExpression_Commalist source, StrategyExpression dest) {
    history.pop();
  }
  public void before_next(Nonempty_StrategyExpression_Commalist source, Nonempty_StrategyExpression_Commalist dest) {
    Nonempty_StrategyExpression_Commalist it = (Nonempty_StrategyExpression_Commalist) history.peek();
    Nonempty_StrategyExpression_Commalist p = new Nonempty_StrategyExpression_Commalist();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_StrategyExpression_Commalist source, Nonempty_StrategyExpression_Commalist dest) {
    history.pop();
  }
  public void before_it(Nonempty_Glob_Commalist source, Glob dest) {
    Nonempty_Glob_Commalist it = (Nonempty_Glob_Commalist) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_it((Glob) p);
    history.push(p);
  }
  public void after_it(Nonempty_Glob_Commalist source, Glob dest) {
    history.pop();
  }
  public void before_next(Nonempty_Glob_Commalist source, Nonempty_Glob_Commalist dest) {
    Nonempty_Glob_Commalist it = (Nonempty_Glob_Commalist) history.peek();
    Nonempty_Glob_Commalist p = new Nonempty_Glob_Commalist();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_Glob_Commalist source, Nonempty_Glob_Commalist dest) {
    history.pop();
  }
  public void before_it(Nonempty_ClassGlob_Commalist source, ClassGlob dest) {
    Nonempty_ClassGlob_Commalist it = (Nonempty_ClassGlob_Commalist) history.peek();
    ClassGlob p = new ClassGlob();
    it.set_it(p);
    history.push(p);
  }
  public void after_it(Nonempty_ClassGlob_Commalist source, ClassGlob dest) {
    history.pop();
  }
  public void before_next(Nonempty_ClassGlob_Commalist source, Nonempty_ClassGlob_Commalist dest) {
    Nonempty_ClassGlob_Commalist it = (Nonempty_ClassGlob_Commalist) history.peek();
    Nonempty_ClassGlob_Commalist p = new Nonempty_ClassGlob_Commalist();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_ClassGlob_Commalist source, Nonempty_ClassGlob_Commalist dest) {
    history.pop();
  }
  public void before_it(Nonempty_Method_SList source, Method dest) {
    Nonempty_Method_SList it = (Nonempty_Method_SList) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_it((Method) p);
    history.push(p);
  }
  public void after_it(Nonempty_Method_SList source, Method dest) {
    history.pop();
  }
  public void before_next(Nonempty_Method_SList source, Nonempty_Method_SList dest) {
    Nonempty_Method_SList it = (Nonempty_Method_SList) history.peek();
    Nonempty_Method_SList p = new Nonempty_Method_SList();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_Method_SList source, Nonempty_Method_SList dest) {
    history.pop();
  }
  public void before_it(Nonempty_Visitor_Commalist source, Visitor dest) {
    Nonempty_Visitor_Commalist it = (Nonempty_Visitor_Commalist) history.peek();
    Visitor p = new Visitor();
    it.set_it(p);
    history.push(p);
  }
  public void after_it(Nonempty_Visitor_Commalist source, Visitor dest) {
    history.pop();
  }
  public void before_next(Nonempty_Visitor_Commalist source, Nonempty_Visitor_Commalist dest) {
    Nonempty_Visitor_Commalist it = (Nonempty_Visitor_Commalist) history.peek();
    Nonempty_Visitor_Commalist p = new Nonempty_Visitor_Commalist();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_Visitor_Commalist source, Nonempty_Visitor_Commalist dest) {
    history.pop();
  }
  public void before_it(Nonempty_MethodKeyword_List source, MethodKeyword dest) {
    Nonempty_MethodKeyword_List it = (Nonempty_MethodKeyword_List) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_it((MethodKeyword) p);
    history.push(p);
  }
  public void after_it(Nonempty_MethodKeyword_List source, MethodKeyword dest) {
    history.pop();
  }
  public void before_next(Nonempty_MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {
    Nonempty_MethodKeyword_List it = (Nonempty_MethodKeyword_List) history.peek();
    Nonempty_MethodKeyword_List p = new Nonempty_MethodKeyword_List();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {
    history.pop();
  }
  public void before_it(Nonempty_MethodParm_Commalist source, MethodParm dest) {
    Nonempty_MethodParm_Commalist it = (Nonempty_MethodParm_Commalist) history.peek();
    MethodParm p = new MethodParm();
    it.set_it(p);
    history.push(p);
  }
  public void after_it(Nonempty_MethodParm_Commalist source, MethodParm dest) {
    history.pop();
  }
  public void before_next(Nonempty_MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {
    Nonempty_MethodParm_Commalist it = (Nonempty_MethodParm_Commalist) history.peek();
    Nonempty_MethodParm_Commalist p = new Nonempty_MethodParm_Commalist();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {
    history.pop();
  }
  public void before_it(Nonempty_ArraySpec_List source, ArraySpec dest) {
    Nonempty_ArraySpec_List it = (Nonempty_ArraySpec_List) history.peek();
    ArraySpec p = new ArraySpec();
    it.set_it(p);
    history.push(p);
  }
  public void after_it(Nonempty_ArraySpec_List source, ArraySpec dest) {
    history.pop();
  }
  public void before_next(Nonempty_ArraySpec_List source, Nonempty_ArraySpec_List dest) {
    Nonempty_ArraySpec_List it = (Nonempty_ArraySpec_List) history.peek();
    Nonempty_ArraySpec_List p = new Nonempty_ArraySpec_List();
    it.set_next(p);
    history.push(p);
  }
  public void after_next(Nonempty_ArraySpec_List source, Nonempty_ArraySpec_List dest) {
    history.pop();
  }
  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_);
    Object copy = get_copy();
    super.universal_trv0(_v_);
    universal_trv0_aft(_v_);
  }
}

