core: import edu.neu.ccs.demeter.*; add: class CopyVisitor extends UniversalVisitor { public constructor CopyVisitor() {{ super(); }} {{ private java.util.Stack history = new java.util.Stack(); public CopyVisitor(Class firstClass) { try { history.push(firstClass.newInstance()); } catch(Exception e) { e.printStackTrace(); } } }} public Object get_copy() {{ return history.peek(); }} Object get_return_val() {{ return get_copy() ; }} public void before_traversalaspect_list(DAJ source, TraversalAspect_List dest) {{ DAJ it = (DAJ) history.peek(); TraversalAspect_List p = new TraversalAspect_List(); it.set_traversalaspect_list(p); history.push(p); }} public void after_traversalaspect_list(DAJ source, TraversalAspect_List dest) {{ history.pop(); }} public void before_aspectname(TraversalAspect source, AspectName dest) {{ TraversalAspect it = (TraversalAspect) history.peek(); AspectName p = new AspectName(); it.set_aspectname(p); history.push(p); }} public void after_aspectname(TraversalAspect source, AspectName dest) {{ history.pop(); }} public void before_decls(TraversalAspect source, Definition_CurlyList dest) {{ TraversalAspect it = (TraversalAspect) history.peek(); Definition_CurlyList p = new Definition_CurlyList(); it.set_decls(p); history.push(p); }} public void after_decls(TraversalAspect source, Definition_CurlyList dest) {{ history.pop(); }} public void before_definitionbody(Definition source, DefinitionBody dest) {{ Definition it = (Definition) history.peek(); Class c = dest.getClass(); Object p = null; try { p = c.newInstance(); } catch(Exception e) { e.printStackTrace(); } it.set_definitionbody((DefinitionBody) p); history.push(p); }} public void after_definitionbody(Definition source, DefinitionBody dest) {{ history.pop(); }} public void before_classgraphname(CG source, ClassGraphName dest) {{ CG it = (CG) history.peek(); ClassGraphName p = new ClassGraphName(); it.set_classgraphname(p); history.push(p); }} public void after_classgraphname(CG source, ClassGraphName dest) {{ history.pop(); }} public void before_strategyname(Strategy source, StrategyName dest) {{ Strategy it = (Strategy) history.peek(); StrategyName p = new StrategyName(); it.set_strategyname(p); history.push(p); }} public void after_strategyname(Strategy source, StrategyName dest) {{ history.pop(); }} public void before_strategyexpression(Strategy source, StrategyExpression dest) {{ Strategy it = (Strategy) history.peek(); Class c = dest.getClass(); Object p = null; try { p = c.newInstance(); } catch(Exception e) { e.printStackTrace(); } it.set_strategyexpression((StrategyExpression) p); history.push(p); }} public void after_strategyexpression(Strategy source, StrategyExpression dest) {{ history.pop(); }} public void before_string(StrategyString source, String dest) {{ StrategyString it = (StrategyString) history.peek(); it.set_string(dest); }} public void before_op(Compound source, Op dest) {{ Compound it = (Compound) history.peek(); Class c = dest.getClass(); Object p = null; try { p = c.newInstance(); } catch(Exception e) { e.printStackTrace(); } it.set_op((Op) p); history.push(p); }} public void after_op(Compound source, Op dest) {{ history.pop(); }} public void before_strategyexpression_list(Compound source, StrategyExpression_List dest) {{ Compound it = (Compound) history.peek(); StrategyExpression_List p = new StrategyExpression_List(); it.set_strategyexpression_list(p); history.push(p); }} public void after_strategyexpression_list(Compound source, StrategyExpression_List dest) {{ history.pop(); }} public void before_methodsignature(AdaptiveMethod source, MethodSignature dest) {{ AdaptiveMethod it = (AdaptiveMethod) history.peek(); MethodSignature p = new MethodSignature(); it.set_methodsignature(p); history.push(p); }} public void after_methodsignature(AdaptiveMethod source, MethodSignature dest) {{ history.pop(); }} public void before_methodbody(AdaptiveMethod source, MethodBody dest) {{ AdaptiveMethod it = (AdaptiveMethod) history.peek(); MethodBody p = new MethodBody(); it.set_methodbody(p); history.push(p); }} public void after_methodbody(AdaptiveMethod source, MethodBody dest) {{ history.pop(); }} public void before_keywords(MethodSignature source, MethodKeyword_List dest) {{ MethodSignature it = (MethodSignature) history.peek(); MethodKeyword_List p = new MethodKeyword_List(); it.set_keywords(p); history.push(p); }} public void after_keywords(MethodSignature source, MethodKeyword_List dest) {{ history.pop(); }} public void before_returnType(MethodSignature source, JavaType dest) {{ MethodSignature it = (MethodSignature) history.peek(); JavaType p = new JavaType(); it.set_returnType(p); history.push(p); }} public void after_returnType(MethodSignature source, JavaType dest) {{ history.pop(); }} public void before_name(MethodSignature source, MethodName dest) {{ MethodSignature it = (MethodSignature) history.peek(); MethodName p = new MethodName(); it.set_name(p); history.push(p); }} public void after_name(MethodSignature source, MethodName dest) {{ history.pop(); }} public void before_parms(MethodSignature source, MethodParm_Commalist dest) {{ MethodSignature it = (MethodSignature) history.peek(); MethodParm_Commalist p = new MethodParm_Commalist(); it.set_parms(p); history.push(p); }} public void after_parms(MethodSignature source, MethodParm_Commalist dest) {{ history.pop(); }} public void before_throwsclause(MethodSignature source, Throws dest) {{ MethodSignature it = (MethodSignature) history.peek(); Throws p = new Throws(); it.set_throwsclause(p); history.push(p); }} public void after_throwsclause(MethodSignature source, Throws dest) {{ history.pop(); }} public void before_type(MethodParm source, JavaType dest) {{ MethodParm it = (MethodParm) history.peek(); JavaType p = new JavaType(); it.set_type(p); history.push(p); }} public void after_type(MethodParm source, JavaType dest) {{ history.pop(); }} public void before_name(MethodParm source, ParmName dest) {{ MethodParm it = (MethodParm) history.peek(); ParmName p = new ParmName(); it.set_name(p); history.push(p); }} public void after_name(MethodParm source, ParmName dest) {{ history.pop(); }} public void before_array(MethodParm source, ArraySpec_List dest) {{ MethodParm it = (MethodParm) history.peek(); ArraySpec_List p = new ArraySpec_List(); it.set_array(p); history.push(p); }} public void after_array(MethodParm source, ArraySpec_List dest) {{ history.pop(); }} public void before_exceptions(Throws source, ClassName_Commalist dest) {{ Throws it = (Throws) history.peek(); ClassName_Commalist p = new ClassName_Commalist(); it.set_exceptions(p); history.push(p); }} public void after_exceptions(Throws source, ClassName_Commalist dest) {{ history.pop(); }} public void before_trv(MethodBody source, StrategyExpression dest) {{ MethodBody it = (MethodBody) history.peek(); Class c = dest.getClass(); Object p = null; try { p = c.newInstance(); } catch(Exception e) { e.printStackTrace(); } it.set_trv((StrategyExpression) p); history.push(p); }} public void after_trv(MethodBody source, StrategyExpression dest) {{ history.pop(); }} public void before_vis(MethodBody source, VisitorRef dest) {{ MethodBody it = (MethodBody) history.peek(); VisitorRef p = new VisitorRef(); it.set_vis(p); history.push(p); }} public void after_vis(MethodBody source, VisitorRef dest) {{ history.pop(); }} public void before_visitorClasses(VisitorRef source, ClassName_Commalist dest) {{ VisitorRef it = (VisitorRef) history.peek(); ClassName_Commalist p = new ClassName_Commalist(); it.set_visitorClasses(p); history.push(p); }} public void after_visitorClasses(VisitorRef source, ClassName_Commalist dest) {{ history.pop(); }} public void before_type(JavaType source, Name dest) {{ JavaType it = (JavaType) history.peek(); Name p = new Name(); it.set_type(p); history.push(p); }} public void after_type(JavaType source, Name dest) {{ history.pop(); }} public void before_array(JavaType source, ArraySpec_List dest) {{ JavaType it = (JavaType) history.peek(); ArraySpec_List p = new ArraySpec_List(); it.set_array(p); history.push(p); }} public void after_array(JavaType source, ArraySpec_List dest) {{ history.pop(); }} public void before_first(Name source, Nonempty_Name dest) {{ Name it = (Name) history.peek(); Nonempty_Name p = new Nonempty_Name(); it.set_first(p); history.push(p); }} public void after_first(Name source, Nonempty_Name dest) {{ history.pop(); }} public void before_ident(ClassGraphName source, Ident dest) {{ ClassGraphName it = (ClassGraphName) history.peek(); it.set_ident(dest); }} public void before_ident(StrategyName source, Ident dest) {{ StrategyName it = (StrategyName) history.peek(); it.set_ident(dest); }} public void before_ident(MethodName source, Ident dest) {{ MethodName it = (MethodName) history.peek(); it.set_ident(dest); }} public void before_name(ClassName source, Name dest) {{ ClassName it = (ClassName) history.peek(); Name p = new Name(); it.set_name(p); history.push(p); }} public void after_name(ClassName source, Name dest) {{ history.pop(); }} public void before_name(ParmName source, Ident dest) {{ ParmName it = (ParmName) history.peek(); it.set_name(dest); }} public void before_name(AspectName source, Name dest) {{ AspectName it = (AspectName) history.peek(); Name p = new Name(); it.set_name(p); history.push(p); }} public void after_name(AspectName source, Name dest) {{ history.pop(); }} public void before_s(Main source, String dest) {{ Main it = (Main) history.peek(); it.set_s(dest); }} public void before_indent(PrintVisitor source, int dest) {{ PrintVisitor it = (PrintVisitor) history.peek(); it.set_indent(dest); }} public void before_needSpace(PrintVisitor source, boolean dest) {{ PrintVisitor it = (PrintVisitor) history.peek(); it.set_needSpace(dest); }} public void before_is_equal(SubgraphVisitor source, boolean dest) {{ SubgraphVisitor it = (SubgraphVisitor) history.peek(); it.set_is_equal(dest); }} public void before_is_equal(EqualVisitor source, boolean dest) {{ EqualVisitor it = (EqualVisitor) history.peek(); it.set_is_equal(dest); }} public void before_indent(DisplayVisitor source, int dest) {{ DisplayVisitor it = (DisplayVisitor) history.peek(); it.set_indent(dest); }} public void before_indent(TraceVisitor source, int dest) {{ TraceVisitor it = (TraceVisitor) history.peek(); it.set_indent(dest); }} public void before_first(TraversalAspect_List source, Nonempty_TraversalAspect_List dest) {{ TraversalAspect_List it = (TraversalAspect_List) history.peek(); Nonempty_TraversalAspect_List p = new Nonempty_TraversalAspect_List(); it.set_first(p); history.push(p); }} public void after_first(TraversalAspect_List source, Nonempty_TraversalAspect_List dest) {{ history.pop(); }} public void before_first(Definition_CurlyList source, Nonempty_Definition_CurlyList dest) {{ Definition_CurlyList it = (Definition_CurlyList) history.peek(); Nonempty_Definition_CurlyList p = new Nonempty_Definition_CurlyList(); it.set_first(p); history.push(p); }} public void after_first(Definition_CurlyList source, Nonempty_Definition_CurlyList dest) {{ history.pop(); }} public void before_first(StrategyExpression_List source, Nonempty_StrategyExpression_List dest) {{ StrategyExpression_List it = (StrategyExpression_List) history.peek(); Nonempty_StrategyExpression_List p = new Nonempty_StrategyExpression_List(); it.set_first(p); history.push(p); }} public void after_first(StrategyExpression_List source, Nonempty_StrategyExpression_List dest) {{ history.pop(); }} public void before_first(MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {{ MethodKeyword_List it = (MethodKeyword_List) history.peek(); Nonempty_MethodKeyword_List p = new Nonempty_MethodKeyword_List(); it.set_first(p); history.push(p); }} public void after_first(MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {{ history.pop(); }} public void before_first(MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {{ MethodParm_Commalist it = (MethodParm_Commalist) history.peek(); Nonempty_MethodParm_Commalist p = new Nonempty_MethodParm_Commalist(); it.set_first(p); history.push(p); }} public void after_first(MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {{ history.pop(); }} public void before_first(ArraySpec_List source, Nonempty_ArraySpec_List dest) {{ ArraySpec_List it = (ArraySpec_List) history.peek(); Nonempty_ArraySpec_List p = new Nonempty_ArraySpec_List(); it.set_first(p); history.push(p); }} public void after_first(ArraySpec_List source, Nonempty_ArraySpec_List dest) {{ history.pop(); }} public void before_first(ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {{ ClassName_Commalist it = (ClassName_Commalist) history.peek(); Nonempty_ClassName_Commalist p = new Nonempty_ClassName_Commalist(); it.set_first(p); history.push(p); }} public void after_first(ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {{ history.pop(); }} public void before_it(Nonempty_Name source, Ident dest) {{ Nonempty_Name it = (Nonempty_Name) history.peek(); it.set_it(dest); }} public void before_next(Nonempty_Name source, Nonempty_Name dest) {{ Nonempty_Name it = (Nonempty_Name) history.peek(); Nonempty_Name p = new Nonempty_Name(); it.set_next(p); history.push(p); }} public void after_next(Nonempty_Name source, Nonempty_Name dest) {{ history.pop(); }} public void before_it(Nonempty_TraversalAspect_List source, TraversalAspect dest) {{ Nonempty_TraversalAspect_List it = (Nonempty_TraversalAspect_List) history.peek(); TraversalAspect p = new TraversalAspect(); it.set_it(p); history.push(p); }} public void after_it(Nonempty_TraversalAspect_List source, TraversalAspect dest) {{ history.pop(); }} public void before_next(Nonempty_TraversalAspect_List source, Nonempty_TraversalAspect_List dest) {{ Nonempty_TraversalAspect_List it = (Nonempty_TraversalAspect_List) history.peek(); Nonempty_TraversalAspect_List p = new Nonempty_TraversalAspect_List(); it.set_next(p); history.push(p); }} public void after_next(Nonempty_TraversalAspect_List source, Nonempty_TraversalAspect_List dest) {{ history.pop(); }} public void before_it(Nonempty_Definition_CurlyList source, Definition dest) {{ Nonempty_Definition_CurlyList it = (Nonempty_Definition_CurlyList) history.peek(); Definition p = new Definition(); it.set_it(p); history.push(p); }} public void after_it(Nonempty_Definition_CurlyList source, Definition dest) {{ history.pop(); }} public void before_next(Nonempty_Definition_CurlyList source, Nonempty_Definition_CurlyList dest) {{ Nonempty_Definition_CurlyList it = (Nonempty_Definition_CurlyList) history.peek(); Nonempty_Definition_CurlyList p = new Nonempty_Definition_CurlyList(); it.set_next(p); history.push(p); }} public void after_next(Nonempty_Definition_CurlyList source, Nonempty_Definition_CurlyList dest) {{ history.pop(); }} public void before_it(Nonempty_StrategyExpression_List source, StrategyExpression dest) {{ Nonempty_StrategyExpression_List it = (Nonempty_StrategyExpression_List) history.peek(); Class c = dest.getClass(); Object p = null; try { p = c.newInstance(); } catch(Exception e) { e.printStackTrace(); } it.set_it((StrategyExpression) p); history.push(p); }} public void after_it(Nonempty_StrategyExpression_List source, StrategyExpression dest) {{ history.pop(); }} public void before_next(Nonempty_StrategyExpression_List source, Nonempty_StrategyExpression_List dest) {{ Nonempty_StrategyExpression_List it = (Nonempty_StrategyExpression_List) history.peek(); Nonempty_StrategyExpression_List p = new Nonempty_StrategyExpression_List(); it.set_next(p); history.push(p); }} public void after_next(Nonempty_StrategyExpression_List source, Nonempty_StrategyExpression_List dest) {{ history.pop(); }} public void before_it(Nonempty_MethodKeyword_List source, MethodKeyword dest) {{ Nonempty_MethodKeyword_List it = (Nonempty_MethodKeyword_List) history.peek(); Class c = dest.getClass(); Object p = null; try { p = c.newInstance(); } catch(Exception e) { e.printStackTrace(); } it.set_it((MethodKeyword) p); history.push(p); }} public void after_it(Nonempty_MethodKeyword_List source, MethodKeyword dest) {{ history.pop(); }} public void before_next(Nonempty_MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {{ Nonempty_MethodKeyword_List it = (Nonempty_MethodKeyword_List) history.peek(); Nonempty_MethodKeyword_List p = new Nonempty_MethodKeyword_List(); it.set_next(p); history.push(p); }} public void after_next(Nonempty_MethodKeyword_List source, Nonempty_MethodKeyword_List dest) {{ history.pop(); }} public void before_it(Nonempty_MethodParm_Commalist source, MethodParm dest) {{ Nonempty_MethodParm_Commalist it = (Nonempty_MethodParm_Commalist) history.peek(); MethodParm p = new MethodParm(); it.set_it(p); history.push(p); }} public void after_it(Nonempty_MethodParm_Commalist source, MethodParm dest) {{ history.pop(); }} public void before_next(Nonempty_MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {{ Nonempty_MethodParm_Commalist it = (Nonempty_MethodParm_Commalist) history.peek(); Nonempty_MethodParm_Commalist p = new Nonempty_MethodParm_Commalist(); it.set_next(p); history.push(p); }} public void after_next(Nonempty_MethodParm_Commalist source, Nonempty_MethodParm_Commalist dest) {{ history.pop(); }} public void before_it(Nonempty_ArraySpec_List source, ArraySpec dest) {{ Nonempty_ArraySpec_List it = (Nonempty_ArraySpec_List) history.peek(); ArraySpec p = new ArraySpec(); it.set_it(p); history.push(p); }} public void after_it(Nonempty_ArraySpec_List source, ArraySpec dest) {{ history.pop(); }} public void before_next(Nonempty_ArraySpec_List source, Nonempty_ArraySpec_List dest) {{ Nonempty_ArraySpec_List it = (Nonempty_ArraySpec_List) history.peek(); Nonempty_ArraySpec_List p = new Nonempty_ArraySpec_List(); it.set_next(p); history.push(p); }} public void after_next(Nonempty_ArraySpec_List source, Nonempty_ArraySpec_List dest) {{ history.pop(); }} public void before_it(Nonempty_ClassName_Commalist source, ClassName dest) {{ Nonempty_ClassName_Commalist it = (Nonempty_ClassName_Commalist) history.peek(); ClassName p = new ClassName(); it.set_it(p); history.push(p); }} public void after_it(Nonempty_ClassName_Commalist source, ClassName dest) {{ history.pop(); }} public void before_next(Nonempty_ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {{ Nonempty_ClassName_Commalist it = (Nonempty_ClassName_Commalist) history.peek(); Nonempty_ClassName_Commalist p = new Nonempty_ClassName_Commalist(); it.set_next(p); history.push(p); }} public void after_next(Nonempty_ClassName_Commalist source, Nonempty_ClassName_Commalist dest) {{ history.pop(); }} {{ 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_); Object copy = get_copy(); super.universal_trv0(_v_); universal_trv0_aft(_v_); } }} }