// 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 Blackboard {{
    out.print(": Blackboard  (");
    indent++;
  }}
  after Blackboard {{
    out.print(" )");
    indent--;
  }}
  before -> Blackboard, players, Player_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<players> ");
  }}
  before -> Blackboard, store, Store {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<store> ");
  }}
  before -> Blackboard, transactions, Transaction_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<transactions> ");
  }}
  before -> Blackboard, history, History {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<history> ");
  }}
  before Player {{
    out.print(": Player  (");
    indent++;
  }}
  after Player {{
    out.print(" )");
    indent--;
  }}
  before -> Player, name, PlayerName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }}
  before -> Player, account, Money {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<account> ");
  }}
  before -> Player, turn, boolean {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<turn> ");
    out.print(" : boolean \"" + dest + "\"");
  }}
  before -> Player, publickey, PublicKey {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<publickey> ");
  }}
  before PlayerName {{
    out.print(": PlayerName  (");
    indent++;
  }}
  after PlayerName {{
    out.print(" )");
    indent--;
  }}
  before -> PlayerName, 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 PublicKey {{
    out.print(": PublicKey  (");
    indent++;
  }}
  after PublicKey {{
    out.print(" )");
    indent--;
  }}
  before History {{
    out.print(": History  (");
    indent++;
  }}
  after History {{
    out.print(" )");
    indent--;
  }}
  before -> History, transaction_elist, Transaction_EList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<transaction_elist> ");
  }}
  before Store {{
    out.print(": Store  (");
    indent++;
  }}
  after Store {{
    out.print(" )");
    indent--;
  }}
  before -> Store, derivative_elist, Derivative_EList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<derivative_elist> ");
  }}
  before Transaction {{
    out.print(": Transaction  (");
    indent++;
  }}
  after Transaction {{
    out.print(" )");
    indent--;
  }}
  before -> Transaction, trans, Trans {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<trans> ");
  }}
  before -> Trans, playername, PlayerName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<playername> ");
  }}
  before -> Trans, derivative, Derivative {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<derivative> ");
  }}
  before -> Trans, digitalsignature, DigitalSignature {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<digitalsignature> ");
  }}
  before Buy {{
    out.print(": Buy  (");
    indent++;
  }}
  after Buy {{
    out.print(" )");
    indent--;
  }}
  before Create {{
    out.print(": Create  (");
    indent++;
  }}
  after Create {{
    out.print(" )");
    indent--;
  }}
  before DeliverR {{
    out.print(": DeliverR  (");
    indent++;
  }}
  after DeliverR {{
    out.print(" )");
    indent--;
  }}
  before Finish {{
    out.print(": Finish  (");
    indent++;
  }}
  after Finish {{
    out.print(" )");
    indent--;
  }}
  before DigitalSignature {{
    out.print(": DigitalSignature  (");
    indent++;
  }}
  after DigitalSignature {{
    out.print(" )");
    indent--;
  }}
  before Derivative {{
    out.print(": Derivative  (");
    indent++;
  }}
  after Derivative {{
    out.print(" )");
    indent--;
  }}
  before -> Derivative, name, DerivativeName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
  }}
  before -> Derivative, creator, PlayerName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<creator> ");
  }}
  before -> Derivative, price, Money {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<price> ");
  }}
  before -> Derivative, type, DerivativeType {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<type> ");
  }}
  before -> Derivative, boughtBy, PlayerName {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<boughtBy> ");
  }}
  before -> Derivative, rawMaterial, RawMaterial {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<rawMaterial> ");
  }}
  before -> Derivative, finishedProduct, FinishedProduct {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<finishedProduct> ");
  }}
  before FinishedProduct {{
    out.print(": FinishedProduct  (");
    indent++;
  }}
  after FinishedProduct {{
    out.print(" )");
    indent--;
  }}
  before -> FinishedProduct, assignment, Assignment {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<assignment> ");
  }}
  before -> FinishedProduct, quality, Money {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<quality> ");
  }}
  before DerivativeName {{
    out.print(": DerivativeName  (");
    indent++;
  }}
  after DerivativeName {{
    out.print(" )");
    indent--;
  }}
  before -> DerivativeName, name, Ident {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<name> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_name() + "\"");
  }}
  before Money {{
    out.print(": Money  (");
    indent++;
  }}
  after Money {{
    out.print(" )");
    indent--;
  }}
  before -> Money, price, float {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<price> ");
    out.print(" : float \"" + dest + "\"");
  }}
  before DerivativeType {{
    out.print(": DerivativeType  (");
    indent++;
  }}
  after DerivativeType {{
    out.print(" )");
    indent--;
  }}
  before -> DerivativeType, clausetype_list, ClauseType_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<clausetype_list> ");
  }}
  before ClauseType {{
    out.print(": ClauseType  (");
    indent++;
  }}
  after ClauseType {{
    out.print(" )");
    indent--;
  }}
  before -> ClauseType, total_literal_num, TotalLiteralNum {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<total_literal_num> ");
  }}
  before -> ClauseType, pos_literal_num, PosLiteralNum {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<pos_literal_num> ");
  }}
  before TotalLiteralNum {{
    out.print(": TotalLiteralNum  (");
    indent++;
  }}
  after TotalLiteralNum {{
    out.print(" )");
    indent--;
  }}
  before -> TotalLiteralNum, v, int {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<v> ");
    out.print(" : int \"" + dest + "\"");
  }}
  before PosLiteralNum {{
    out.print(": PosLiteralNum  (");
    indent++;
  }}
  after PosLiteralNum {{
    out.print(" )");
    indent--;
  }}
  before -> PosLiteralNum, v, int {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<v> ");
    out.print(" : int \"" + dest + "\"");
  }}
  before RawMaterial {{
    out.print(": RawMaterial  (");
    indent++;
  }}
  after RawMaterial {{
    out.print(" )");
    indent--;
  }}
  before -> RawMaterial, clause_list, Clause_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<clause_list> ");
  }}
  before Clause {{
    out.print(": Clause  (");
    indent++;
  }}
  after Clause {{
    out.print(" )");
    indent--;
  }}
  before -> Clause, weight, Weight {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<weight> ");
  }}
  before -> Clause, literal_list, Literal_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<literal_list> ");
  }}
  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 Literal {{
    out.print(": Literal  (");
    indent++;
  }}
  after Literal {{
    out.print(" )");
    indent--;
  }}
  before -> Literal, lit, Lit {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<lit> ");
  }}
  before -> Lit, variable, Variable {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<variable> ");
  }}
  before PosLiteral {{
    out.print(": PosLiteral  (");
    indent++;
  }}
  after PosLiteral {{
    out.print(" )");
    indent--;
  }}
  before NegLiteral {{
    out.print(": NegLiteral  (");
    indent++;
  }}
  after NegLiteral {{
    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 Assignment {{
    out.print(": Assignment  (");
    indent++;
  }}
  after Assignment {{
    out.print(" )");
    indent--;
  }}
  before -> Assignment, literal_list, Literal_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<literal_list> ");
  }}
  before Quality {{
    out.print(": Quality  (");
    indent++;
  }}
  after Quality {{
    out.print(" )");
    indent--;
  }}
  before -> Quality, v, float {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<v> ");
    out.print(" : float \"" + dest + "\"");
  }}
  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 CTVisitor {{
    out.print(": CTVisitor  (");
    indent++;
  }}
  after CTVisitor {{
    out.print(" )");
    indent--;
  }}
  before -> CTVisitor, pos, int {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<pos> ");
    out.print(" : int \"" + dest + "\"");
  }}
  before -> CTVisitor, neg, int {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<neg> ");
    out.print(" : int \"" + dest + "\"");
  }}
  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 Player_List {{
    out.print(": Player_List  {");
    indent++;
  }}
  after Player_List {{
    out.print(" }");
    indent--;
  }}
  before -> Player_List, first, Nonempty_Player_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before Transaction_List {{
    out.print(": Transaction_List  {");
    indent++;
  }}
  after Transaction_List {{
    out.print(" }");
    indent--;
  }}
  before -> Transaction_List, first, Nonempty_Transaction_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before Transaction_EList {{
    out.print(": Transaction_EList  {");
    indent++;
  }}
  after Transaction_EList {{
    out.print(" }");
    indent--;
  }}
  before -> Transaction_EList, first, Nonempty_Transaction_EList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before Derivative_EList {{
    out.print(": Derivative_EList  {");
    indent++;
  }}
  after Derivative_EList {{
    out.print(" }");
    indent--;
  }}
  before -> Derivative_EList, first, Nonempty_Derivative_EList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before ClauseType_List {{
    out.print(": ClauseType_List  {");
    indent++;
  }}
  after ClauseType_List {{
    out.print(" }");
    indent--;
  }}
  before -> ClauseType_List, first, Nonempty_ClauseType_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }}
  before Clause_List {{
    out.print(": Clause_List  {");
    indent++;
  }}
  after Clause_List {{
    out.print(" }");
    indent--;
  }}
  before -> Clause_List, first, Nonempty_Clause_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_Player_List {{
    out.print(": Nonempty_Player_List  (");
    indent++;
  }}
  after Nonempty_Player_List {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_Player_List, it, Player {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_Player_List, next, Nonempty_Player_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_Transaction_List {{
    out.print(": Nonempty_Transaction_List  (");
    indent++;
  }}
  after Nonempty_Transaction_List {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_Transaction_List, it, Transaction {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_Transaction_List, next, Nonempty_Transaction_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_Transaction_EList {{
    out.print(": Nonempty_Transaction_EList  (");
    indent++;
  }}
  after Nonempty_Transaction_EList {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_Transaction_EList, it, Transaction {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_Transaction_EList, next, Nonempty_Transaction_EList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_Derivative_EList {{
    out.print(": Nonempty_Derivative_EList  (");
    indent++;
  }}
  after Nonempty_Derivative_EList {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_Derivative_EList, it, Derivative {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_Derivative_EList, next, Nonempty_Derivative_EList {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_ClauseType_List {{
    out.print(": Nonempty_ClauseType_List  (");
    indent++;
  }}
  after Nonempty_ClauseType_List {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_ClauseType_List, it, ClauseType {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_ClauseType_List, next, Nonempty_ClauseType_List {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }}
  before Nonempty_Clause_List {{
    out.print(": Nonempty_Clause_List  (");
    indent++;
  }}
  after Nonempty_Clause_List {{
    out.print(" )");
    indent--;
  }}
  before -> Nonempty_Clause_List, it, Clause {{
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }}
  before -> Nonempty_Clause_List, next, Nonempty_Clause_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> ");
  }}
}