// This file is automatically generated by DemeterJ.

TraceVisitor {
  {{
    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)); }
  }}
  finish {{ out.flush(); }}


  before XPath {{
    out.println("before XPath");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after XPath {{
    out.println("after XPath");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> XPath, exp_list, Exp_List {{
    out.println("before -> XPath, exp_list, Exp_List ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> XPath, exp_list, Exp_List {{
    out.println("after -> XPath, exp_list, Exp_List ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before Exp {{
    out.println("before Exp");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after Exp {{
    out.println("after Exp");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before Simple {{
    out.println("before Simple");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after Simple {{
    out.println("after Simple");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before BinaryCompound {{
    out.println("before BinaryCompound");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after BinaryCompound {{
    out.println("after BinaryCompound");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> BinaryCompound, bop, BOp {{
    out.println("before -> BinaryCompound, bop, BOp ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> BinaryCompound, bop, BOp {{
    out.println("after -> BinaryCompound, bop, BOp ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> BinaryCompound, arg1, Exp {{
    out.println("before -> BinaryCompound, arg1, Exp ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> BinaryCompound, arg1, Exp {{
    out.println("after -> BinaryCompound, arg1, Exp ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> BinaryCompound, arg2, Exp {{
    out.println("before -> BinaryCompound, arg2, Exp ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> BinaryCompound, arg2, Exp {{
    out.println("after -> BinaryCompound, arg2, Exp ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before UnaryCompound {{
    out.println("before UnaryCompound");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after UnaryCompound {{
    out.println("after UnaryCompound");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> UnaryCompound, uop, UOp {{
    out.println("before -> UnaryCompound, uop, UOp ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> UnaryCompound, uop, UOp {{
    out.println("after -> UnaryCompound, uop, UOp ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> UnaryCompound, arg1, Exp {{
    out.println("before -> UnaryCompound, arg1, Exp ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> UnaryCompound, arg1, Exp {{
    out.println("after -> UnaryCompound, arg1, Exp ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before BOp {{
    out.println("before BOp");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after BOp {{
    out.println("after BOp");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before UOp {{
    out.println("before UOp");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after UOp {{
    out.println("after UOp");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before Chi {{
    out.println("before Chi");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after Chi {{
    out.println("after Chi");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before Des {{
    out.println("before Des");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after Des {{
    out.println("after Des");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before Disjunction {{
    out.println("before Disjunction");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after Disjunction {{
    out.println("after Disjunction");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before Child {{
    out.println("before Child");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after Child {{
    out.println("after Child");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before Descendant {{
    out.println("before Descendant");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after Descendant {{
    out.println("after Descendant");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before Filter {{
    out.println("before Filter");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after Filter {{
    out.println("after Filter");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before ElementTest {{
    out.println("before ElementTest");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after ElementTest {{
    out.println("after ElementTest");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> ElementTest, name, Name {{
    out.println("before -> ElementTest, name, Name ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> ElementTest, name, Name {{
    out.println("after -> ElementTest, name, Name ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before WildCard {{
    out.println("before WildCard");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after WildCard {{
    out.println("after WildCard");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before Name {{
    out.println("before Name");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after Name {{
    out.println("after Name");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> Name, ident, Ident {{
    out.println("before -> Name, ident, Ident ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> Name, ident, Ident {{
    out.println("after -> Name, ident, Ident ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before Main {{
    out.println("before Main");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after Main {{
    out.println("after Main");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> Main, s, String {{
    out.println("before -> Main, s, String ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> Main, s, String {{
    out.println("after -> Main, s, String ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before CountingVisitor {{
    out.println("before CountingVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after CountingVisitor {{
    out.println("after CountingVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> CountingVisitor, c, int {{
    out.println("before -> CountingVisitor, c, int ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> CountingVisitor, c, int {{
    out.println("after -> CountingVisitor, c, int ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before PrintVisitor {{
    out.println("before PrintVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after PrintVisitor {{
    out.println("after PrintVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> PrintVisitor, indent, int {{
    out.println("before -> PrintVisitor, indent, int ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> PrintVisitor, indent, int {{
    out.println("after -> PrintVisitor, indent, int ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> PrintVisitor, needSpace, boolean {{
    out.println("before -> PrintVisitor, needSpace, boolean ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> PrintVisitor, needSpace, boolean {{
    out.println("after -> PrintVisitor, needSpace, boolean ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before CopyVisitor {{
    out.println("before CopyVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after CopyVisitor {{
    out.println("after CopyVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> CopyVisitor, copy, Object {{
    out.println("before -> CopyVisitor, copy, Object ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> CopyVisitor, copy, Object {{
    out.println("after -> CopyVisitor, copy, Object ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before SubgraphVisitor {{
    out.println("before SubgraphVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after SubgraphVisitor {{
    out.println("after SubgraphVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> SubgraphVisitor, is_equal, boolean {{
    out.println("before -> SubgraphVisitor, is_equal, boolean ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> SubgraphVisitor, is_equal, boolean {{
    out.println("after -> SubgraphVisitor, is_equal, boolean ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before EqualVisitor {{
    out.println("before EqualVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after EqualVisitor {{
    out.println("after EqualVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> EqualVisitor, is_equal, boolean {{
    out.println("before -> EqualVisitor, is_equal, boolean ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> EqualVisitor, is_equal, boolean {{
    out.println("after -> EqualVisitor, is_equal, boolean ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before DisplayVisitor {{
    out.println("before DisplayVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after DisplayVisitor {{
    out.println("after DisplayVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> DisplayVisitor, indent, int {{
    out.println("before -> DisplayVisitor, indent, int ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> DisplayVisitor, indent, int {{
    out.println("after -> DisplayVisitor, indent, int ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before TraceVisitor {{
    out.println("before TraceVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after TraceVisitor {{
    out.println("after TraceVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> TraceVisitor, indent, int {{
    out.println("before -> TraceVisitor, indent, int ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> TraceVisitor, indent, int {{
    out.println("after -> TraceVisitor, indent, int ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before UniversalVisitor {{
    out.println("before UniversalVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after UniversalVisitor {{
    out.println("after UniversalVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before Exp_List {{
    out.println("before Exp_List");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after Exp_List {{
    out.println("after Exp_List");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> Exp_List, first, Nonempty_Exp_List {{
    out.println("before -> Exp_List, first, Nonempty_Exp_List ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> Exp_List, first, Nonempty_Exp_List {{
    out.println("after -> Exp_List, first, Nonempty_Exp_List ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before Nonempty_Exp_List {{
    out.println("before Nonempty_Exp_List");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after Nonempty_Exp_List {{
    out.println("after Nonempty_Exp_List");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> Nonempty_Exp_List, it, Exp {{
    out.println("before -> Nonempty_Exp_List, it, Exp ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> Nonempty_Exp_List, it, Exp {{
    out.println("after -> Nonempty_Exp_List, it, Exp ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  before -> Nonempty_Exp_List, next, Nonempty_Exp_List {{
    out.println("before -> Nonempty_Exp_List, next, Nonempty_Exp_List ");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
  after -> Nonempty_Exp_List, next, Nonempty_Exp_List {{
    out.println("after -> Nonempty_Exp_List, next, Nonempty_Exp_List ");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }}
}