// 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 -> Main, func, FuncDef {{ if (is_equal) { Main obj = (Main) history.peek(); Object temp1 = obj.get_func(); if(temp1==null) { is_equal = false; return; } history.push(temp1); } }} after -> Main, func, FuncDef {{ if (is_equal) history.pop(); }} before -> Main, cd, ClassDefList {{ if (is_equal) { Main obj = (Main) history.peek(); Object temp2 = obj.get_cd(); if(temp2==null) { is_equal = false; return; } history.push(temp2); } }} after -> Main, cd, ClassDefList {{ if (is_equal) history.pop(); }} before Main {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before -> FuncDef, methodlist, MethodList {{ if (is_equal) { FuncDef obj = (FuncDef) history.peek(); Object temp3 = obj.get_methodlist(); if(temp3==null) { is_equal = false; return; } history.push(temp3); } }} after -> FuncDef, methodlist, MethodList {{ if (is_equal) history.pop(); }} before FuncDef {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before -> MethodDef, ret, TypeName {{ if (is_equal) { MethodDef obj = (MethodDef) history.peek(); Object temp4 = obj.get_ret(); if(temp4==null) { is_equal = false; return; } history.push(temp4); } }} after -> MethodDef, ret, TypeName {{ if (is_equal) history.pop(); }} before -> MethodDef, arg, TypeName {{ if (is_equal) { MethodDef obj = (MethodDef) history.peek(); Object temp5 = obj.get_arg(); if(temp5==null) { is_equal = false; return; } history.push(temp5); } }} after -> MethodDef, arg, TypeName {{ if (is_equal) history.pop(); }} before MethodDef {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before MethodList {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before -> MethodCons, first, MethodDef {{ if (is_equal) { MethodCons obj = (MethodCons) history.peek(); Object temp6 = obj.get_first(); if(temp6==null) { is_equal = false; return; } history.push(temp6); } }} after -> MethodCons, first, MethodDef {{ if (is_equal) history.pop(); }} before -> MethodCons, rest, MethodList {{ if (is_equal) { MethodCons obj = (MethodCons) history.peek(); Object temp7 = obj.get_rest(); if(temp7==null) { is_equal = false; return; } history.push(temp7); } }} after -> MethodCons, rest, MethodList {{ if (is_equal) history.pop(); }} before MethodCons {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before MethodEmpty {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before -> ClassDef, decl, Decl {{ if (is_equal) { ClassDef obj = (ClassDef) history.peek(); Object temp10 = obj.get_decl(); if(temp10==null) { is_equal = false; return; } history.push(temp10); } }} after -> ClassDef, decl, Decl {{ if (is_equal) history.pop(); }} before ClassDef {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; Object temp8 = host.get_name(); Object temp9 = ((ClassDef) obj).get_name(); if(temp8 == null && temp9 == null) {} else if(temp8 == null || temp9 == null || !temp8.equals(temp9)) { is_equal = false; return; } }} before Decl {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before -> Abstract, subtypes, NESubtypeList {{ if (is_equal) { Abstract obj = (Abstract) history.peek(); Object temp11 = obj.get_subtypes(); if(temp11==null) { is_equal = false; return; } history.push(temp11); } }} after -> Abstract, subtypes, NESubtypeList {{ if (is_equal) history.pop(); }} before Abstract {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before -> Concrete, fields, FieldList {{ if (is_equal) { Concrete obj = (Concrete) history.peek(); Object temp12 = obj.get_fields(); if(temp12==null) { is_equal = false; return; } history.push(temp12); } }} after -> Concrete, fields, FieldList {{ if (is_equal) history.pop(); }} before Concrete {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before -> Field, typename, TypeName {{ if (is_equal) { Field obj = (Field) history.peek(); Object temp15 = obj.get_typename(); if(temp15==null) { is_equal = false; return; } history.push(temp15); } }} after -> Field, typename, TypeName {{ if (is_equal) history.pop(); }} before Field {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; Object temp13 = host.get_name(); Object temp14 = ((Field) obj).get_name(); if(temp13 == null && temp14 == null) {} else if(temp13 == null || temp14 == null || !temp13.equals(temp14)) { is_equal = false; return; } }} before TypeName {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; Object temp16 = host.get_name(); Object temp17 = ((TypeName) obj).get_name(); if(temp16 == null && temp17 == null) {} else if(temp16 == null || temp17 == null || !temp16.equals(temp17)) { is_equal = false; return; } }} before ClassDefList {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before -> ClassDefCons, first, ClassDef {{ if (is_equal) { ClassDefCons obj = (ClassDefCons) history.peek(); Object temp18 = obj.get_first(); if(temp18==null) { is_equal = false; return; } history.push(temp18); } }} after -> ClassDefCons, first, ClassDef {{ if (is_equal) history.pop(); }} before -> ClassDefCons, rest, ClassDefList {{ if (is_equal) { ClassDefCons obj = (ClassDefCons) history.peek(); Object temp19 = obj.get_rest(); if(temp19==null) { is_equal = false; return; } history.push(temp19); } }} after -> ClassDefCons, rest, ClassDefList {{ if (is_equal) history.pop(); }} before ClassDefCons {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before ClassDefEmpty {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before FieldList {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before -> FieldCons, first, Field {{ if (is_equal) { FieldCons obj = (FieldCons) history.peek(); Object temp20 = obj.get_first(); if(temp20==null) { is_equal = false; return; } history.push(temp20); } }} after -> FieldCons, first, Field {{ if (is_equal) history.pop(); }} before -> FieldCons, rest, FieldList {{ if (is_equal) { FieldCons obj = (FieldCons) history.peek(); Object temp21 = obj.get_rest(); if(temp21==null) { is_equal = false; return; } history.push(temp21); } }} after -> FieldCons, rest, FieldList {{ if (is_equal) history.pop(); }} before FieldCons {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before FieldEmpty {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before -> NESubtypeList, first, TypeName {{ if (is_equal) { NESubtypeList obj = (NESubtypeList) history.peek(); Object temp22 = obj.get_first(); if(temp22==null) { is_equal = false; return; } history.push(temp22); } }} after -> NESubtypeList, first, TypeName {{ if (is_equal) history.pop(); }} before -> NESubtypeList, rest, SubtypeList {{ if (is_equal) { NESubtypeList obj = (NESubtypeList) history.peek(); Object temp23 = obj.get_rest(); if(temp23==null) { is_equal = false; return; } history.push(temp23); } }} after -> NESubtypeList, rest, SubtypeList {{ if (is_equal) history.pop(); }} before NESubtypeList {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before SubtypeList {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before -> SubtypeCons, first, TypeName {{ if (is_equal) { SubtypeCons obj = (SubtypeCons) history.peek(); Object temp24 = obj.get_first(); if(temp24==null) { is_equal = false; return; } history.push(temp24); } }} after -> SubtypeCons, first, TypeName {{ if (is_equal) history.pop(); }} before -> SubtypeCons, rest, SubtypeList {{ if (is_equal) { SubtypeCons obj = (SubtypeCons) history.peek(); Object temp25 = obj.get_rest(); if(temp25==null) { is_equal = false; return; } history.push(temp25); } }} after -> SubtypeCons, rest, SubtypeList {{ if (is_equal) history.pop(); }} before SubtypeCons {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before SubtypeEmpty {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before StringList {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before -> StringCons, rest, StringList {{ if (is_equal) { StringCons obj = (StringCons) history.peek(); Object temp28 = obj.get_rest(); if(temp28==null) { is_equal = false; return; } history.push(temp28); } }} after -> StringCons, rest, StringList {{ if (is_equal) history.pop(); }} before StringCons {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; Object temp26 = host.get_first(); Object temp27 = ((StringCons) obj).get_first(); if(temp26 == null && temp27 == null) {} else if(temp26 == null || temp27 == null || !temp26.equals(temp27)) { is_equal = false; return; } }} before StringEmpty {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before ConsList {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) return; }} before EmptyList {{ Object obj = history.peek(); is_equal = is_equal && obj.getClass().equals(host.getClass()); if(!is_equal) 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 temp29 = host.get_copy(); Object temp30 = ((CopyVisitor) obj).get_copy(); if(temp29 == null && temp30 == null) {} else if(temp29 == null || temp30 == null || !temp29.equals(temp30)) { 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; }} return boolean {{ is_equal }} }