// 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 ClassDict {{
    out.print(": ClassDict  (");
    indent++;
  }}
  after ClassDict {{
    out.print(" )");
    indent--;
  }}
  before -> ClassDict, al, Adjacency_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<al> ");
  }}
  before Adjacency {{
    out.print(": Adjacency  (");
    indent++;
  }}
  after Adjacency {{
    out.print(" )");
    indent--;
  }}
  before -> Adjacency, lhs, ClassName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<lhs> ");
  }}
  before -> Adjacency, body, Body {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<body> ");
  }}
  before -> Body, common, Common {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<common> ");
  }}
  before -> Body, ptl, PartOrToken_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<ptl> ");
  }}
  before Construction {{
    out.print(": Construction  (");
    indent++;
  }}
  after Construction {{
    out.print(" )");
    indent--;
  }}
  before Alternation {{
    out.print(": Alternation  (");
    indent++;
  }}
  after Alternation {{
    out.print(" )");
    indent--;
  }}
  before -> Alternation, classname, ClassName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classname> ");
  }}
  before -> Alternation, classname_bl, ClassName_BL {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classname_bl> ");
  }}
  before SyntaxToken {{
    out.print(": SyntaxToken  (");
    indent++;
  }}
  after SyntaxToken {{
    out.print(" )");
    indent--;
  }}
  before -> SyntaxToken, string, String {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<string> ");
    out.print(" : String");
    out.print(" \"" + source.get_string() + "\" ");
  }}
  before Required {{
    out.print(": Required  (");
    indent++;
  }}
  after Required {{
    out.print(" )");
    indent--;
  }}
  before -> Required, labelname, LabelName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<labelname> ");
  }}
  before -> Required, classname, ClassName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<classname> ");
  }}
  before Optional {{
    out.print(": Optional  (");
    indent++;
  }}
  after Optional {{
    out.print(" )");
    indent--;
  }}
  before -> Optional, required, Required {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<required> ");
  }}
  before Common {{
    out.print(": Common  (");
    indent++;
  }}
  after Common {{
    out.print(" )");
    indent--;
  }}
  before ClassName {{
    out.print(": ClassName  (");
    indent++;
  }}
  after ClassName {{
    out.print(" )");
    indent--;
  }}
  before -> ClassName, n, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<n> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_n() + "\"");
  }}
  before LabelName {{
    out.print(": LabelName  (");
    indent++;
  }}
  after LabelName {{
    out.print(" )");
    indent--;
  }}
  before -> LabelName, n, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<n> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_n() + "\"");
  }}
  before EAL {{
    out.print(": EAL  (");
    indent++;
  }}
  after EAL {{
    out.print(" )");
    indent--;
  }}
  before NAL {{
    out.print(": NAL  (");
    indent++;
  }}
  after NAL {{
    out.print(" )");
    indent--;
  }}
  before -> NAL, first, Adjacency {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before -> NAL, rest, Adjacency_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<rest> ");
  }}
  before EPTL {{
    out.print(": EPTL  (");
    indent++;
  }}
  after EPTL {{
    out.print(" )");
    indent--;
  }}
  before NPTL {{
    out.print(": NPTL  (");
    indent++;
  }}
  after NPTL {{
    out.print(" )");
    indent--;
  }}
  before -> NPTL, first, PartOrToken {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before -> NPTL, rest, PartOrToken_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<rest> ");
  }}
  before ECBL {{
    out.print(": ECBL  (");
    indent++;
  }}
  after ECBL {{
    out.print(" )");
    indent--;
  }}
  before NCBL {{
    out.print(": NCBL  (");
    indent++;
  }}
  after NCBL {{
    out.print(" )");
    indent--;
  }}
  before -> NCBL, first, ClassName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before -> NCBL, rest, ClassName_BL {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<rest> ");
  }}
  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 + "\"");
  }}
}