// This file is automatically generated by DemeterJ.

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

  before -> TraversalAspectList, traversalaspect_listl, TraversalAspect_ListL {{
    if (is_equal) {
      TraversalAspectList obj = (TraversalAspectList) history.peek();
      Object temp1 = obj.get_traversalaspect_listl();
      if(temp1==null) { is_equal = false; return; }
      history.push(temp1);
    }
  }}
  after -> TraversalAspectList, traversalaspect_listl, TraversalAspect_ListL {{
    if (is_equal) history.pop();
  }}

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

  before -> TraversalAspect, aspectname, AspectName {{
    if (is_equal) {
      TraversalAspect obj = (TraversalAspect) history.peek();
      Object temp2 = obj.get_aspectname();
      if(temp2==null) { is_equal = false; return; }
      history.push(temp2);
    }
  }}
  after -> TraversalAspect, aspectname, AspectName {{
    if (is_equal) history.pop();
  }}

  before -> TraversalAspect, aspectdecl_list, AspectDecl_List {{
    if (is_equal) {
      TraversalAspect obj = (TraversalAspect) history.peek();
      Object temp3 = obj.get_aspectdecl_list();
      if(temp3==null) { is_equal = false; return; }
      history.push(temp3);
    }
  }}
  after -> TraversalAspect, aspectdecl_list, AspectDecl_List {{
    if (is_equal) history.pop();
  }}

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

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

  before -> TraversalDecl, tv, TraversalVar {{
    if (is_equal) {
      TraversalDecl obj = (TraversalDecl) history.peek();
      Object temp4 = obj.get_tv();
      if(temp4==null) { is_equal = false; return; }
      history.push(temp4);
    }
  }}
  after -> TraversalDecl, tv, TraversalVar {{
    if (is_equal) history.pop();
  }}

  before -> TraversalDecl, traversaldecloptions, TraversalDeclOptions {{
    if (is_equal) {
      TraversalDecl obj = (TraversalDecl) history.peek();
      Object temp5 = obj.get_traversaldecloptions();
      if(temp5==null) { is_equal = false; return; }
      history.push(temp5);
    }
  }}
  after -> TraversalDecl, traversaldecloptions, TraversalDeclOptions {{
    if (is_equal) history.pop();
  }}

  before -> TraversalDecl, ts, TraversalStrategy {{
    if (is_equal) {
      TraversalDecl obj = (TraversalDecl) history.peek();
      Object temp6 = obj.get_ts();
      if(temp6==null) { is_equal = false; return; }
      history.push(temp6);
    }
  }}
  after -> TraversalDecl, ts, TraversalStrategy {{
    if (is_equal) history.pop();
  }}

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

  before -> TraversalDeclOptions, cgvar, ClassGraphVar {{
    if (is_equal) {
      TraversalDeclOptions obj = (TraversalDeclOptions) history.peek();
      Object temp7 = obj.get_cgvar();
      if(temp7==null) { is_equal = false; return; }
      history.push(temp7);
    }
  }}
  after -> TraversalDeclOptions, cgvar, ClassGraphVar {{
    if (is_equal) history.pop();
  }}

  before -> TraversalDeclOptions, visitorvar, VisitorVar {{
    if (is_equal) {
      TraversalDeclOptions obj = (TraversalDeclOptions) history.peek();
      Object temp8 = obj.get_visitorvar();
      if(temp8==null) { is_equal = false; return; }
      history.push(temp8);
    }
  }}
  after -> TraversalDeclOptions, visitorvar, VisitorVar {{
    if (is_equal) history.pop();
  }}

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

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

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

  before -> VisitorDecl, visitorvar, VisitorVar {{
    if (is_equal) {
      VisitorDecl obj = (VisitorDecl) history.peek();
      Object temp13 = obj.get_visitorvar();
      if(temp13==null) { is_equal = false; return; }
      history.push(temp13);
    }
  }}
  after -> VisitorDecl, visitorvar, VisitorVar {{
    if (is_equal) history.pop();
  }}

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

  before VisitorVar {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp14 = host.get_ident();
    Object temp15 = ((VisitorVar) obj).get_ident();
    if(temp14 == null && temp15 == null) {}
    else if(temp14 == null ||
            temp15 == null ||
            !temp14.equals(temp15)) { is_equal = false; return; }
  }}

  before AspectName {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp16 = host.get_aname();
    Object temp17 = ((AspectName) obj).get_aname();
    if(temp16 == null && temp17 == null) {}
    else if(temp16 == null ||
            temp17 == null ||
            !temp16.equals(temp17)) { is_equal = false; return; }
  }}

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

  before ClassGraphVar {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp18 = host.get_cgName();
    Object temp19 = ((ClassGraphVar) obj).get_cgName();
    if(temp18 == null && temp19 == null) {}
    else if(temp18 == null ||
            temp19 == null ||
            !temp18.equals(temp19)) { is_equal = false; return; }
  }}

  before -> ClassGraphVarDecl, cgvar, ClassGraphVar {{
    if (is_equal) {
      ClassGraphVarDecl obj = (ClassGraphVarDecl) history.peek();
      Object temp20 = obj.get_cgvar();
      if(temp20==null) { is_equal = false; return; }
      history.push(temp20);
    }
  }}
  after -> ClassGraphVarDecl, cgvar, ClassGraphVar {{
    if (is_equal) history.pop();
  }}

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

  before -> DefaultClassGraphDecl, vardecl, ClassGraphVarDecl {{
    if (is_equal) {
      DefaultClassGraphDecl obj = (DefaultClassGraphDecl) history.peek();
      Object temp21 = obj.get_vardecl();
      if(temp21==null) { is_equal = false; return; }
      history.push(temp21);
    }
  }}
  after -> DefaultClassGraphDecl, vardecl, ClassGraphVarDecl {{
    if (is_equal) history.pop();
  }}

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

  before -> ClassGraphSliceDecl, vardecl, ClassGraphVarDecl {{
    if (is_equal) {
      ClassGraphSliceDecl obj = (ClassGraphSliceDecl) history.peek();
      Object temp22 = obj.get_vardecl();
      if(temp22==null) { is_equal = false; return; }
      history.push(temp22);
    }
  }}
  after -> ClassGraphSliceDecl, vardecl, ClassGraphVarDecl {{
    if (is_equal) history.pop();
  }}

  before -> ClassGraphSliceDecl, ts, TraversalStrategy {{
    if (is_equal) {
      ClassGraphSliceDecl obj = (ClassGraphSliceDecl) history.peek();
      Object temp25 = obj.get_ts();
      if(temp25==null) { is_equal = false; return; }
      history.push(temp25);
    }
  }}
  after -> ClassGraphSliceDecl, ts, TraversalStrategy {{
    if (is_equal) history.pop();
  }}

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

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

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

  before MyClassGraphListener {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp26 = host.get_cgHash();
    Object temp27 = ((MyClassGraphListener) obj).get_cgHash();
    if(temp26 == null && temp27 == null) {}
    else if(temp26 == null ||
            temp27 == null ||
            !temp26.equals(temp27)) { is_equal = false; return; }
  }}

  before -> VisitorClass, classname, ClassName {{
    if (is_equal) {
      VisitorClass obj = (VisitorClass) history.peek();
      Object temp28 = obj.get_classname();
      if(temp28==null) { is_equal = false; return; }
      history.push(temp28);
    }
  }}
  after -> VisitorClass, classname, ClassName {{
    if (is_equal) history.pop();
  }}

  before -> VisitorClass, visitormethod_linelist, VisitorMethod_LineList {{
    if (is_equal) {
      VisitorClass obj = (VisitorClass) history.peek();
      Object temp29 = obj.get_visitormethod_linelist();
      if(temp29==null) { is_equal = false; return; }
      history.push(temp29);
    }
  }}
  after -> VisitorClass, visitormethod_linelist, VisitorMethod_LineList {{
    if (is_equal) history.pop();
  }}

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

  before -> VisitorMethod, returntype, ReturnType {{
    if (is_equal) {
      VisitorMethod obj = (VisitorMethod) history.peek();
      Object temp30 = obj.get_returntype();
      if(temp30==null) { is_equal = false; return; }
      history.push(temp30);
    }
  }}
  after -> VisitorMethod, returntype, ReturnType {{
    if (is_equal) history.pop();
  }}

  before -> VisitorMethod, methodname, MethodName {{
    if (is_equal) {
      VisitorMethod obj = (VisitorMethod) history.peek();
      Object temp31 = obj.get_methodname();
      if(temp31==null) { is_equal = false; return; }
      history.push(temp31);
    }
  }}
  after -> VisitorMethod, methodname, MethodName {{
    if (is_equal) history.pop();
  }}

  before -> VisitorMethod, adviceargumentlist, AdviceArgumentList {{
    if (is_equal) {
      VisitorMethod obj = (VisitorMethod) history.peek();
      Object temp32 = obj.get_adviceargumentlist();
      if(temp32==null) { is_equal = false; return; }
      history.push(temp32);
    }
  }}
  after -> VisitorMethod, adviceargumentlist, AdviceArgumentList {{
    if (is_equal) history.pop();
  }}

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

  before MethodName {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp33 = host.get_ident();
    Object temp34 = ((MethodName) obj).get_ident();
    if(temp33 == null && temp34 == null) {}
    else if(temp33 == null ||
            temp34 == null ||
            !temp33.equals(temp34)) { is_equal = false; return; }
  }}

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

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

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

  before -> AdviceArgumentList, argument_commalist, Argument_CommaList {{
    if (is_equal) {
      AdviceArgumentList obj = (AdviceArgumentList) history.peek();
      Object temp41 = obj.get_argument_commalist();
      if(temp41==null) { is_equal = false; return; }
      history.push(temp41);
    }
  }}
  after -> AdviceArgumentList, argument_commalist, Argument_CommaList {{
    if (is_equal) history.pop();
  }}

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

  before -> StreamFunnel, s1, StreamConnector {{
    if (is_equal) {
      StreamFunnel obj = (StreamFunnel) history.peek();
      Object temp42 = obj.get_s1();
      if(temp42==null) { is_equal = false; return; }
      history.push(temp42);
    }
  }}
  after -> StreamFunnel, s1, StreamConnector {{
    if (is_equal) history.pop();
  }}

  before -> StreamFunnel, s2, StreamConnector {{
    if (is_equal) {
      StreamFunnel obj = (StreamFunnel) history.peek();
      Object temp43 = obj.get_s2();
      if(temp43==null) { is_equal = false; return; }
      history.push(temp43);
    }
  }}
  after -> StreamFunnel, s2, StreamConnector {{
    if (is_equal) history.pop();
  }}

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

  before StreamConnector {{
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp44 = host.get_src();
    Object temp45 = ((StreamConnector) obj).get_src();
    if(temp44 == null && temp45 == null) {}
    else if(temp44 == null ||
            temp45 == null ||
            !temp44.equals(temp45)) { is_equal = false; return; }
    Object temp46 = host.get_target();
    Object temp47 = ((StreamConnector) obj).get_target();
    if(temp46 == null && temp47 == null) {}
    else if(temp46 == null ||
            temp47 == null ||
            !temp46.equals(temp47)) { 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 temp48 = host.get_copy();
    Object temp49 = ((CopyVisitor) obj).get_copy();
    if(temp48 == null && temp49 == null) {}
    else if(temp48 == null ||
            temp49 == null ||
            !temp48.equals(temp49)) { 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 -> TraversalAspect_ListL, first, Nonempty_TraversalAspect_ListL {{
    if (is_equal) {
      TraversalAspect_ListL obj = (TraversalAspect_ListL) history.peek();
      Object temp50 = obj.get_first();
      if(temp50==null) { is_equal = false; return; }
      history.push(temp50);
    }
  }}
  after -> TraversalAspect_ListL, first, Nonempty_TraversalAspect_ListL {{
    if (is_equal) history.pop();
  }}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  return boolean {{ is_equal }}
}