// This file is automatically generated by DemeterJ.

SubgraphVisitor {
  {{
    private java.util.Stack history = new java.util.Stack();
    public SubgraphVisitor(Object obj) {
      history.push(obj);
    }
  }}

  before -> Blackboard, players, Player_List {{
    if (is_equal) {
      Blackboard obj = (Blackboard) history.peek();
      Object temp1 = obj.get_players();
      if(temp1==null) { is_equal = false; return; }
      history.push(temp1);
    }
  }}
  after -> Blackboard, players, Player_List {{
    if (is_equal) history.pop();
  }}

  before -> Blackboard, store, Store {{
    if (is_equal) {
      Blackboard obj = (Blackboard) history.peek();
      Object temp2 = obj.get_store();
      if(temp2==null) { is_equal = false; return; }
      history.push(temp2);
    }
  }}
  after -> Blackboard, store, Store {{
    if (is_equal) history.pop();
  }}

  before -> Blackboard, transactions, Transaction_List {{
    if (is_equal) {
      Blackboard obj = (Blackboard) history.peek();
      Object temp3 = obj.get_transactions();
      if(temp3==null) { is_equal = false; return; }
      history.push(temp3);
    }
  }}
  after -> Blackboard, transactions, Transaction_List {{
    if (is_equal) history.pop();
  }}

  before -> Blackboard, history, History {{
    if (is_equal) {
      Blackboard obj = (Blackboard) history.peek();
      Object temp4 = obj.get_history();
      if(temp4==null) { is_equal = false; return; }
      history.push(temp4);
    }
  }}
  after -> Blackboard, history, History {{
    if (is_equal) history.pop();
  }}

  before Blackboard {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Player, name, PlayerName {{
    if (is_equal) {
      Player obj = (Player) history.peek();
      Object temp5 = obj.get_name();
      if(temp5==null) { is_equal = false; return; }
      history.push(temp5);
    }
  }}
  after -> Player, name, PlayerName {{
    if (is_equal) history.pop();
  }}

  before -> Player, account, Money {{
    if (is_equal) {
      Player obj = (Player) history.peek();
      Object temp6 = obj.get_account();
      if(temp6==null) { is_equal = false; return; }
      history.push(temp6);
    }
  }}
  after -> Player, account, Money {{
    if (is_equal) history.pop();
  }}

  before -> Player, publickey, PublicKey {{
    if (is_equal) {
      Player obj = (Player) history.peek();
      Object temp7 = obj.get_publickey();
      if(temp7==null) { is_equal = false; return; }
      history.push(temp7);
    }
  }}
  after -> Player, publickey, PublicKey {{
    if (is_equal) history.pop();
  }}

  before Player {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    is_equal = is_equal && host.get_turn() == ((Player) obj).get_turn();
  }}

  before PlayerName {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp8 = host.get_v();
    Object temp9 = ((PlayerName) obj).get_v();
    if(temp8 == null && temp9 == null) {}
    else if(temp8 == null ||
            temp9 == null ||
            !temp8.equals(temp9)) { is_equal = false; return; }
  }}

  before PublicKey {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> History, transaction_elist, Transaction_EList {{
    if (is_equal) {
      History obj = (History) history.peek();
      Object temp10 = obj.get_transaction_elist();
      if(temp10==null) { is_equal = false; return; }
      history.push(temp10);
    }
  }}
  after -> History, transaction_elist, Transaction_EList {{
    if (is_equal) history.pop();
  }}

  before History {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Store, derivative_elist, Derivative_EList {{
    if (is_equal) {
      Store obj = (Store) history.peek();
      Object temp11 = obj.get_derivative_elist();
      if(temp11==null) { is_equal = false; return; }
      history.push(temp11);
    }
  }}
  after -> Store, derivative_elist, Derivative_EList {{
    if (is_equal) history.pop();
  }}

  before Store {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Transaction, playername, PlayerName {{
    if (is_equal) {
      Transaction obj = (Transaction) history.peek();
      Object temp12 = obj.get_playername();
      if(temp12==null) { is_equal = false; return; }
      history.push(temp12);
    }
  }}
  after -> Transaction, playername, PlayerName {{
    if (is_equal) history.pop();
  }}

  before -> Transaction, derivative, Derivative {{
    if (is_equal) {
      Transaction obj = (Transaction) history.peek();
      Object temp13 = obj.get_derivative();
      if(temp13==null) { is_equal = false; return; }
      history.push(temp13);
    }
  }}
  after -> Transaction, derivative, Derivative {{
    if (is_equal) history.pop();
  }}

  before -> Transaction, digitalsignature, DigitalSignature {{
    if (is_equal) {
      Transaction obj = (Transaction) history.peek();
      Object temp14 = obj.get_digitalsignature();
      if(temp14==null) { is_equal = false; return; }
      history.push(temp14);
    }
  }}
  after -> Transaction, digitalsignature, DigitalSignature {{
    if (is_equal) history.pop();
  }}

  before Transaction {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before Buy {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before Create {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before DeliverR {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before Finish {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before DigitalSignature {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Derivative, name, DerivativeName {{
    if (is_equal) {
      Derivative obj = (Derivative) history.peek();
      Object temp15 = obj.get_name();
      if(temp15==null) { is_equal = false; return; }
      history.push(temp15);
    }
  }}
  after -> Derivative, name, DerivativeName {{
    if (is_equal) history.pop();
  }}

  before -> Derivative, creator, PlayerName {{
    if (is_equal) {
      Derivative obj = (Derivative) history.peek();
      Object temp16 = obj.get_creator();
      if(temp16==null) { is_equal = false; return; }
      history.push(temp16);
    }
  }}
  after -> Derivative, creator, PlayerName {{
    if (is_equal) history.pop();
  }}

  before -> Derivative, price, Money {{
    if (is_equal) {
      Derivative obj = (Derivative) history.peek();
      Object temp17 = obj.get_price();
      if(temp17==null) { is_equal = false; return; }
      history.push(temp17);
    }
  }}
  after -> Derivative, price, Money {{
    if (is_equal) history.pop();
  }}

  before -> Derivative, type, DerivativeType {{
    if (is_equal) {
      Derivative obj = (Derivative) history.peek();
      Object temp18 = obj.get_type();
      if(temp18==null) { is_equal = false; return; }
      history.push(temp18);
    }
  }}
  after -> Derivative, type, DerivativeType {{
    if (is_equal) history.pop();
  }}

  before -> Derivative, boughtBy, PlayerName {{
    if (is_equal) {
      Derivative obj = (Derivative) history.peek();
      Object temp19 = obj.get_boughtBy();
      if(temp19==null) { is_equal = false; return; }
      history.push(temp19);
    }
  }}
  after -> Derivative, boughtBy, PlayerName {{
    if (is_equal) history.pop();
  }}

  before -> Derivative, rawMaterial, RawMaterial {{
    if (is_equal) {
      Derivative obj = (Derivative) history.peek();
      Object temp20 = obj.get_rawMaterial();
      if(temp20==null) { is_equal = false; return; }
      history.push(temp20);
    }
  }}
  after -> Derivative, rawMaterial, RawMaterial {{
    if (is_equal) history.pop();
  }}

  before -> Derivative, finishedProduct, FinishedProduct {{
    if (is_equal) {
      Derivative obj = (Derivative) history.peek();
      Object temp21 = obj.get_finishedProduct();
      if(temp21==null) { is_equal = false; return; }
      history.push(temp21);
    }
  }}
  after -> Derivative, finishedProduct, FinishedProduct {{
    if (is_equal) history.pop();
  }}

  before Derivative {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> FinishedProduct, assignment, Assignment {{
    if (is_equal) {
      FinishedProduct obj = (FinishedProduct) history.peek();
      Object temp22 = obj.get_assignment();
      if(temp22==null) { is_equal = false; return; }
      history.push(temp22);
    }
  }}
  after -> FinishedProduct, assignment, Assignment {{
    if (is_equal) history.pop();
  }}

  before -> FinishedProduct, quality, Money {{
    if (is_equal) {
      FinishedProduct obj = (FinishedProduct) history.peek();
      Object temp23 = obj.get_quality();
      if(temp23==null) { is_equal = false; return; }
      history.push(temp23);
    }
  }}
  after -> FinishedProduct, quality, Money {{
    if (is_equal) history.pop();
  }}

  before FinishedProduct {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before DerivativeName {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp24 = host.get_name();
    Object temp25 = ((DerivativeName) obj).get_name();
    if(temp24 == null && temp25 == null) {}
    else if(temp24 == null ||
            temp25 == null ||
            !temp24.equals(temp25)) { is_equal = false; return; }
  }}

  before Money {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    is_equal = is_equal && host.get_price() == ((Money) obj).get_price();
  }}

  before -> DerivativeType, clausetype_list, ClauseType_List {{
    if (is_equal) {
      DerivativeType obj = (DerivativeType) history.peek();
      Object temp26 = obj.get_clausetype_list();
      if(temp26==null) { is_equal = false; return; }
      history.push(temp26);
    }
  }}
  after -> DerivativeType, clausetype_list, ClauseType_List {{
    if (is_equal) history.pop();
  }}

  before DerivativeType {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> ClauseType, total_literal_num, TotalLiteralNum {{
    if (is_equal) {
      ClauseType obj = (ClauseType) history.peek();
      Object temp27 = obj.get_total_literal_num();
      if(temp27==null) { is_equal = false; return; }
      history.push(temp27);
    }
  }}
  after -> ClauseType, total_literal_num, TotalLiteralNum {{
    if (is_equal) history.pop();
  }}

  before -> ClauseType, pos_literal_num, PosLiteralNum {{
    if (is_equal) {
      ClauseType obj = (ClauseType) history.peek();
      Object temp28 = obj.get_pos_literal_num();
      if(temp28==null) { is_equal = false; return; }
      history.push(temp28);
    }
  }}
  after -> ClauseType, pos_literal_num, PosLiteralNum {{
    if (is_equal) history.pop();
  }}

  before ClauseType {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before TotalLiteralNum {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp29 = host.get_number();
    Object temp30 = ((TotalLiteralNum) obj).get_number();
    if(temp29 == null && temp30 == null) {}
    else if(temp29 == null ||
            temp30 == null ||
            !temp29.equals(temp30)) { is_equal = false; return; }
  }}

  before PosLiteralNum {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp31 = host.get_number();
    Object temp32 = ((PosLiteralNum) obj).get_number();
    if(temp31 == null && temp32 == null) {}
    else if(temp31 == null ||
            temp32 == null ||
            !temp31.equals(temp32)) { is_equal = false; return; }
  }}

  before -> RawMaterial, clause_list, Clause_List {{
    if (is_equal) {
      RawMaterial obj = (RawMaterial) history.peek();
      Object temp33 = obj.get_clause_list();
      if(temp33==null) { is_equal = false; return; }
      history.push(temp33);
    }
  }}
  after -> RawMaterial, clause_list, Clause_List {{
    if (is_equal) history.pop();
  }}

  before RawMaterial {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Clause, weight, Weight {{
    if (is_equal) {
      Clause obj = (Clause) history.peek();
      Object temp34 = obj.get_weight();
      if(temp34==null) { is_equal = false; return; }
      history.push(temp34);
    }
  }}
  after -> Clause, weight, Weight {{
    if (is_equal) history.pop();
  }}

  before -> Clause, literal_list, Literal_List {{
    if (is_equal) {
      Clause obj = (Clause) history.peek();
      Object temp35 = obj.get_literal_list();
      if(temp35==null) { is_equal = false; return; }
      history.push(temp35);
    }
  }}
  after -> Clause, literal_list, Literal_List {{
    if (is_equal) history.pop();
  }}

  before Clause {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before Weight {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp36 = host.get_number();
    Object temp37 = ((Weight) obj).get_number();
    if(temp36 == null && temp37 == null) {}
    else if(temp36 == null ||
            temp37 == null ||
            !temp36.equals(temp37)) { is_equal = false; return; }
  }}

  before Literal {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> PosLiteral, variable, Variable {{
    if (is_equal) {
      PosLiteral obj = (PosLiteral) history.peek();
      Object temp38 = obj.get_variable();
      if(temp38==null) { is_equal = false; return; }
      history.push(temp38);
    }
  }}
  after -> PosLiteral, variable, Variable {{
    if (is_equal) history.pop();
  }}

  before PosLiteral {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> NegLiteral, variable, Variable {{
    if (is_equal) {
      NegLiteral obj = (NegLiteral) history.peek();
      Object temp39 = obj.get_variable();
      if(temp39==null) { is_equal = false; return; }
      history.push(temp39);
    }
  }}
  after -> NegLiteral, variable, Variable {{
    if (is_equal) history.pop();
  }}

  before NegLiteral {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before Variable {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp40 = host.get_v();
    Object temp41 = ((Variable) obj).get_v();
    if(temp40 == null && temp41 == null) {}
    else if(temp40 == null ||
            temp41 == null ||
            !temp40.equals(temp41)) { is_equal = false; return; }
  }}

  before -> Assignment, literal_list, Literal_List {{
    if (is_equal) {
      Assignment obj = (Assignment) history.peek();
      Object temp42 = obj.get_literal_list();
      if(temp42==null) { is_equal = false; return; }
      history.push(temp42);
    }
  }}
  after -> Assignment, literal_list, Literal_List {{
    if (is_equal) history.pop();
  }}

  before Assignment {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before Quality {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    is_equal = is_equal && host.get_v() == ((Quality) obj).get_v();
  }}

  before Main {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp43 = host.get_s();
    Object temp44 = ((Main) obj).get_s();
    if(temp43 == null && temp44 == null) {}
    else if(temp43 == null ||
            temp44 == null ||
            !temp43.equals(temp44)) { is_equal = false; return; }
  }}

  before PrintVisitor {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    is_equal = is_equal && host.get_indent() == ((PrintVisitor) obj).get_indent();
    is_equal = is_equal && host.get_needSpace() == ((PrintVisitor) obj).get_needSpace();
  }}

  before CopyVisitor {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp45 = host.get_copy();
    Object temp46 = ((CopyVisitor) obj).get_copy();
    if(temp45 == null && temp46 == null) {}
    else if(temp45 == null ||
            temp46 == null ||
            !temp45.equals(temp46)) { is_equal = false; return; }
  }}

  before SubgraphVisitor {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    is_equal = is_equal && host.get_is_equal() == ((SubgraphVisitor) obj).get_is_equal();
  }}

  before EqualVisitor {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    is_equal = is_equal && host.get_is_equal() == ((EqualVisitor) obj).get_is_equal();
  }}

  before DisplayVisitor {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    is_equal = is_equal && host.get_indent() == ((DisplayVisitor) obj).get_indent();
  }}

  before TraceVisitor {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    is_equal = is_equal && host.get_indent() == ((TraceVisitor) obj).get_indent();
  }}

  before UniversalVisitor {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Player_List, first, Nonempty_Player_List {{
    if (is_equal) {
      Player_List obj = (Player_List) history.peek();
      Object temp47 = obj.get_first();
      if(temp47==null) { is_equal = false; return; }
      history.push(temp47);
    }
  }}
  after -> Player_List, first, Nonempty_Player_List {{
    if (is_equal) history.pop();
  }}

  before Player_List {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Transaction_List, first, Nonempty_Transaction_List {{
    if (is_equal) {
      Transaction_List obj = (Transaction_List) history.peek();
      Object temp48 = obj.get_first();
      if(temp48==null) { is_equal = false; return; }
      history.push(temp48);
    }
  }}
  after -> Transaction_List, first, Nonempty_Transaction_List {{
    if (is_equal) history.pop();
  }}

  before Transaction_List {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Transaction_EList, first, Nonempty_Transaction_EList {{
    if (is_equal) {
      Transaction_EList obj = (Transaction_EList) history.peek();
      Object temp49 = obj.get_first();
      if(temp49==null) { is_equal = false; return; }
      history.push(temp49);
    }
  }}
  after -> Transaction_EList, first, Nonempty_Transaction_EList {{
    if (is_equal) history.pop();
  }}

  before Transaction_EList {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Derivative_EList, first, Nonempty_Derivative_EList {{
    if (is_equal) {
      Derivative_EList obj = (Derivative_EList) history.peek();
      Object temp50 = obj.get_first();
      if(temp50==null) { is_equal = false; return; }
      history.push(temp50);
    }
  }}
  after -> Derivative_EList, first, Nonempty_Derivative_EList {{
    if (is_equal) history.pop();
  }}

  before Derivative_EList {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> ClauseType_List, first, Nonempty_ClauseType_List {{
    if (is_equal) {
      ClauseType_List obj = (ClauseType_List) history.peek();
      Object temp51 = obj.get_first();
      if(temp51==null) { is_equal = false; return; }
      history.push(temp51);
    }
  }}
  after -> ClauseType_List, first, Nonempty_ClauseType_List {{
    if (is_equal) history.pop();
  }}

  before ClauseType_List {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Clause_List, first, Nonempty_Clause_List {{
    if (is_equal) {
      Clause_List obj = (Clause_List) history.peek();
      Object temp52 = obj.get_first();
      if(temp52==null) { is_equal = false; return; }
      history.push(temp52);
    }
  }}
  after -> Clause_List, first, Nonempty_Clause_List {{
    if (is_equal) history.pop();
  }}

  before Clause_List {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Literal_List, first, Nonempty_Literal_List {{
    if (is_equal) {
      Literal_List obj = (Literal_List) history.peek();
      Object temp53 = obj.get_first();
      if(temp53==null) { is_equal = false; return; }
      history.push(temp53);
    }
  }}
  after -> Literal_List, first, Nonempty_Literal_List {{
    if (is_equal) history.pop();
  }}

  before Literal_List {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Nonempty_Player_List, it, Player {{
    if (is_equal) {
      Nonempty_Player_List obj = (Nonempty_Player_List) history.peek();
      Object temp54 = obj.get_it();
      if(temp54==null) { is_equal = false; return; }
      history.push(temp54);
    }
  }}
  after -> Nonempty_Player_List, it, Player {{
    if (is_equal) history.pop();
  }}

  before -> Nonempty_Player_List, next, Nonempty_Player_List {{
    if (is_equal) {
      Nonempty_Player_List obj = (Nonempty_Player_List) history.peek();
      Object temp55 = obj.get_next();
      if(temp55==null) { is_equal = false; return; }
      history.push(temp55);
    }
  }}
  after -> Nonempty_Player_List, next, Nonempty_Player_List {{
    if (is_equal) history.pop();
  }}

  before Nonempty_Player_List {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Nonempty_Transaction_List, it, Transaction {{
    if (is_equal) {
      Nonempty_Transaction_List obj = (Nonempty_Transaction_List) history.peek();
      Object temp56 = obj.get_it();
      if(temp56==null) { is_equal = false; return; }
      history.push(temp56);
    }
  }}
  after -> Nonempty_Transaction_List, it, Transaction {{
    if (is_equal) history.pop();
  }}

  before -> Nonempty_Transaction_List, next, Nonempty_Transaction_List {{
    if (is_equal) {
      Nonempty_Transaction_List obj = (Nonempty_Transaction_List) history.peek();
      Object temp57 = obj.get_next();
      if(temp57==null) { is_equal = false; return; }
      history.push(temp57);
    }
  }}
  after -> Nonempty_Transaction_List, next, Nonempty_Transaction_List {{
    if (is_equal) history.pop();
  }}

  before Nonempty_Transaction_List {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Nonempty_Transaction_EList, it, Transaction {{
    if (is_equal) {
      Nonempty_Transaction_EList obj = (Nonempty_Transaction_EList) history.peek();
      Object temp58 = obj.get_it();
      if(temp58==null) { is_equal = false; return; }
      history.push(temp58);
    }
  }}
  after -> Nonempty_Transaction_EList, it, Transaction {{
    if (is_equal) history.pop();
  }}

  before -> Nonempty_Transaction_EList, next, Nonempty_Transaction_EList {{
    if (is_equal) {
      Nonempty_Transaction_EList obj = (Nonempty_Transaction_EList) history.peek();
      Object temp59 = obj.get_next();
      if(temp59==null) { is_equal = false; return; }
      history.push(temp59);
    }
  }}
  after -> Nonempty_Transaction_EList, next, Nonempty_Transaction_EList {{
    if (is_equal) history.pop();
  }}

  before Nonempty_Transaction_EList {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Nonempty_Derivative_EList, it, Derivative {{
    if (is_equal) {
      Nonempty_Derivative_EList obj = (Nonempty_Derivative_EList) history.peek();
      Object temp60 = obj.get_it();
      if(temp60==null) { is_equal = false; return; }
      history.push(temp60);
    }
  }}
  after -> Nonempty_Derivative_EList, it, Derivative {{
    if (is_equal) history.pop();
  }}

  before -> Nonempty_Derivative_EList, next, Nonempty_Derivative_EList {{
    if (is_equal) {
      Nonempty_Derivative_EList obj = (Nonempty_Derivative_EList) history.peek();
      Object temp61 = obj.get_next();
      if(temp61==null) { is_equal = false; return; }
      history.push(temp61);
    }
  }}
  after -> Nonempty_Derivative_EList, next, Nonempty_Derivative_EList {{
    if (is_equal) history.pop();
  }}

  before Nonempty_Derivative_EList {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Nonempty_ClauseType_List, it, ClauseType {{
    if (is_equal) {
      Nonempty_ClauseType_List obj = (Nonempty_ClauseType_List) history.peek();
      Object temp62 = obj.get_it();
      if(temp62==null) { is_equal = false; return; }
      history.push(temp62);
    }
  }}
  after -> Nonempty_ClauseType_List, it, ClauseType {{
    if (is_equal) history.pop();
  }}

  before -> Nonempty_ClauseType_List, next, Nonempty_ClauseType_List {{
    if (is_equal) {
      Nonempty_ClauseType_List obj = (Nonempty_ClauseType_List) history.peek();
      Object temp63 = obj.get_next();
      if(temp63==null) { is_equal = false; return; }
      history.push(temp63);
    }
  }}
  after -> Nonempty_ClauseType_List, next, Nonempty_ClauseType_List {{
    if (is_equal) history.pop();
  }}

  before Nonempty_ClauseType_List {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Nonempty_Clause_List, it, Clause {{
    if (is_equal) {
      Nonempty_Clause_List obj = (Nonempty_Clause_List) history.peek();
      Object temp64 = obj.get_it();
      if(temp64==null) { is_equal = false; return; }
      history.push(temp64);
    }
  }}
  after -> Nonempty_Clause_List, it, Clause {{
    if (is_equal) history.pop();
  }}

  before -> Nonempty_Clause_List, next, Nonempty_Clause_List {{
    if (is_equal) {
      Nonempty_Clause_List obj = (Nonempty_Clause_List) history.peek();
      Object temp65 = obj.get_next();
      if(temp65==null) { is_equal = false; return; }
      history.push(temp65);
    }
  }}
  after -> Nonempty_Clause_List, next, Nonempty_Clause_List {{
    if (is_equal) history.pop();
  }}

  before Nonempty_Clause_List {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  before -> Nonempty_Literal_List, it, Literal {{
    if (is_equal) {
      Nonempty_Literal_List obj = (Nonempty_Literal_List) history.peek();
      Object temp66 = obj.get_it();
      if(temp66==null) { is_equal = false; return; }
      history.push(temp66);
    }
  }}
  after -> Nonempty_Literal_List, it, Literal {{
    if (is_equal) history.pop();
  }}

  before -> Nonempty_Literal_List, next, Nonempty_Literal_List {{
    if (is_equal) {
      Nonempty_Literal_List obj = (Nonempty_Literal_List) history.peek();
      Object temp67 = obj.get_next();
      if(temp67==null) { is_equal = false; return; }
      history.push(temp67);
    }
  }}
  after -> Nonempty_Literal_List, next, Nonempty_Literal_List {{
    if (is_equal) history.pop();
  }}

  before Nonempty_Literal_List {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }}

  return boolean {{ is_equal }}
}