import edu.neu.ccs.demeter.*;
class EqualVisitor extends UniversalVisitor {
  protected boolean is_equal =  true ;
  public boolean get_is_equal() { return is_equal; }
  public void set_is_equal(boolean new_is_equal) { is_equal = new_is_equal; }
  public EqualVisitor() { super(); }
  public EqualVisitor(boolean is_equal) {
    super();
    set_is_equal(is_equal);
  }

    private java.util.Stack history = new java.util.Stack();
    public EqualVisitor(Object obj) {
      history.push(obj);
    }
  
  public void before_traversalaspect_list(DAJ source, TraversalAspect_List dest) {
    if (is_equal) {
      DAJ obj = (DAJ) history.peek();
      Object temp1 = obj.get_traversalaspect_list();
      if(temp1==null) { is_equal = false; return; }
      history.push(temp1);
    }
  }
  public void after_traversalaspect_list(DAJ source, TraversalAspect_List dest) {
    if (is_equal) history.pop();
  }
  public void before(DAJ host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_aspectname(TraversalAspect source, AspectName dest) {
    if (is_equal) {
      TraversalAspect obj = (TraversalAspect) history.peek();
      Object temp2 = obj.get_aspectname();
      if(temp2==null) { is_equal = false; return; }
      history.push(temp2);
    }
  }
  public void after_aspectname(TraversalAspect source, AspectName dest) {
    if (is_equal) history.pop();
  }
  public void before_decls(TraversalAspect source, Definition_CurlyList dest) {
    if (is_equal) {
      TraversalAspect obj = (TraversalAspect) history.peek();
      Object temp3 = obj.get_decls();
      if(temp3==null) { is_equal = false; return; }
      history.push(temp3);
    }
  }
  public void after_decls(TraversalAspect source, Definition_CurlyList dest) {
    if (is_equal) history.pop();
  }
  public void before(TraversalAspect host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_definitionbody(Definition source, DefinitionBody dest) {
    if (is_equal) {
      Definition obj = (Definition) history.peek();
      Object temp4 = obj.get_definitionbody();
      if(temp4==null) { is_equal = false; return; }
      history.push(temp4);
    }
  }
  public void after_definitionbody(Definition source, DefinitionBody dest) {
    if (is_equal) history.pop();
  }
  public void before(Definition host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before(DefinitionBody host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_classgraphname(CG source, ClassGraphName dest) {
    if (is_equal) {
      CG obj = (CG) history.peek();
      Object temp5 = obj.get_classgraphname();
      if(temp5==null) { is_equal = false; return; }
      history.push(temp5);
    }
  }
  public void after_classgraphname(CG source, ClassGraphName dest) {
    if (is_equal) history.pop();
  }
  public void before(CG host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_strategyname(Strategy source, StrategyName dest) {
    if (is_equal) {
      Strategy obj = (Strategy) history.peek();
      Object temp6 = obj.get_strategyname();
      if(temp6==null) { is_equal = false; return; }
      history.push(temp6);
    }
  }
  public void after_strategyname(Strategy source, StrategyName dest) {
    if (is_equal) history.pop();
  }
  public void before_strategyexpression(Strategy source, StrategyExpression dest) {
    if (is_equal) {
      Strategy obj = (Strategy) history.peek();
      Object temp7 = obj.get_strategyexpression();
      if(temp7==null) { is_equal = false; return; }
      history.push(temp7);
    }
  }
  public void after_strategyexpression(Strategy source, StrategyExpression dest) {
    if (is_equal) history.pop();
  }
  public void before(Strategy host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before(StrategyExpression host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before(Simple host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before(StrategyString host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp8 = host.get_string();
    Object temp9 = ((StrategyString) obj).get_string();
    if(temp8 == null && temp9 == null) {}
    else if(temp8 == null ||
            temp9 == null ||
            !temp8.equals(temp9)) { is_equal = false; return; }
  }
  public void before_op(Compound source, Op dest) {
    if (is_equal) {
      Compound obj = (Compound) history.peek();
      Object temp10 = obj.get_op();
      if(temp10==null) { is_equal = false; return; }
      history.push(temp10);
    }
  }
  public void after_op(Compound source, Op dest) {
    if (is_equal) history.pop();
  }
  public void before_strategyexpression_list(Compound source, StrategyExpression_List dest) {
    if (is_equal) {
      Compound obj = (Compound) history.peek();
      Object temp11 = obj.get_strategyexpression_list();
      if(temp11==null) { is_equal = false; return; }
      history.push(temp11);
    }
  }
  public void after_strategyexpression_list(Compound source, StrategyExpression_List dest) {
    if (is_equal) history.pop();
  }
  public void before(Compound host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before(Op host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before(And host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_methodsignature(AdaptiveMethod source, MethodSignature dest) {
    if (is_equal) {
      AdaptiveMethod obj = (AdaptiveMethod) history.peek();
      Object temp12 = obj.get_methodsignature();
      if(temp12==null) { is_equal = false; return; }
      history.push(temp12);
    }
  }
  public void after_methodsignature(AdaptiveMethod source, MethodSignature dest) {
    if (is_equal) history.pop();
  }
  public void before_methodbody(AdaptiveMethod source, MethodBody dest) {
    if (is_equal) {
      AdaptiveMethod obj = (AdaptiveMethod) history.peek();
      Object temp13 = obj.get_methodbody();
      if(temp13==null) { is_equal = false; return; }
      history.push(temp13);
    }
  }
  public void after_methodbody(AdaptiveMethod source, MethodBody dest) {
    if (is_equal) history.pop();
  }
  public void before(AdaptiveMethod host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_keywords(MethodSignature source, MethodKeyword_List dest) {
    if (is_equal) {
      MethodSignature obj = (MethodSignature) history.peek();
      Object temp14 = obj.get_keywords();
      if(temp14==null) { is_equal = false; return; }
      history.push(temp14);
    }
  }
  public void after_keywords(MethodSignature source, MethodKeyword_List dest) {
    if (is_equal) history.pop();
  }
  public void before_returnType(MethodSignature source, JavaType dest) {
    if (is_equal) {
      MethodSignature obj = (MethodSignature) history.peek();
      Object temp15 = obj.get_returnType();
      if(temp15==null) { is_equal = false; return; }
      history.push(temp15);
    }
  }
  public void after_returnType(MethodSignature source, JavaType dest) {
    if (is_equal) history.pop();
  }
  public void before_name(MethodSignature source, MethodName dest) {
    if (is_equal) {
      MethodSignature obj = (MethodSignature) history.peek();
      Object temp16 = obj.get_name();
      if(temp16==null) { is_equal = false; return; }
      history.push(temp16);
    }
  }
  public void after_name(MethodSignature source, MethodName dest) {
    if (is_equal) history.pop();
  }
  public void before_parms(MethodSignature source, MethodParm_Commalist dest) {
    if (is_equal) {
      MethodSignature obj = (MethodSignature) history.peek();
      Object temp17 = obj.get_parms();
      if(temp17==null) { is_equal = false; return; }
      history.push(temp17);
    }
  }
  public void after_parms(MethodSignature source, MethodParm_Commalist dest) {
    if (is_equal) history.pop();
  }
  public void before_throwsclause(MethodSignature source, Throws dest) {
    if (is_equal) {
      MethodSignature obj = (MethodSignature) history.peek();
      Object temp18 = obj.get_throwsclause();
      if(temp18==null) { is_equal = false; return; }
      history.push(temp18);
    }
  }
  public void after_throwsclause(MethodSignature source, Throws dest) {
    if (is_equal) history.pop();
  }
  public void before(MethodSignature host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before(MethodKeyword host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before(PublicMethod host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before(ProtectedMethod host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before(PrivateMethod host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before(StaticMethod host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before(FinalMethod host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_type(MethodParm source, JavaType dest) {
    if (is_equal) {
      MethodParm obj = (MethodParm) history.peek();
      Object temp19 = obj.get_type();
      if(temp19==null) { is_equal = false; return; }
      history.push(temp19);
    }
  }
  public void after_type(MethodParm source, JavaType dest) {
    if (is_equal) history.pop();
  }
  public void before_name(MethodParm source, ParmName dest) {
    if (is_equal) {
      MethodParm obj = (MethodParm) history.peek();
      Object temp20 = obj.get_name();
      if(temp20==null) { is_equal = false; return; }
      history.push(temp20);
    }
  }
  public void after_name(MethodParm source, ParmName dest) {
    if (is_equal) history.pop();
  }
  public void before_array(MethodParm source, ArraySpec_List dest) {
    if (is_equal) {
      MethodParm obj = (MethodParm) history.peek();
      Object temp21 = obj.get_array();
      if(temp21==null) { is_equal = false; return; }
      history.push(temp21);
    }
  }
  public void after_array(MethodParm source, ArraySpec_List dest) {
    if (is_equal) history.pop();
  }
  public void before(MethodParm host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_exceptions(Throws source, ClassName_Commalist dest) {
    if (is_equal) {
      Throws obj = (Throws) history.peek();
      Object temp22 = obj.get_exceptions();
      if(temp22==null) { is_equal = false; return; }
      history.push(temp22);
    }
  }
  public void after_exceptions(Throws source, ClassName_Commalist dest) {
    if (is_equal) history.pop();
  }
  public void before(Throws host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_trv(MethodBody source, StrategyExpression dest) {
    if (is_equal) {
      MethodBody obj = (MethodBody) history.peek();
      Object temp23 = obj.get_trv();
      if(temp23==null) { is_equal = false; return; }
      history.push(temp23);
    }
  }
  public void after_trv(MethodBody source, StrategyExpression dest) {
    if (is_equal) history.pop();
  }
  public void before_vis(MethodBody source, VisitorRef dest) {
    if (is_equal) {
      MethodBody obj = (MethodBody) history.peek();
      Object temp24 = obj.get_vis();
      if(temp24==null) { is_equal = false; return; }
      history.push(temp24);
    }
  }
  public void after_vis(MethodBody source, VisitorRef dest) {
    if (is_equal) history.pop();
  }
  public void before(MethodBody host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_visitorClasses(VisitorRef source, ClassName_Commalist dest) {
    if (is_equal) {
      VisitorRef obj = (VisitorRef) history.peek();
      Object temp25 = obj.get_visitorClasses();
      if(temp25==null) { is_equal = false; return; }
      history.push(temp25);
    }
  }
  public void after_visitorClasses(VisitorRef source, ClassName_Commalist dest) {
    if (is_equal) history.pop();
  }
  public void before(VisitorRef host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_type(JavaType source, Name dest) {
    if (is_equal) {
      JavaType obj = (JavaType) history.peek();
      Object temp26 = obj.get_type();
      if(temp26==null) { is_equal = false; return; }
      history.push(temp26);
    }
  }
  public void after_type(JavaType source, Name dest) {
    if (is_equal) history.pop();
  }
  public void before_array(JavaType source, ArraySpec_List dest) {
    if (is_equal) {
      JavaType obj = (JavaType) history.peek();
      Object temp27 = obj.get_array();
      if(temp27==null) { is_equal = false; return; }
      history.push(temp27);
    }
  }
  public void after_array(JavaType source, ArraySpec_List dest) {
    if (is_equal) history.pop();
  }
  public void before(JavaType host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before(ArraySpec host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_first(Name source, Nonempty_Name dest) {
    if (is_equal) {
      Name obj = (Name) history.peek();
      Object temp28 = obj.get_first();
      if(temp28==null) { is_equal = false; return; }
      history.push(temp28);
    }
  }
  public void after_first(Name source, Nonempty_Name dest) {
    if (is_equal) history.pop();
  }
  public void before(Name host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before(ClassGraphName host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp29 = host.get_ident();
    Object temp30 = ((ClassGraphName) obj).get_ident();
    if(temp29 == null && temp30 == null) {}
    else if(temp29 == null ||
            temp30 == null ||
            !temp29.equals(temp30)) { is_equal = false; return; }
  }
  public void before(StrategyName host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp31 = host.get_ident();
    Object temp32 = ((StrategyName) obj).get_ident();
    if(temp31 == null && temp32 == null) {}
    else if(temp31 == null ||
            temp32 == null ||
            !temp31.equals(temp32)) { is_equal = false; return; }
  }
  public void before(MethodName host) {
    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; }
  }
  public void before_name(ClassName source, Name dest) {
    if (is_equal) {
      ClassName obj = (ClassName) history.peek();
      Object temp35 = obj.get_name();
      if(temp35==null) { is_equal = false; return; }
      history.push(temp35);
    }
  }
  public void after_name(ClassName source, Name dest) {
    if (is_equal) history.pop();
  }
  public void before(ClassName host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before(ParmName host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp36 = host.get_name();
    Object temp37 = ((ParmName) obj).get_name();
    if(temp36 == null && temp37 == null) {}
    else if(temp36 == null ||
            temp37 == null ||
            !temp36.equals(temp37)) { is_equal = false; return; }
  }
  public void before_name(AspectName source, Name dest) {
    if (is_equal) {
      AspectName obj = (AspectName) history.peek();
      Object temp38 = obj.get_name();
      if(temp38==null) { is_equal = false; return; }
      history.push(temp38);
    }
  }
  public void after_name(AspectName source, Name dest) {
    if (is_equal) history.pop();
  }
  public void before(AspectName host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before(Main host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp39 = host.get_s();
    Object temp40 = ((Main) obj).get_s();
    if(temp39 == null && temp40 == null) {}
    else if(temp39 == null ||
            temp40 == null ||
            !temp39.equals(temp40)) { is_equal = false; return; }
  }
  public void before(PrintVisitor host) {
    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();
  }
  public void before(CopyVisitor host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp41 = host.get_copy();
    Object temp42 = ((CopyVisitor) obj).get_copy();
    if(temp41 == null && temp42 == null) {}
    else if(temp41 == null ||
            temp42 == null ||
            !temp41.equals(temp42)) { is_equal = false; return; }
  }
  public void before(SubgraphVisitor host) {
    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();
  }
  public void before(EqualVisitor host) {
    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();
  }
  public void before(DisplayVisitor host) {
    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();
  }
  public void before(TraceVisitor host) {
    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();
  }
  public void before(UniversalVisitor host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_first(TraversalAspect_List source, Nonempty_TraversalAspect_List dest) {
    if (is_equal) {
      TraversalAspect_List obj = (TraversalAspect_List) history.peek();
      Object temp43 = obj.get_first();
      if(temp43==null) { is_equal = false; return; }
      history.push(temp43);
    }
  }
  public void after_first(TraversalAspect_List source, Nonempty_TraversalAspect_List dest) {
    if (is_equal) history.pop();
  }
  public void before(TraversalAspect_List host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_first(Definition_CurlyList source, Nonempty_Definition_CurlyList dest) {
    if (is_equal) {
      Definition_CurlyList obj = (Definition_CurlyList) history.peek();
      Object temp44 = obj.get_first();
      if(temp44==null) { is_equal = false; return; }
      history.push(temp44);
    }
  }
  public void after_first(Definition_CurlyList source, Nonempty_Definition_CurlyList dest) {
    if (is_equal) history.pop();
  }
  public void before(Definition_CurlyList host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_first(StrategyExpression_List source, Nonempty_StrategyExpression_List dest) {
    if (is_equal) {
      StrategyExpression_List obj = (StrategyExpression_List) history.peek();
      Object temp45 = obj.get_first();
      if(temp45==null) { is_equal = false; return; }
      history.push(temp45);
    }
  }
  public void after_first(StrategyExpression_List source, Nonempty_StrategyExpression_List dest) {
    if (is_equal) history.pop();
  }
  public void before(StrategyExpression_List host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_first(MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {
    if (is_equal) {
      MethodKeyword_List obj = (MethodKeyword_List) history.peek();
      Object temp46 = obj.get_first();
      if(temp46==null) { is_equal = false; return; }
      history.push(temp46);
    }
  }
  public void after_first(MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {
    if (is_equal) history.pop();
  }
  public void before(MethodKeyword_List host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_first(MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {
    if (is_equal) {
      MethodParm_Commalist obj = (MethodParm_Commalist) history.peek();
      Object temp47 = obj.get_first();
      if(temp47==null) { is_equal = false; return; }
      history.push(temp47);
    }
  }
  public void after_first(MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {
    if (is_equal) history.pop();
  }
  public void before(MethodParm_Commalist host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_first(ArraySpec_List source, Nonempty_ArraySpec_List dest) {
    if (is_equal) {
      ArraySpec_List obj = (ArraySpec_List) history.peek();
      Object temp48 = obj.get_first();
      if(temp48==null) { is_equal = false; return; }
      history.push(temp48);
    }
  }
  public void after_first(ArraySpec_List source, Nonempty_ArraySpec_List dest) {
    if (is_equal) history.pop();
  }
  public void before(ArraySpec_List host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_first(ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {
    if (is_equal) {
      ClassName_Commalist obj = (ClassName_Commalist) history.peek();
      Object temp49 = obj.get_first();
      if(temp49==null) { is_equal = false; return; }
      history.push(temp49);
    }
  }
  public void after_first(ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {
    if (is_equal) history.pop();
  }
  public void before(ClassName_Commalist host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_next(Nonempty_Name source, Nonempty_Name dest) {
    if (is_equal) {
      Nonempty_Name obj = (Nonempty_Name) history.peek();
      Object temp52 = obj.get_next();
      if(temp52==null) { is_equal = false; return; }
      history.push(temp52);
    }
  }
  public void after_next(Nonempty_Name source, Nonempty_Name dest) {
    if (is_equal) history.pop();
  }
  public void before(Nonempty_Name host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
    Object temp50 = host.get_it();
    Object temp51 = ((Nonempty_Name) obj).get_it();
    if(temp50 == null && temp51 == null) {}
    else if(temp50 == null ||
            temp51 == null ||
            !temp50.equals(temp51)) { is_equal = false; return; }
  }
  public void before_it(Nonempty_TraversalAspect_List source, TraversalAspect dest) {
    if (is_equal) {
      Nonempty_TraversalAspect_List obj = (Nonempty_TraversalAspect_List) history.peek();
      Object temp53 = obj.get_it();
      if(temp53==null) { is_equal = false; return; }
      history.push(temp53);
    }
  }
  public void after_it(Nonempty_TraversalAspect_List source, TraversalAspect dest) {
    if (is_equal) history.pop();
  }
  public void before_next(Nonempty_TraversalAspect_List source, Nonempty_TraversalAspect_List dest) {
    if (is_equal) {
      Nonempty_TraversalAspect_List obj = (Nonempty_TraversalAspect_List) history.peek();
      Object temp54 = obj.get_next();
      if(temp54==null) { is_equal = false; return; }
      history.push(temp54);
    }
  }
  public void after_next(Nonempty_TraversalAspect_List source, Nonempty_TraversalAspect_List dest) {
    if (is_equal) history.pop();
  }
  public void before(Nonempty_TraversalAspect_List host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_it(Nonempty_Definition_CurlyList source, Definition dest) {
    if (is_equal) {
      Nonempty_Definition_CurlyList obj = (Nonempty_Definition_CurlyList) history.peek();
      Object temp55 = obj.get_it();
      if(temp55==null) { is_equal = false; return; }
      history.push(temp55);
    }
  }
  public void after_it(Nonempty_Definition_CurlyList source, Definition dest) {
    if (is_equal) history.pop();
  }
  public void before_next(Nonempty_Definition_CurlyList source, Nonempty_Definition_CurlyList dest) {
    if (is_equal) {
      Nonempty_Definition_CurlyList obj = (Nonempty_Definition_CurlyList) history.peek();
      Object temp56 = obj.get_next();
      if(temp56==null) { is_equal = false; return; }
      history.push(temp56);
    }
  }
  public void after_next(Nonempty_Definition_CurlyList source, Nonempty_Definition_CurlyList dest) {
    if (is_equal) history.pop();
  }
  public void before(Nonempty_Definition_CurlyList host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_it(Nonempty_StrategyExpression_List source, StrategyExpression dest) {
    if (is_equal) {
      Nonempty_StrategyExpression_List obj = (Nonempty_StrategyExpression_List) history.peek();
      Object temp57 = obj.get_it();
      if(temp57==null) { is_equal = false; return; }
      history.push(temp57);
    }
  }
  public void after_it(Nonempty_StrategyExpression_List source, StrategyExpression dest) {
    if (is_equal) history.pop();
  }
  public void before_next(Nonempty_StrategyExpression_List source, Nonempty_StrategyExpression_List dest) {
    if (is_equal) {
      Nonempty_StrategyExpression_List obj = (Nonempty_StrategyExpression_List) history.peek();
      Object temp58 = obj.get_next();
      if(temp58==null) { is_equal = false; return; }
      history.push(temp58);
    }
  }
  public void after_next(Nonempty_StrategyExpression_List source, Nonempty_StrategyExpression_List dest) {
    if (is_equal) history.pop();
  }
  public void before(Nonempty_StrategyExpression_List host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_it(Nonempty_MethodKeyword_List source, MethodKeyword dest) {
    if (is_equal) {
      Nonempty_MethodKeyword_List obj = (Nonempty_MethodKeyword_List) history.peek();
      Object temp59 = obj.get_it();
      if(temp59==null) { is_equal = false; return; }
      history.push(temp59);
    }
  }
  public void after_it(Nonempty_MethodKeyword_List source, MethodKeyword dest) {
    if (is_equal) history.pop();
  }
  public void before_next(Nonempty_MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {
    if (is_equal) {
      Nonempty_MethodKeyword_List obj = (Nonempty_MethodKeyword_List) history.peek();
      Object temp60 = obj.get_next();
      if(temp60==null) { is_equal = false; return; }
      history.push(temp60);
    }
  }
  public void after_next(Nonempty_MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {
    if (is_equal) history.pop();
  }
  public void before(Nonempty_MethodKeyword_List host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_it(Nonempty_MethodParm_Commalist source, MethodParm dest) {
    if (is_equal) {
      Nonempty_MethodParm_Commalist obj = (Nonempty_MethodParm_Commalist) history.peek();
      Object temp61 = obj.get_it();
      if(temp61==null) { is_equal = false; return; }
      history.push(temp61);
    }
  }
  public void after_it(Nonempty_MethodParm_Commalist source, MethodParm dest) {
    if (is_equal) history.pop();
  }
  public void before_next(Nonempty_MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {
    if (is_equal) {
      Nonempty_MethodParm_Commalist obj = (Nonempty_MethodParm_Commalist) history.peek();
      Object temp62 = obj.get_next();
      if(temp62==null) { is_equal = false; return; }
      history.push(temp62);
    }
  }
  public void after_next(Nonempty_MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {
    if (is_equal) history.pop();
  }
  public void before(Nonempty_MethodParm_Commalist host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_it(Nonempty_ArraySpec_List source, ArraySpec dest) {
    if (is_equal) {
      Nonempty_ArraySpec_List obj = (Nonempty_ArraySpec_List) history.peek();
      Object temp63 = obj.get_it();
      if(temp63==null) { is_equal = false; return; }
      history.push(temp63);
    }
  }
  public void after_it(Nonempty_ArraySpec_List source, ArraySpec dest) {
    if (is_equal) history.pop();
  }
  public void before_next(Nonempty_ArraySpec_List source, Nonempty_ArraySpec_List dest) {
    if (is_equal) {
      Nonempty_ArraySpec_List obj = (Nonempty_ArraySpec_List) history.peek();
      Object temp64 = obj.get_next();
      if(temp64==null) { is_equal = false; return; }
      history.push(temp64);
    }
  }
  public void after_next(Nonempty_ArraySpec_List source, Nonempty_ArraySpec_List dest) {
    if (is_equal) history.pop();
  }
  public void before(Nonempty_ArraySpec_List host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  public void before_it(Nonempty_ClassName_Commalist source, ClassName dest) {
    if (is_equal) {
      Nonempty_ClassName_Commalist obj = (Nonempty_ClassName_Commalist) history.peek();
      Object temp65 = obj.get_it();
      if(temp65==null) { is_equal = false; return; }
      history.push(temp65);
    }
  }
  public void after_it(Nonempty_ClassName_Commalist source, ClassName dest) {
    if (is_equal) history.pop();
  }
  public void before_next(Nonempty_ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {
    if (is_equal) {
      Nonempty_ClassName_Commalist obj = (Nonempty_ClassName_Commalist) history.peek();
      Object temp66 = obj.get_next();
      if(temp66==null) { is_equal = false; return; }
      history.push(temp66);
    }
  }
  public void after_next(Nonempty_ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {
    if (is_equal) history.pop();
  }
  public void before(Nonempty_ClassName_Commalist host) {
    Object obj = history.peek();
    is_equal = is_equal && obj.getClass().equals(host.getClass());
    if(!is_equal) return;
  }
  boolean get_return_val() { return is_equal ; }
  void universal_trv0_bef(UniversalVisitor _v_) {
    super.universal_trv0_bef(_v_);
  }

  void universal_trv0_aft(UniversalVisitor _v_) {
    super.universal_trv0_aft(_v_);
  }

  void universal_trv0(UniversalVisitor _v_) {
    universal_trv0_bef(_v_);
    super.universal_trv0(_v_);
    universal_trv0_aft(_v_);
  }

}

