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_id(ShoeOrder source, String dest) (@ ShoeOrder it = (ShoeOrder) history.peek(); it.set_id(dest); @) public void before_style(ShoeOrder source, String dest) (@ ShoeOrder it = (ShoeOrder) history.peek(); it.set_style(dest); @) public void before_color(ShoeOrder source, Ident dest) (@ ShoeOrder it = (ShoeOrder) history.peek(); it.set_color(dest); @) public void before_size(ShoeOrder source, String dest) (@ ShoeOrder it = (ShoeOrder) history.peek(); it.set_size(dest); @) public void before_width(ShoeOrder source, Width dest) (@ ShoeOrder it = (ShoeOrder) history.peek(); Width p = new Width(); it.set_width(p); history.push(p); @) public void after_width(ShoeOrder source, Width dest) (@ history.pop(); @) public void before_stores(ShoeOrder source, Store_List dest) (@ ShoeOrder it = (ShoeOrder) history.peek(); Store_List p = new Store_List(); it.set_stores(p); history.push(p); @) public void after_stores(ShoeOrder source, Store_List dest) (@ history.pop(); @) public void before_w(Width source, W dest) (@ Width it = (Width) history.peek(); Class c = dest.getClass(); Object p = null; try { p = c.newInstance(); } catch(Exception e) { e.printStackTrace(); } it.set_w((W) p); history.push(p); @) public void after_w(Width source, W dest) (@ history.pop(); @) public void before_name(Store source, Ident dest) (@ Store it = (Store) history.peek(); it.set_name(dest); @) public void before_howManySuchShoes(Store source, Quantity dest) (@ Store it = (Store) history.peek(); Quantity p = new Quantity(); it.set_howManySuchShoes(p); history.push(p); @) public void after_howManySuchShoes(Store source, Quantity dest) (@ history.pop(); @) public void before_number(Quantity source, Number dest) (@ Quantity it = (Quantity) history.peek(); it.set_number(dest); @) public void before_total(SummingVisitor source, int dest) (@ SummingVisitor it = (SummingVisitor) history.peek(); it.set_total(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(Store_List source, Nonempty_Store_List dest) (@ Store_List it = (Store_List) history.peek(); Nonempty_Store_List p = new Nonempty_Store_List(); it.set_first(p); history.push(p); @) public void after_first(Store_List source, Nonempty_Store_List dest) (@ history.pop(); @) public void before_it(Nonempty_Store_List source, Store dest) (@ Nonempty_Store_List it = (Nonempty_Store_List) history.peek(); Store p = new Store(); it.set_it(p); history.push(p); @) public void after_it(Nonempty_Store_List source, Store dest) (@ history.pop(); @) public void before_next(Nonempty_Store_List source, Nonempty_Store_List dest) (@ Nonempty_Store_List it = (Nonempty_Store_List) history.peek(); Nonempty_Store_List p = new Nonempty_Store_List(); it.set_next(p); history.push(p); @) public void after_next(Nonempty_Store_List source, Nonempty_Store_List 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_); } @) }