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

    protected java.io.PrintWriter out = new java.io.PrintWriter(System.out, true);
    java.io.PrintWriter get_out()             { return out; }
    void set_out(java.io.PrintWriter new_out) { out = new_out; }
    TraceVisitor(java.io.PrintWriter out)     { set_out(out); }
    TraceVisitor(java.io.PrintStream out)
      { set_out(new java.io.PrintWriter(out, true)); }
  
  public void finish() { out.flush(); }
  public void before(DAJ host) {
    out.println("before DAJ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(DAJ host) {
    out.println("after DAJ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_traversalaspect_list(DAJ source, TraversalAspect_List dest) {
    out.println("before -> DAJ, traversalaspect_list, TraversalAspect_List ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_traversalaspect_list(DAJ source, TraversalAspect_List dest) {
    out.println("after -> DAJ, traversalaspect_list, TraversalAspect_List ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(TraversalAspect host) {
    out.println("before TraversalAspect");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(TraversalAspect host) {
    out.println("after TraversalAspect");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_aspectname(TraversalAspect source, AspectName dest) {
    out.println("before -> TraversalAspect, aspectname, AspectName ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_aspectname(TraversalAspect source, AspectName dest) {
    out.println("after -> TraversalAspect, aspectname, AspectName ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_decls(TraversalAspect source, Definition_CurlyList dest) {
    out.println("before -> TraversalAspect, decls, Definition_CurlyList ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_decls(TraversalAspect source, Definition_CurlyList dest) {
    out.println("after -> TraversalAspect, decls, Definition_CurlyList ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Definition host) {
    out.println("before Definition");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Definition host) {
    out.println("after Definition");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_definitionbody(Definition source, DefinitionBody dest) {
    out.println("before -> Definition, definitionbody, DefinitionBody ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_definitionbody(Definition source, DefinitionBody dest) {
    out.println("after -> Definition, definitionbody, DefinitionBody ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(DefinitionBody host) {
    out.println("before DefinitionBody");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(DefinitionBody host) {
    out.println("after DefinitionBody");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(CG host) {
    out.println("before CG");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(CG host) {
    out.println("after CG");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_classgraphname(CG source, ClassGraphName dest) {
    out.println("before -> CG, classgraphname, ClassGraphName ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_classgraphname(CG source, ClassGraphName dest) {
    out.println("after -> CG, classgraphname, ClassGraphName ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Strategy host) {
    out.println("before Strategy");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Strategy host) {
    out.println("after Strategy");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_strategyname(Strategy source, StrategyName dest) {
    out.println("before -> Strategy, strategyname, StrategyName ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_strategyname(Strategy source, StrategyName dest) {
    out.println("after -> Strategy, strategyname, StrategyName ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_strategyexpression(Strategy source, StrategyExpression dest) {
    out.println("before -> Strategy, strategyexpression, StrategyExpression ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_strategyexpression(Strategy source, StrategyExpression dest) {
    out.println("after -> Strategy, strategyexpression, StrategyExpression ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(StrategyExpression host) {
    out.println("before StrategyExpression");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(StrategyExpression host) {
    out.println("after StrategyExpression");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Simple host) {
    out.println("before Simple");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Simple host) {
    out.println("after Simple");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(StrategyString host) {
    out.println("before StrategyString");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(StrategyString host) {
    out.println("after StrategyString");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_string(StrategyString source, String dest) {
    out.println("before -> StrategyString, string, String ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_string(StrategyString source, String dest) {
    out.println("after -> StrategyString, string, String ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Compound host) {
    out.println("before Compound");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Compound host) {
    out.println("after Compound");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_op(Compound source, Op dest) {
    out.println("before -> Compound, op, Op ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_op(Compound source, Op dest) {
    out.println("after -> Compound, op, Op ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_strategyexpression_list(Compound source, StrategyExpression_List dest) {
    out.println("before -> Compound, strategyexpression_list, StrategyExpression_List ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_strategyexpression_list(Compound source, StrategyExpression_List dest) {
    out.println("after -> Compound, strategyexpression_list, StrategyExpression_List ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Op host) {
    out.println("before Op");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Op host) {
    out.println("after Op");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(And host) {
    out.println("before And");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(And host) {
    out.println("after And");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(AdaptiveMethod host) {
    out.println("before AdaptiveMethod");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(AdaptiveMethod host) {
    out.println("after AdaptiveMethod");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_methodsignature(AdaptiveMethod source, MethodSignature dest) {
    out.println("before -> AdaptiveMethod, methodsignature, MethodSignature ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_methodsignature(AdaptiveMethod source, MethodSignature dest) {
    out.println("after -> AdaptiveMethod, methodsignature, MethodSignature ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_methodbody(AdaptiveMethod source, MethodBody dest) {
    out.println("before -> AdaptiveMethod, methodbody, MethodBody ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_methodbody(AdaptiveMethod source, MethodBody dest) {
    out.println("after -> AdaptiveMethod, methodbody, MethodBody ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(MethodSignature host) {
    out.println("before MethodSignature");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(MethodSignature host) {
    out.println("after MethodSignature");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_keywords(MethodSignature source, MethodKeyword_List dest) {
    out.println("before -> MethodSignature, keywords, MethodKeyword_List ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_keywords(MethodSignature source, MethodKeyword_List dest) {
    out.println("after -> MethodSignature, keywords, MethodKeyword_List ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_returnType(MethodSignature source, JavaType dest) {
    out.println("before -> MethodSignature, returnType, JavaType ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_returnType(MethodSignature source, JavaType dest) {
    out.println("after -> MethodSignature, returnType, JavaType ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_name(MethodSignature source, MethodName dest) {
    out.println("before -> MethodSignature, name, MethodName ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_name(MethodSignature source, MethodName dest) {
    out.println("after -> MethodSignature, name, MethodName ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_parms(MethodSignature source, MethodParm_Commalist dest) {
    out.println("before -> MethodSignature, parms, MethodParm_Commalist ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_parms(MethodSignature source, MethodParm_Commalist dest) {
    out.println("after -> MethodSignature, parms, MethodParm_Commalist ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_throwsclause(MethodSignature source, Throws dest) {
    out.println("before -> MethodSignature, throwsclause, Throws ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_throwsclause(MethodSignature source, Throws dest) {
    out.println("after -> MethodSignature, throwsclause, Throws ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(MethodKeyword host) {
    out.println("before MethodKeyword");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(MethodKeyword host) {
    out.println("after MethodKeyword");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(PublicMethod host) {
    out.println("before PublicMethod");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(PublicMethod host) {
    out.println("after PublicMethod");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(ProtectedMethod host) {
    out.println("before ProtectedMethod");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(ProtectedMethod host) {
    out.println("after ProtectedMethod");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(PrivateMethod host) {
    out.println("before PrivateMethod");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(PrivateMethod host) {
    out.println("after PrivateMethod");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(StaticMethod host) {
    out.println("before StaticMethod");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(StaticMethod host) {
    out.println("after StaticMethod");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(FinalMethod host) {
    out.println("before FinalMethod");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(FinalMethod host) {
    out.println("after FinalMethod");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(MethodParm host) {
    out.println("before MethodParm");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(MethodParm host) {
    out.println("after MethodParm");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_type(MethodParm source, JavaType dest) {
    out.println("before -> MethodParm, type, JavaType ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_type(MethodParm source, JavaType dest) {
    out.println("after -> MethodParm, type, JavaType ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_name(MethodParm source, ParmName dest) {
    out.println("before -> MethodParm, name, ParmName ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_name(MethodParm source, ParmName dest) {
    out.println("after -> MethodParm, name, ParmName ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_array(MethodParm source, ArraySpec_List dest) {
    out.println("before -> MethodParm, array, ArraySpec_List ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_array(MethodParm source, ArraySpec_List dest) {
    out.println("after -> MethodParm, array, ArraySpec_List ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Throws host) {
    out.println("before Throws");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Throws host) {
    out.println("after Throws");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_exceptions(Throws source, ClassName_Commalist dest) {
    out.println("before -> Throws, exceptions, ClassName_Commalist ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_exceptions(Throws source, ClassName_Commalist dest) {
    out.println("after -> Throws, exceptions, ClassName_Commalist ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(MethodBody host) {
    out.println("before MethodBody");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(MethodBody host) {
    out.println("after MethodBody");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_trv(MethodBody source, StrategyExpression dest) {
    out.println("before -> MethodBody, trv, StrategyExpression ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_trv(MethodBody source, StrategyExpression dest) {
    out.println("after -> MethodBody, trv, StrategyExpression ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_vis(MethodBody source, VisitorRef dest) {
    out.println("before -> MethodBody, vis, VisitorRef ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_vis(MethodBody source, VisitorRef dest) {
    out.println("after -> MethodBody, vis, VisitorRef ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(VisitorRef host) {
    out.println("before VisitorRef");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(VisitorRef host) {
    out.println("after VisitorRef");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_visitorClasses(VisitorRef source, ClassName_Commalist dest) {
    out.println("before -> VisitorRef, visitorClasses, ClassName_Commalist ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_visitorClasses(VisitorRef source, ClassName_Commalist dest) {
    out.println("after -> VisitorRef, visitorClasses, ClassName_Commalist ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(JavaType host) {
    out.println("before JavaType");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(JavaType host) {
    out.println("after JavaType");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_type(JavaType source, Name dest) {
    out.println("before -> JavaType, type, Name ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_type(JavaType source, Name dest) {
    out.println("after -> JavaType, type, Name ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_array(JavaType source, ArraySpec_List dest) {
    out.println("before -> JavaType, array, ArraySpec_List ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_array(JavaType source, ArraySpec_List dest) {
    out.println("after -> JavaType, array, ArraySpec_List ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(ArraySpec host) {
    out.println("before ArraySpec");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(ArraySpec host) {
    out.println("after ArraySpec");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Name host) {
    out.println("before Name");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Name host) {
    out.println("after Name");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_first(Name source, Nonempty_Name dest) {
    out.println("before -> Name, first, Nonempty_Name ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_first(Name source, Nonempty_Name dest) {
    out.println("after -> Name, first, Nonempty_Name ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(ClassGraphName host) {
    out.println("before ClassGraphName");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(ClassGraphName host) {
    out.println("after ClassGraphName");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_ident(ClassGraphName source, Ident dest) {
    out.println("before -> ClassGraphName, ident, Ident ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_ident(ClassGraphName source, Ident dest) {
    out.println("after -> ClassGraphName, ident, Ident ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(StrategyName host) {
    out.println("before StrategyName");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(StrategyName host) {
    out.println("after StrategyName");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_ident(StrategyName source, Ident dest) {
    out.println("before -> StrategyName, ident, Ident ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_ident(StrategyName source, Ident dest) {
    out.println("after -> StrategyName, ident, Ident ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(MethodName host) {
    out.println("before MethodName");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(MethodName host) {
    out.println("after MethodName");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_ident(MethodName source, Ident dest) {
    out.println("before -> MethodName, ident, Ident ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_ident(MethodName source, Ident dest) {
    out.println("after -> MethodName, ident, Ident ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(ClassName host) {
    out.println("before ClassName");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(ClassName host) {
    out.println("after ClassName");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_name(ClassName source, Name dest) {
    out.println("before -> ClassName, name, Name ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_name(ClassName source, Name dest) {
    out.println("after -> ClassName, name, Name ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(ParmName host) {
    out.println("before ParmName");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(ParmName host) {
    out.println("after ParmName");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_name(ParmName source, Ident dest) {
    out.println("before -> ParmName, name, Ident ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_name(ParmName source, Ident dest) {
    out.println("after -> ParmName, name, Ident ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(AspectName host) {
    out.println("before AspectName");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(AspectName host) {
    out.println("after AspectName");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_name(AspectName source, Name dest) {
    out.println("before -> AspectName, name, Name ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_name(AspectName source, Name dest) {
    out.println("after -> AspectName, name, Name ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Main host) {
    out.println("before Main");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Main host) {
    out.println("after Main");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_s(Main source, String dest) {
    out.println("before -> Main, s, String ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_s(Main source, String dest) {
    out.println("after -> Main, s, String ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(PrintVisitor host) {
    out.println("before PrintVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(PrintVisitor host) {
    out.println("after PrintVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_indent(PrintVisitor source, int dest) {
    out.println("before -> PrintVisitor, indent, int ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_indent(PrintVisitor source, int dest) {
    out.println("after -> PrintVisitor, indent, int ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_needSpace(PrintVisitor source, boolean dest) {
    out.println("before -> PrintVisitor, needSpace, boolean ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_needSpace(PrintVisitor source, boolean dest) {
    out.println("after -> PrintVisitor, needSpace, boolean ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(CopyVisitor host) {
    out.println("before CopyVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(CopyVisitor host) {
    out.println("after CopyVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_copy(CopyVisitor source, Object dest) {
    out.println("before -> CopyVisitor, copy, Object ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_copy(CopyVisitor source, Object dest) {
    out.println("after -> CopyVisitor, copy, Object ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(SubgraphVisitor host) {
    out.println("before SubgraphVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(SubgraphVisitor host) {
    out.println("after SubgraphVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_is_equal(SubgraphVisitor source, boolean dest) {
    out.println("before -> SubgraphVisitor, is_equal, boolean ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_is_equal(SubgraphVisitor source, boolean dest) {
    out.println("after -> SubgraphVisitor, is_equal, boolean ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(EqualVisitor host) {
    out.println("before EqualVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(EqualVisitor host) {
    out.println("after EqualVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_is_equal(EqualVisitor source, boolean dest) {
    out.println("before -> EqualVisitor, is_equal, boolean ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_is_equal(EqualVisitor source, boolean dest) {
    out.println("after -> EqualVisitor, is_equal, boolean ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(DisplayVisitor host) {
    out.println("before DisplayVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(DisplayVisitor host) {
    out.println("after DisplayVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_indent(DisplayVisitor source, int dest) {
    out.println("before -> DisplayVisitor, indent, int ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_indent(DisplayVisitor source, int dest) {
    out.println("after -> DisplayVisitor, indent, int ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(TraceVisitor host) {
    out.println("before TraceVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(TraceVisitor host) {
    out.println("after TraceVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_indent(TraceVisitor source, int dest) {
    out.println("before -> TraceVisitor, indent, int ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_indent(TraceVisitor source, int dest) {
    out.println("after -> TraceVisitor, indent, int ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(UniversalVisitor host) {
    out.println("before UniversalVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(UniversalVisitor host) {
    out.println("after UniversalVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(TraversalAspect_List host) {
    out.println("before TraversalAspect_List");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(TraversalAspect_List host) {
    out.println("after TraversalAspect_List");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_first(TraversalAspect_List source, Nonempty_TraversalAspect_List dest) {
    out.println("before -> TraversalAspect_List, first, Nonempty_TraversalAspect_List ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_first(TraversalAspect_List source, Nonempty_TraversalAspect_List dest) {
    out.println("after -> TraversalAspect_List, first, Nonempty_TraversalAspect_List ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Definition_CurlyList host) {
    out.println("before Definition_CurlyList");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Definition_CurlyList host) {
    out.println("after Definition_CurlyList");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_first(Definition_CurlyList source, Nonempty_Definition_CurlyList dest) {
    out.println("before -> Definition_CurlyList, first, Nonempty_Definition_CurlyList ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_first(Definition_CurlyList source, Nonempty_Definition_CurlyList dest) {
    out.println("after -> Definition_CurlyList, first, Nonempty_Definition_CurlyList ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(StrategyExpression_List host) {
    out.println("before StrategyExpression_List");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(StrategyExpression_List host) {
    out.println("after StrategyExpression_List");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_first(StrategyExpression_List source, Nonempty_StrategyExpression_List dest) {
    out.println("before -> StrategyExpression_List, first, Nonempty_StrategyExpression_List ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_first(StrategyExpression_List source, Nonempty_StrategyExpression_List dest) {
    out.println("after -> StrategyExpression_List, first, Nonempty_StrategyExpression_List ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(MethodKeyword_List host) {
    out.println("before MethodKeyword_List");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(MethodKeyword_List host) {
    out.println("after MethodKeyword_List");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_first(MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {
    out.println("before -> MethodKeyword_List, first, Nonempty_MethodKeyword_List ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_first(MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {
    out.println("after -> MethodKeyword_List, first, Nonempty_MethodKeyword_List ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(MethodParm_Commalist host) {
    out.println("before MethodParm_Commalist");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(MethodParm_Commalist host) {
    out.println("after MethodParm_Commalist");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_first(MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {
    out.println("before -> MethodParm_Commalist, first, Nonempty_MethodParm_Commalist ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_first(MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {
    out.println("after -> MethodParm_Commalist, first, Nonempty_MethodParm_Commalist ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(ArraySpec_List host) {
    out.println("before ArraySpec_List");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(ArraySpec_List host) {
    out.println("after ArraySpec_List");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_first(ArraySpec_List source, Nonempty_ArraySpec_List dest) {
    out.println("before -> ArraySpec_List, first, Nonempty_ArraySpec_List ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_first(ArraySpec_List source, Nonempty_ArraySpec_List dest) {
    out.println("after -> ArraySpec_List, first, Nonempty_ArraySpec_List ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(ClassName_Commalist host) {
    out.println("before ClassName_Commalist");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(ClassName_Commalist host) {
    out.println("after ClassName_Commalist");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_first(ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {
    out.println("before -> ClassName_Commalist, first, Nonempty_ClassName_Commalist ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_first(ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {
    out.println("after -> ClassName_Commalist, first, Nonempty_ClassName_Commalist ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Nonempty_Name host) {
    out.println("before Nonempty_Name");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Nonempty_Name host) {
    out.println("after Nonempty_Name");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_it(Nonempty_Name source, Ident dest) {
    out.println("before -> Nonempty_Name, it, Ident ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_it(Nonempty_Name source, Ident dest) {
    out.println("after -> Nonempty_Name, it, Ident ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_next(Nonempty_Name source, Nonempty_Name dest) {
    out.println("before -> Nonempty_Name, next, Nonempty_Name ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_next(Nonempty_Name source, Nonempty_Name dest) {
    out.println("after -> Nonempty_Name, next, Nonempty_Name ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Nonempty_TraversalAspect_List host) {
    out.println("before Nonempty_TraversalAspect_List");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Nonempty_TraversalAspect_List host) {
    out.println("after Nonempty_TraversalAspect_List");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_it(Nonempty_TraversalAspect_List source, TraversalAspect dest) {
    out.println("before -> Nonempty_TraversalAspect_List, it, TraversalAspect ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_it(Nonempty_TraversalAspect_List source, TraversalAspect dest) {
    out.println("after -> Nonempty_TraversalAspect_List, it, TraversalAspect ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_next(Nonempty_TraversalAspect_List source, Nonempty_TraversalAspect_List dest) {
    out.println("before -> Nonempty_TraversalAspect_List, next, Nonempty_TraversalAspect_List ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_next(Nonempty_TraversalAspect_List source, Nonempty_TraversalAspect_List dest) {
    out.println("after -> Nonempty_TraversalAspect_List, next, Nonempty_TraversalAspect_List ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Nonempty_Definition_CurlyList host) {
    out.println("before Nonempty_Definition_CurlyList");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Nonempty_Definition_CurlyList host) {
    out.println("after Nonempty_Definition_CurlyList");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_it(Nonempty_Definition_CurlyList source, Definition dest) {
    out.println("before -> Nonempty_Definition_CurlyList, it, Definition ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_it(Nonempty_Definition_CurlyList source, Definition dest) {
    out.println("after -> Nonempty_Definition_CurlyList, it, Definition ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_next(Nonempty_Definition_CurlyList source, Nonempty_Definition_CurlyList dest) {
    out.println("before -> Nonempty_Definition_CurlyList, next, Nonempty_Definition_CurlyList ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_next(Nonempty_Definition_CurlyList source, Nonempty_Definition_CurlyList dest) {
    out.println("after -> Nonempty_Definition_CurlyList, next, Nonempty_Definition_CurlyList ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Nonempty_StrategyExpression_List host) {
    out.println("before Nonempty_StrategyExpression_List");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Nonempty_StrategyExpression_List host) {
    out.println("after Nonempty_StrategyExpression_List");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_it(Nonempty_StrategyExpression_List source, StrategyExpression dest) {
    out.println("before -> Nonempty_StrategyExpression_List, it, StrategyExpression ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_it(Nonempty_StrategyExpression_List source, StrategyExpression dest) {
    out.println("after -> Nonempty_StrategyExpression_List, it, StrategyExpression ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_next(Nonempty_StrategyExpression_List source, Nonempty_StrategyExpression_List dest) {
    out.println("before -> Nonempty_StrategyExpression_List, next, Nonempty_StrategyExpression_List ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_next(Nonempty_StrategyExpression_List source, Nonempty_StrategyExpression_List dest) {
    out.println("after -> Nonempty_StrategyExpression_List, next, Nonempty_StrategyExpression_List ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Nonempty_MethodKeyword_List host) {
    out.println("before Nonempty_MethodKeyword_List");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Nonempty_MethodKeyword_List host) {
    out.println("after Nonempty_MethodKeyword_List");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_it(Nonempty_MethodKeyword_List source, MethodKeyword dest) {
    out.println("before -> Nonempty_MethodKeyword_List, it, MethodKeyword ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_it(Nonempty_MethodKeyword_List source, MethodKeyword dest) {
    out.println("after -> Nonempty_MethodKeyword_List, it, MethodKeyword ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_next(Nonempty_MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {
    out.println("before -> Nonempty_MethodKeyword_List, next, Nonempty_MethodKeyword_List ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_next(Nonempty_MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {
    out.println("after -> Nonempty_MethodKeyword_List, next, Nonempty_MethodKeyword_List ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Nonempty_MethodParm_Commalist host) {
    out.println("before Nonempty_MethodParm_Commalist");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Nonempty_MethodParm_Commalist host) {
    out.println("after Nonempty_MethodParm_Commalist");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_it(Nonempty_MethodParm_Commalist source, MethodParm dest) {
    out.println("before -> Nonempty_MethodParm_Commalist, it, MethodParm ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_it(Nonempty_MethodParm_Commalist source, MethodParm dest) {
    out.println("after -> Nonempty_MethodParm_Commalist, it, MethodParm ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_next(Nonempty_MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {
    out.println("before -> Nonempty_MethodParm_Commalist, next, Nonempty_MethodParm_Commalist ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_next(Nonempty_MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {
    out.println("after -> Nonempty_MethodParm_Commalist, next, Nonempty_MethodParm_Commalist ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Nonempty_ArraySpec_List host) {
    out.println("before Nonempty_ArraySpec_List");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Nonempty_ArraySpec_List host) {
    out.println("after Nonempty_ArraySpec_List");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_it(Nonempty_ArraySpec_List source, ArraySpec dest) {
    out.println("before -> Nonempty_ArraySpec_List, it, ArraySpec ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_it(Nonempty_ArraySpec_List source, ArraySpec dest) {
    out.println("after -> Nonempty_ArraySpec_List, it, ArraySpec ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_next(Nonempty_ArraySpec_List source, Nonempty_ArraySpec_List dest) {
    out.println("before -> Nonempty_ArraySpec_List, next, Nonempty_ArraySpec_List ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_next(Nonempty_ArraySpec_List source, Nonempty_ArraySpec_List dest) {
    out.println("after -> Nonempty_ArraySpec_List, next, Nonempty_ArraySpec_List ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Nonempty_ClassName_Commalist host) {
    out.println("before Nonempty_ClassName_Commalist");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Nonempty_ClassName_Commalist host) {
    out.println("after Nonempty_ClassName_Commalist");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_it(Nonempty_ClassName_Commalist source, ClassName dest) {
    out.println("before -> Nonempty_ClassName_Commalist, it, ClassName ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_it(Nonempty_ClassName_Commalist source, ClassName dest) {
    out.println("after -> Nonempty_ClassName_Commalist, it, ClassName ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_next(Nonempty_ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {
    out.println("before -> Nonempty_ClassName_Commalist, next, Nonempty_ClassName_Commalist ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_next(Nonempty_ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {
    out.println("after -> Nonempty_ClassName_Commalist, next, Nonempty_ClassName_Commalist ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  void universal_trv0_bef(UniversalVisitor _v_) {
    super.universal_trv0_bef(_v_);
  }

  void universal_trv0_aft(UniversalVisitor _v_) {
    super.universal_trv0_aft(_v_);
  }

  void universal_trv0(UniversalVisitor _v_) {
    universal_trv0_bef(_v_);
    super.universal_trv0(_v_);
    universal_trv0_aft(_v_);
  }

}

