// 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 Formula {{
    out.print(": Formula  (");
    indent++;
  }}
  after Formula {{
    out.print(" )");
    indent--;
  }}
  before -> Formula, clauses, ClauseList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<clauses> ");
  }}
  before -> Formula, satopt, SatOpt {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<satopt> ");
  }}
  before -> Formula, unsatopt, UnsatOpt {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<unsatopt> ");
  }}
  before SatCount {{
    out.print(": SatCount  (");
    indent++;
  }}
  after SatCount {{
    out.print(" )");
    indent--;
  }}
  before -> SatCount, sats, Integer {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<sats> ");
    out.print(" : Integer");
    out.print(" \"" + source.get_sats() + "\"");
  }}
  before SatAbsent {{
    out.print(": SatAbsent  (");
    indent++;
  }}
  after SatAbsent {{
    out.print(" )");
    indent--;
  }}
  before UnsatCount {{
    out.print(": UnsatCount  (");
    indent++;
  }}
  after UnsatCount {{
    out.print(" )");
    indent--;
  }}
  before -> UnsatCount, unsats, Integer {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<unsats> ");
    out.print(" : Integer");
    out.print(" \"" + source.get_unsats() + "\"");
  }}
  before UnsatAbsent {{
    out.print(": UnsatAbsent  (");
    indent++;
  }}
  after UnsatAbsent {{
    out.print(" )");
    indent--;
  }}
  before SatClause {{
    out.print(": SatClause  (");
    indent++;
  }}
  after SatClause {{
    out.print(" )");
    indent--;
  }}
  before UnsatClause {{
    out.print(": UnsatClause  (");
    indent++;
  }}
  after UnsatClause {{
    out.print(" )");
    indent--;
  }}
  before ConcreteClause {{
    out.print(": ConcreteClause  (");
    indent++;
  }}
  after ConcreteClause {{
    out.print(" )");
    indent--;
  }}
  before -> ConcreteClause, weight, Weight {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<weight> ");
  }}
  before -> ConcreteClause, literals, Literals {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<literals> ");
  }}
  before SatLiteral {{
    out.print(": SatLiteral  (");
    indent++;
  }}
  after SatLiteral {{
    out.print(" )");
    indent--;
  }}
  before UnsatLiteral {{
    out.print(": UnsatLiteral  (");
    indent++;
  }}
  after UnsatLiteral {{
    out.print(" )");
    indent--;
  }}
  before -> Literal, variable, Variable {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<variable> ");
  }}
  before Positive {{
    out.print(": Positive  (");
    indent++;
  }}
  after Positive {{
    out.print(" )");
    indent--;
  }}
  before Negative {{
    out.print(": Negative  (");
    indent++;
  }}
  after Negative {{
    out.print(" )");
    indent--;
  }}
  before Variable {{
    out.print(": Variable  (");
    indent++;
  }}
  after Variable {{
    out.print(" )");
    indent--;
  }}
  before -> Variable, integer, Integer {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<integer> ");
    out.print(" : Integer");
    out.print(" \"" + source.get_integer() + "\"");
  }}
  before Weight {{
    out.print(": Weight  (");
    indent++;
  }}
  after Weight {{
    out.print(" )");
    indent--;
  }}
  before -> Weight, v, Integer {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<v> ");
    out.print(" : Integer");
    out.print(" \"" + source.get_v() + "\"");
  }}
  before Main {{
    out.print(": Main  (");
    indent++;
  }}
  after Main {{
    out.print(" )");
    indent--;
  }}
  before -> Main, s, String {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<s> ");
    out.print(" : String");
    out.print(" \"" + source.get_s() + "\" ");
  }}
  before ClauseCons {{
    out.print(": ClauseCons  (");
    indent++;
  }}
  after ClauseCons {{
    out.print(" )");
    indent--;
  }}
  before -> ClauseCons, first, Clause {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before -> ClauseCons, rest, ClauseList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<rest> ");
  }}
  before ClauseEmpty {{
    out.print(": ClauseEmpty  (");
    indent++;
  }}
  after ClauseEmpty {{
    out.print(" )");
    indent--;
  }}
  before LiteralCons {{
    out.print(": LiteralCons  (");
    indent++;
  }}
  after LiteralCons {{
    out.print(" )");
    indent--;
  }}
  before -> LiteralCons, first, Literal {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before -> LiteralCons, rest, LiteralList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<rest> ");
  }}
  before LiteralEmpty {{
    out.print(": LiteralEmpty  (");
    indent++;
  }}
  after LiteralEmpty {{
    out.print(" )");
    indent--;
  }}
  before LitCounter {{
    out.print(": LitCounter  (");
    indent++;
  }}
  after LitCounter {{
    out.print(" )");
    indent--;
  }}
  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 + "\"");
  }}
}