// This file is automatically generated by DemeterJ.

CopyVisitor {
  {{
    private java.util.Stack history = new java.util.Stack();
    public CopyVisitor(Class firstClass) {
      try {
        history.push(firstClass.newInstance());
      } catch(Exception e) {
        e.printStackTrace();
      }
    }
  }}
  get copy {{ return history.peek(); }}
  return Object {{ get_copy() }}


  before -> Example, tree, Tree {{
    Example it = (Example) history.peek();
    Tree p = new Tree();
    it.set_tree(p);
    history.push(p);
  }}

  after -> Example, tree, Tree {{
    history.pop();
  }}

  before -> Tree, l, Label {{
    Tree it = (Tree) history.peek();
    Label p = new Label();
    it.set_l(p);
    history.push(p);
  }}

  after -> Tree, l, Label {{
    history.pop();
  }}

  before -> Tree, left, Tree {{
    Tree it = (Tree) history.peek();
    Tree p = new Tree();
    it.set_left(p);
    history.push(p);
  }}

  after -> Tree, left, Tree {{
    history.pop();
  }}

  before -> Tree, right, Tree {{
    Tree it = (Tree) history.peek();
    Tree p = new Tree();
    it.set_right(p);
    history.push(p);
  }}

  after -> Tree, right, Tree {{
    history.pop();
  }}

  before -> Label, v, int {{
    Label it = (Label) history.peek();
    it.set_v(dest);
  }}

  before -> SummingVisitor, total, int {{
    SummingVisitor it = (SummingVisitor) history.peek();
    it.set_total(dest);
  }}

  before -> SummingVisitor2, total, int {{
    SummingVisitor2 it = (SummingVisitor2) history.peek();
    it.set_total(dest);
  }}

  before -> PrintVisitor, indent, int {{
    PrintVisitor it = (PrintVisitor) history.peek();
    it.set_indent(dest);
  }}

  before -> PrintVisitor, needSpace, boolean {{
    PrintVisitor it = (PrintVisitor) history.peek();
    it.set_needSpace(dest);
  }}

  before -> SubgraphVisitor, is_equal, boolean {{
    SubgraphVisitor it = (SubgraphVisitor) history.peek();
    it.set_is_equal(dest);
  }}

  before -> EqualVisitor, is_equal, boolean {{
    EqualVisitor it = (EqualVisitor) history.peek();
    it.set_is_equal(dest);
  }}

  before -> DisplayVisitor, indent, int {{
    DisplayVisitor it = (DisplayVisitor) history.peek();
    it.set_indent(dest);
  }}

  before -> TraceVisitor, indent, int {{
    TraceVisitor it = (TraceVisitor) history.peek();
    it.set_indent(dest);
  }}

}