// 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 CSP {{
    out.print(": CSP  (");
    indent++;
  }}
  after CSP {{
    out.print(" )");
    indent--;
  }}
  before -> CSP, constraintsatisfactionproblem_list, ConstraintSatisfactionProblem_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<constraintsatisfactionproblem_list> ");
  }}
  before ConstraintSatisfactionProblem {{
    out.print(": ConstraintSatisfactionProblem  (");
    indent++;
  }}
  after ConstraintSatisfactionProblem {{
    out.print(" )");
    indent--;
  }}
  before -> ConstraintSatisfactionProblem, preamble, Preamble {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<preamble> ");
  }}
  before -> ConstraintSatisfactionProblem, constraints, Constraint_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<constraints> ");
  }}
  before -> Constraint, weight, Weight {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<weight> ");
  }}
  before Preamble {{
    out.print(": Preamble  (");
    indent++;
  }}
  after Preamble {{
    out.print(" )");
    indent--;
  }}
  before -> Preamble, numVariables, int {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<numVariables> ");
    out.print(" : int \"" + dest + "\"");
  }}
  before -> Preamble, numConstraints, int {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<numConstraints> ");
    out.print(" : int \"" + dest + "\"");
  }}
  before -> Preamble, relationname_list, RelationName_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<relationname_list> ");
  }}
  before -> Preamble, variableAssignment, Literal {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<variableAssignment> ");
  }}
  before ProperConstraint {{
    out.print(": ProperConstraint  (");
    indent++;
  }}
  after ProperConstraint {{
    out.print(" )");
    indent--;
  }}
  before -> ProperConstraint, relationname, RelationName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<relationname> ");
  }}
  before -> ProperConstraint, literals, Literal_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<literals> ");
  }}
  before -> Literal, variable, Variable {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<variable> ");
  }}
  before Pos {{
    out.print(": Pos  (");
    indent++;
  }}
  after Pos {{
    out.print(" )");
    indent--;
  }}
  before Neg {{
    out.print(": Neg  (");
    indent++;
  }}
  after Neg {{
    out.print(" )");
    indent--;
  }}
  before Satisfied {{
    out.print(": Satisfied  (");
    indent++;
  }}
  after Satisfied {{
    out.print(" )");
    indent--;
  }}
  before Unsatisfied {{
    out.print(": Unsatisfied  (");
    indent++;
  }}
  after Unsatisfied {{
    out.print(" )");
    indent--;
  }}
  before Variable {{
    out.print(": Variable  (");
    indent++;
  }}
  after Variable {{
    out.print(" )");
    indent--;
  }}
  before -> Variable, v, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<v> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_v() + "\"");
  }}
  before RelationName {{
    out.print(": RelationName  (");
    indent++;
  }}
  after RelationName {{
    out.print(" )");
    indent--;
  }}
  before -> RelationName, v, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<v> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_v() + "\"");
  }}
  before Weight {{
    out.print(": Weight  (");
    indent++;
  }}
  after Weight {{
    out.print(" )");
    indent--;
  }}
  before -> Weight, v, int {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<v> ");
    out.print(" : int \"" + dest + "\"");
  }}
  before Main {{
    out.print(": Main  (");
    indent++;
  }}
  after Main {{
    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 + "\"");
  }}
  before ConstraintSatisfactionProblem_List {{
    out.print(": ConstraintSatisfactionProblem_List  {");
    indent++;
  }}
  after ConstraintSatisfactionProblem_List {{
    out.print(" }");
    indent--;
  }}
  before -> ConstraintSatisfactionProblem_List, first, Nonempty_ConstraintSatisfactionProblem_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before Constraint_List {{
    out.print(": Constraint_List  {");
    indent++;
  }}
  after Constraint_List {{
    out.print(" }");
    indent--;
  }}
  before -> Constraint_List, first, Nonempty_Constraint_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before RelationName_List {{
    out.print(": RelationName_List  {");
    indent++;
  }}
  after RelationName_List {{
    out.print(" }");
    indent--;
  }}
  before -> RelationName_List, first, Nonempty_RelationName_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before Literal_List {{
    out.print(": Literal_List  {");
    indent++;
  }}
  after Literal_List {{
    out.print(" }");
    indent--;
  }}
  before -> Literal_List, first, Nonempty_Literal_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before Nonempty_ConstraintSatisfactionProblem_List {{
    out.print(": Nonempty_ConstraintSatisfactionProblem_List  (");
    indent++;
  }}
  after Nonempty_ConstraintSatisfactionProblem_List {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_ConstraintSatisfactionProblem_List, it, ConstraintSatisfactionProblem {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_ConstraintSatisfactionProblem_List, next, Nonempty_ConstraintSatisfactionProblem_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_Constraint_List {{
    out.print(": Nonempty_Constraint_List  (");
    indent++;
  }}
  after Nonempty_Constraint_List {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_Constraint_List, it, Constraint {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_Constraint_List, next, Nonempty_Constraint_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_RelationName_List {{
    out.print(": Nonempty_RelationName_List  (");
    indent++;
  }}
  after Nonempty_RelationName_List {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_RelationName_List, it, RelationName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_RelationName_List, next, Nonempty_RelationName_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_Literal_List {{
    out.print(": Nonempty_Literal_List  (");
    indent++;
  }}
  after Nonempty_Literal_List {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_Literal_List, it, Literal {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_Literal_List, next, Nonempty_Literal_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
}