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

    protected java.io.PrintWriter out = new java.io.PrintWriter(System.out, true);
    java.io.PrintWriter get_out()             { return out; }
    void set_out(java.io.PrintWriter new_out) { out = new_out; }
    DisplayVisitor(java.io.PrintWriter out)     { set_out(out); }
    DisplayVisitor(java.io.PrintStream out)
      { set_out(new java.io.PrintWriter(out, true)); }
  
  public void finish() { out.flush(); }
  public void before(DAJ host) {
    out.print(": DAJ  (");
    indent++;
  }
  public void after(DAJ host) {
    out.print(" )");
    indent--;
  }
  public void before_traversalaspect_list(DAJ source, TraversalAspect_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<traversalaspect_list> ");
  }
  public void before(TraversalAspect host) {
    out.print(": TraversalAspect  (");
    indent++;
  }
  public void after(TraversalAspect host) {
    out.print(" )");
    indent--;
  }
  public void before_aspectname(TraversalAspect source, AspectName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<aspectname> ");
  }
  public void before_decls(TraversalAspect source, Definition_CurlyList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<decls> ");
  }
  public void before(Definition host) {
    out.print(": Definition  (");
    indent++;
  }
  public void after(Definition host) {
    out.print(" )");
    indent--;
  }
  public void before_definitionbody(Definition source, DefinitionBody dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<definitionbody> ");
  }
  public void before(CG host) {
    out.print(": CG  (");
    indent++;
  }
  public void after(CG host) {
    out.print(" )");
    indent--;
  }
  public void before_classgraphname(CG source, ClassGraphName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classgraphname> ");
  }
  public void before(Strategy host) {
    out.print(": Strategy  (");
    indent++;
  }
  public void after(Strategy host) {
    out.print(" )");
    indent--;
  }
  public void before_strategyname(Strategy source, StrategyName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<strategyname> ");
  }
  public void before_strategyexpression(Strategy source, StrategyExpression dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<strategyexpression> ");
  }
  public void before(StrategyString host) {
    out.print(": StrategyString  (");
    indent++;
  }
  public void after(StrategyString host) {
    out.print(" )");
    indent--;
  }
  public void before_string(StrategyString source, String dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<string> ");
    out.print(" : String");
    out.print(" \"" + source.get_string() + "\" ");
  }
  public void before(Compound host) {
    out.print(": Compound  (");
    indent++;
  }
  public void after(Compound host) {
    out.print(" )");
    indent--;
  }
  public void before_op(Compound source, Op dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<op> ");
  }
  public void before_strategyexpression_list(Compound source, StrategyExpression_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<strategyexpression_list> ");
  }
  public void before(And host) {
    out.print(": And  (");
    indent++;
  }
  public void after(And host) {
    out.print(" )");
    indent--;
  }
  public void before(AdaptiveMethod host) {
    out.print(": AdaptiveMethod  (");
    indent++;
  }
  public void after(AdaptiveMethod host) {
    out.print(" )");
    indent--;
  }
  public void before_methodsignature(AdaptiveMethod source, MethodSignature dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<methodsignature> ");
  }
  public void before_methodbody(AdaptiveMethod source, MethodBody dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<methodbody> ");
  }
  public void before(MethodSignature host) {
    out.print(": MethodSignature  (");
    indent++;
  }
  public void after(MethodSignature host) {
    out.print(" )");
    indent--;
  }
  public void before_keywords(MethodSignature source, MethodKeyword_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<keywords> ");
  }
  public void before_returnType(MethodSignature source, JavaType dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<returnType> ");
  }
  public void before_name(MethodSignature source, MethodName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }
  public void before_parms(MethodSignature source, MethodParm_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<parms> ");
  }
  public void before_throwsclause(MethodSignature source, Throws dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<throwsclause> ");
  }
  public void before(PublicMethod host) {
    out.print(": PublicMethod  (");
    indent++;
  }
  public void after(PublicMethod host) {
    out.print(" )");
    indent--;
  }
  public void before(ProtectedMethod host) {
    out.print(": ProtectedMethod  (");
    indent++;
  }
  public void after(ProtectedMethod host) {
    out.print(" )");
    indent--;
  }
  public void before(PrivateMethod host) {
    out.print(": PrivateMethod  (");
    indent++;
  }
  public void after(PrivateMethod host) {
    out.print(" )");
    indent--;
  }
  public void before(StaticMethod host) {
    out.print(": StaticMethod  (");
    indent++;
  }
  public void after(StaticMethod host) {
    out.print(" )");
    indent--;
  }
  public void before(FinalMethod host) {
    out.print(": FinalMethod  (");
    indent++;
  }
  public void after(FinalMethod host) {
    out.print(" )");
    indent--;
  }
  public void before(MethodParm host) {
    out.print(": MethodParm  (");
    indent++;
  }
  public void after(MethodParm host) {
    out.print(" )");
    indent--;
  }
  public void before_type(MethodParm source, JavaType dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<type> ");
  }
  public void before_name(MethodParm source, ParmName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }
  public void before_array(MethodParm source, ArraySpec_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<array> ");
  }
  public void before(Throws host) {
    out.print(": Throws  (");
    indent++;
  }
  public void after(Throws host) {
    out.print(" )");
    indent--;
  }
  public void before_exceptions(Throws source, ClassName_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<exceptions> ");
  }
  public void before(MethodBody host) {
    out.print(": MethodBody  (");
    indent++;
  }
  public void after(MethodBody host) {
    out.print(" )");
    indent--;
  }
  public void before_trv(MethodBody source, StrategyExpression dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<trv> ");
  }
  public void before_vis(MethodBody source, VisitorRef dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<vis> ");
  }
  public void before(VisitorRef host) {
    out.print(": VisitorRef  (");
    indent++;
  }
  public void after(VisitorRef host) {
    out.print(" )");
    indent--;
  }
  public void before_visitorClasses(VisitorRef source, ClassName_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<visitorClasses> ");
  }
  public void before(JavaType host) {
    out.print(": JavaType  (");
    indent++;
  }
  public void after(JavaType host) {
    out.print(" )");
    indent--;
  }
  public void before_type(JavaType source, Name dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<type> ");
  }
  public void before_array(JavaType source, ArraySpec_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<array> ");
  }
  public void before(ArraySpec host) {
    out.print(": ArraySpec  (");
    indent++;
  }
  public void after(ArraySpec host) {
    out.print(" )");
    indent--;
  }
  public void before(Name host) {
    out.print(": Name  {");
    indent++;
  }
  public void after(Name host) {
    out.print(" }");
    indent--;
  }
  public void before_first(Name source, Nonempty_Name dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(ClassGraphName host) {
    out.print(": ClassGraphName  (");
    indent++;
  }
  public void after(ClassGraphName host) {
    out.print(" )");
    indent--;
  }
  public void before_ident(ClassGraphName source, Ident dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ident> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_ident() + "\"");
  }
  public void before(StrategyName host) {
    out.print(": StrategyName  (");
    indent++;
  }
  public void after(StrategyName host) {
    out.print(" )");
    indent--;
  }
  public void before_ident(StrategyName source, Ident dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ident> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_ident() + "\"");
  }
  public void before(MethodName host) {
    out.print(": MethodName  (");
    indent++;
  }
  public void after(MethodName host) {
    out.print(" )");
    indent--;
  }
  public void before_ident(MethodName source, Ident dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ident> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_ident() + "\"");
  }
  public void before(ClassName host) {
    out.print(": ClassName  (");
    indent++;
  }
  public void after(ClassName host) {
    out.print(" )");
    indent--;
  }
  public void before_name(ClassName source, Name dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }
  public void before(ParmName host) {
    out.print(": ParmName  (");
    indent++;
  }
  public void after(ParmName host) {
    out.print(" )");
    indent--;
  }
  public void before_name(ParmName source, Ident dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_name() + "\"");
  }
  public void before(AspectName host) {
    out.print(": AspectName  (");
    indent++;
  }
  public void after(AspectName host) {
    out.print(" )");
    indent--;
  }
  public void before_name(AspectName source, Name dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }
  public void before(Main host) {
    out.print(": Main  (");
    indent++;
  }
  public void after(Main host) {
    out.print(" )");
    indent--;
  }
  public void before_s(Main source, String dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<s> ");
    out.print(" : String");
    out.print(" \"" + source.get_s() + "\" ");
  }
  public void before(PrintVisitor host) {
    out.print(": PrintVisitor  (");
    indent++;
  }
  public void after(PrintVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_indent(PrintVisitor source, int dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<indent> ");
    out.print(" : int \"" + dest + "\"");
  }
  public void before_needSpace(PrintVisitor source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<needSpace> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before(CopyVisitor host) {
    out.print(": CopyVisitor  (");
    indent++;
  }
  public void after(CopyVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_copy(CopyVisitor source, Object dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<copy> ");
  }
  public void before(SubgraphVisitor host) {
    out.print(": SubgraphVisitor  (");
    indent++;
  }
  public void after(SubgraphVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_is_equal(SubgraphVisitor source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_equal> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before(EqualVisitor host) {
    out.print(": EqualVisitor  (");
    indent++;
  }
  public void after(EqualVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_is_equal(EqualVisitor source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_equal> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before(DisplayVisitor host) {
    out.print(": DisplayVisitor  (");
    indent++;
  }
  public void after(DisplayVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_indent(DisplayVisitor source, int dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<indent> ");
    out.print(" : int \"" + dest + "\"");
  }
  public void before(TraceVisitor host) {
    out.print(": TraceVisitor  (");
    indent++;
  }
  public void after(TraceVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_indent(TraceVisitor source, int dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<indent> ");
    out.print(" : int \"" + dest + "\"");
  }
  public void before(TraversalAspect_List host) {
    out.print(": TraversalAspect_List  {");
    indent++;
  }
  public void after(TraversalAspect_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(TraversalAspect_List source, Nonempty_TraversalAspect_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(Definition_CurlyList host) {
    out.print(": Definition_CurlyList  {");
    indent++;
  }
  public void after(Definition_CurlyList host) {
    out.print(" }");
    indent--;
  }
  public void before_first(Definition_CurlyList source, Nonempty_Definition_CurlyList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(StrategyExpression_List host) {
    out.print(": StrategyExpression_List  {");
    indent++;
  }
  public void after(StrategyExpression_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(StrategyExpression_List source, Nonempty_StrategyExpression_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(MethodKeyword_List host) {
    out.print(": MethodKeyword_List  {");
    indent++;
  }
  public void after(MethodKeyword_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(MethodParm_Commalist host) {
    out.print(": MethodParm_Commalist  {");
    indent++;
  }
  public void after(MethodParm_Commalist host) {
    out.print(" }");
    indent--;
  }
  public void before_first(MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(ArraySpec_List host) {
    out.print(": ArraySpec_List  {");
    indent++;
  }
  public void after(ArraySpec_List host) {
    out.print(" }");
    indent--;
  }
  public void before_first(ArraySpec_List source, Nonempty_ArraySpec_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(ClassName_Commalist host) {
    out.print(": ClassName_Commalist  {");
    indent++;
  }
  public void after(ClassName_Commalist host) {
    out.print(" }");
    indent--;
  }
  public void before_first(ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(Nonempty_Name host) {
    out.print(": Nonempty_Name  (");
    indent++;
  }
  public void after(Nonempty_Name host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_Name source, Ident dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_it() + "\"");
  }
  public void before_next(Nonempty_Name source, Nonempty_Name dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_TraversalAspect_List host) {
    out.print(": Nonempty_TraversalAspect_List  (");
    indent++;
  }
  public void after(Nonempty_TraversalAspect_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_TraversalAspect_List source, TraversalAspect dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_TraversalAspect_List source, Nonempty_TraversalAspect_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_Definition_CurlyList host) {
    out.print(": Nonempty_Definition_CurlyList  (");
    indent++;
  }
  public void after(Nonempty_Definition_CurlyList host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_Definition_CurlyList source, Definition dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_Definition_CurlyList source, Nonempty_Definition_CurlyList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_StrategyExpression_List host) {
    out.print(": Nonempty_StrategyExpression_List  (");
    indent++;
  }
  public void after(Nonempty_StrategyExpression_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_StrategyExpression_List source, StrategyExpression dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_StrategyExpression_List source, Nonempty_StrategyExpression_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_MethodKeyword_List host) {
    out.print(": Nonempty_MethodKeyword_List  (");
    indent++;
  }
  public void after(Nonempty_MethodKeyword_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_MethodKeyword_List source, MethodKeyword dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_MethodParm_Commalist host) {
    out.print(": Nonempty_MethodParm_Commalist  (");
    indent++;
  }
  public void after(Nonempty_MethodParm_Commalist host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_MethodParm_Commalist source, MethodParm dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_ArraySpec_List host) {
    out.print(": Nonempty_ArraySpec_List  (");
    indent++;
  }
  public void after(Nonempty_ArraySpec_List host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_ArraySpec_List source, ArraySpec dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_ArraySpec_List source, Nonempty_ArraySpec_List dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  public void before(Nonempty_ClassName_Commalist host) {
    out.print(": Nonempty_ClassName_Commalist  (");
    indent++;
  }
  public void after(Nonempty_ClassName_Commalist host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_ClassName_Commalist source, ClassName dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  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_);
  }

}

