// This file is automatically generated by DemeterJ.

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


  before Main {{
    out.print(": Main  (");
    indent++;
  }}
  after Main {{
    out.print(" )");
    indent--;
  }}
  before Histories {{
    out.print(": Histories  (");
    indent++;
  }}
  after Histories {{
    out.print(" )");
    indent--;
  }}
  before -> Histories, newstrategy_plist, NewStrategy_PList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<newstrategy_plist> ");
  }}
  before -> Histories, historypcd_plist, HistoryPcd_PList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<historypcd_plist> ");
  }}
  before HistoryPcd {{
    out.print(": HistoryPcd  (");
    indent++;
  }}
  after HistoryPcd {{
    out.print(" )");
    indent--;
  }}
  before -> HistoryPcd, newstrategy, NewStrategy {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<newstrategy> ");
  }}
  before Entry {{
    out.print(": Entry  (");
    indent++;
  }}
  after Entry {{
    out.print(" )");
    indent--;
  }}
  before -> Entry, pointcut, Pointcut {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<pointcut> ");
  }}
  before Exit {{
    out.print(": Exit  (");
    indent++;
  }}
  after Exit {{
    out.print(" )");
    indent--;
  }}
  before -> Exit, pointcut, Pointcut {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<pointcut> ");
  }}
  before Pointcut {{
    out.print(": Pointcut  (");
    indent++;
  }}
  after Pointcut {{
    out.print(" )");
    indent--;
  }}
  before -> Pointcut, pointcutname, PointcutName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<pointcutname> ");
  }}
  before AbstractNewStrategy {{
    out.print(": AbstractNewStrategy  (");
    indent++;
  }}
  after AbstractNewStrategy {{
    out.print(" )");
    indent--;
  }}
  before -> AbstractNewStrategy, modifiers, Modifiers {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<modifiers> ");
  }}
  before -> AbstractNewStrategy, newstrategyname, NewStrategyName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<newstrategyname> ");
  }}
  before -> AbstractNewStrategy, formals, Formals {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<formals> ");
  }}
  before ConcreteNewStrategy {{
    out.print(": ConcreteNewStrategy  (");
    indent++;
  }}
  after ConcreteNewStrategy {{
    out.print(" )");
    indent--;
  }}
  before -> ConcreteNewStrategy, modifiers, Modifiers {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<modifiers> ");
  }}
  before -> ConcreteNewStrategy, newstrategyname, NewStrategyName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<newstrategyname> ");
  }}
  before -> ConcreteNewStrategy, formals, Formals {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<formals> ");
  }}
  before -> ConcreteNewStrategy, orderednewstrategy_barlist, OrderedNewStrategy_BarList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<orderednewstrategy_barlist> ");
  }}
  before NamedNewStrategyRef {{
    out.print(": NamedNewStrategyRef  (");
    indent++;
  }}
  after NamedNewStrategyRef {{
    out.print(" )");
    indent--;
  }}
  before -> NamedNewStrategyRef, newstrategyname, NewStrategyName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<newstrategyname> ");
  }}
  before -> NamedNewStrategyRef, actuals, Actuals {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<actuals> ");
  }}
  before OrderedNewStrategy {{
    out.print(": OrderedNewStrategy  (");
    indent++;
  }}
  after OrderedNewStrategy {{
    out.print(" )");
    indent--;
  }}
  before -> OrderedNewStrategy, newstrategy_plist, NewStrategy_PList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<newstrategy_plist> ");
  }}
  before OptionalNewStrategy {{
    out.print(": OptionalNewStrategy  (");
    indent++;
  }}
  after OptionalNewStrategy {{
    out.print(" )");
    indent--;
  }}
  before -> OptionalNewStrategy, newstrategy, NewStrategy {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<newstrategy> ");
  }}
  before ZeroOrMoreNewStrategy {{
    out.print(": ZeroOrMoreNewStrategy  (");
    indent++;
  }}
  after ZeroOrMoreNewStrategy {{
    out.print(" )");
    indent--;
  }}
  before -> ZeroOrMoreNewStrategy, newstrategy, NewStrategy {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<newstrategy> ");
  }}
  before Modifiers {{
    out.print(": Modifiers  (");
    indent++;
  }}
  after Modifiers {{
    out.print(" )");
    indent--;
  }}
  before Formals {{
    out.print(": Formals  (");
    indent++;
  }}
  after Formals {{
    out.print(" )");
    indent--;
  }}
  before -> Formals, pair_clist, Pair_CList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<pair_clist> ");
  }}
  before Pair {{
    out.print(": Pair  (");
    indent++;
  }}
  after Pair {{
    out.print(" )");
    indent--;
  }}
  before -> Pair, typename, TypeName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<typename> ");
  }}
  before -> Pair, variablename, VariableName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<variablename> ");
  }}
  before TypeName {{
    out.print(": TypeName  (");
    indent++;
  }}
  after TypeName {{
    out.print(" )");
    indent--;
  }}
  before -> TypeName, ident, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ident> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_ident() + "\"");
  }}
  before VariableName {{
    out.print(": VariableName  (");
    indent++;
  }}
  after VariableName {{
    out.print(" )");
    indent--;
  }}
  before -> VariableName, ident, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ident> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_ident() + "\"");
  }}
  before Actuals {{
    out.print(": Actuals  (");
    indent++;
  }}
  after Actuals {{
    out.print(" )");
    indent--;
  }}
  before NewStrategyName {{
    out.print(": NewStrategyName  (");
    indent++;
  }}
  after NewStrategyName {{
    out.print(" )");
    indent--;
  }}
  before -> NewStrategyName, ident, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ident> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_ident() + "\"");
  }}
  before PointcutName {{
    out.print(": PointcutName  (");
    indent++;
  }}
  after PointcutName {{
    out.print(" )");
    indent--;
  }}
  before -> PointcutName, ident, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ident> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_ident() + "\"");
  }}
  before PrintVisitor {{
    out.print(": PrintVisitor  (");
    indent++;
  }}
  after PrintVisitor {{
    out.print(" )");
    indent--;
  }}
  before -> PrintVisitor, indent, int {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<indent> ");
    out.print(" : int \"" + dest + "\"");
  }}
  before -> PrintVisitor, needSpace, boolean {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<needSpace> ");
    out.print(" : boolean \"" + dest + "\"");
  }}
  before CopyVisitor {{
    out.print(": CopyVisitor  (");
    indent++;
  }}
  after CopyVisitor {{
    out.print(" )");
    indent--;
  }}
  before -> CopyVisitor, copy, Object {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<copy> ");
  }}
  before SubgraphVisitor {{
    out.print(": SubgraphVisitor  (");
    indent++;
  }}
  after SubgraphVisitor {{
    out.print(" )");
    indent--;
  }}
  before -> SubgraphVisitor, is_equal, boolean {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_equal> ");
    out.print(" : boolean \"" + dest + "\"");
  }}
  before EqualVisitor {{
    out.print(": EqualVisitor  (");
    indent++;
  }}
  after EqualVisitor {{
    out.print(" )");
    indent--;
  }}
  before -> EqualVisitor, is_equal, boolean {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_equal> ");
    out.print(" : boolean \"" + dest + "\"");
  }}
  before DisplayVisitor {{
    out.print(": DisplayVisitor  (");
    indent++;
  }}
  after DisplayVisitor {{
    out.print(" )");
    indent--;
  }}
  before -> DisplayVisitor, indent, int {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<indent> ");
    out.print(" : int \"" + dest + "\"");
  }}
  before TraceVisitor {{
    out.print(": TraceVisitor  (");
    indent++;
  }}
  after TraceVisitor {{
    out.print(" )");
    indent--;
  }}
  before -> TraceVisitor, indent, int {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<indent> ");
    out.print(" : int \"" + dest + "\"");
  }}
  before NewStrategy_PList {{
    out.print(": NewStrategy_PList  {");
    indent++;
  }}
  after NewStrategy_PList {{
    out.print(" }");
    indent--;
  }}
  before -> NewStrategy_PList, first, Nonempty_NewStrategy_PList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before HistoryPcd_PList {{
    out.print(": HistoryPcd_PList  {");
    indent++;
  }}
  after HistoryPcd_PList {{
    out.print(" }");
    indent--;
  }}
  before -> HistoryPcd_PList, first, Nonempty_HistoryPcd_PList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before OrderedNewStrategy_BarList {{
    out.print(": OrderedNewStrategy_BarList  {");
    indent++;
  }}
  after OrderedNewStrategy_BarList {{
    out.print(" }");
    indent--;
  }}
  before -> OrderedNewStrategy_BarList, first, Nonempty_OrderedNewStrategy_BarList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before Pair_CList {{
    out.print(": Pair_CList  {");
    indent++;
  }}
  after Pair_CList {{
    out.print(" }");
    indent--;
  }}
  before -> Pair_CList, first, Nonempty_Pair_CList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before Nonempty_NewStrategy_PList {{
    out.print(": Nonempty_NewStrategy_PList  (");
    indent++;
  }}
  after Nonempty_NewStrategy_PList {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_NewStrategy_PList, it, NewStrategy {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_NewStrategy_PList, next, Nonempty_NewStrategy_PList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_HistoryPcd_PList {{
    out.print(": Nonempty_HistoryPcd_PList  (");
    indent++;
  }}
  after Nonempty_HistoryPcd_PList {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_HistoryPcd_PList, it, HistoryPcd {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_HistoryPcd_PList, next, Nonempty_HistoryPcd_PList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_OrderedNewStrategy_BarList {{
    out.print(": Nonempty_OrderedNewStrategy_BarList  (");
    indent++;
  }}
  after Nonempty_OrderedNewStrategy_BarList {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_OrderedNewStrategy_BarList, it, OrderedNewStrategy {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_OrderedNewStrategy_BarList, next, Nonempty_OrderedNewStrategy_BarList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_Pair_CList {{
    out.print(": Nonempty_Pair_CList  (");
    indent++;
  }}
  after Nonempty_Pair_CList {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_Pair_CList, it, Pair {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_Pair_CList, next, Nonempty_Pair_CList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
}