// 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 -> Cd_graph, first, Adj {{
    Cd_graph it = (Cd_graph) history.peek();
    Adj p = new Adj();
    it.set_first(p);
    history.push(p);
  }}

  after -> Cd_graph, first, Adj {{
    history.pop();
  }}

  before -> Cd_graph, rest, Adj_list {{
    Cd_graph it = (Cd_graph) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_rest((Adj_list) p);
    history.push(p);
  }}

  after -> Cd_graph, rest, Adj_list {{
    history.pop();
  }}

  before -> Adj, vertex, Vertex {{
    Adj it = (Adj) history.peek();
    Vertex p = new Vertex();
    it.set_vertex(p);
    history.push(p);
  }}

  after -> Adj, vertex, Vertex {{
    history.pop();
  }}

  before -> Adj, ns, Neighbors {{
    Adj it = (Adj) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_ns((Neighbors) p);
    history.push(p);
  }}

  after -> Adj, ns, Neighbors {{
    history.pop();
  }}

  before -> Construct, c_ns, Any_vertex_list {{
    Construct it = (Construct) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_c_ns((Any_vertex_list) p);
    history.push(p);
  }}

  after -> Construct, c_ns, Any_vertex_list {{
    history.pop();
  }}

  before -> Alternat, first, Vertex {{
    Alternat it = (Alternat) history.peek();
    Vertex p = new Vertex();
    it.set_first(p);
    history.push(p);
  }}

  after -> Alternat, first, Vertex {{
    history.pop();
  }}

  before -> Alternat, second, Vertex {{
    Alternat it = (Alternat) history.peek();
    Vertex p = new Vertex();
    it.set_second(p);
    history.push(p);
  }}

  after -> Alternat, second, Vertex {{
    history.pop();
  }}

  before -> Syntax_vertex, string, String {{
    Syntax_vertex it = (Syntax_vertex) history.peek();
    it.set_string(dest);
  }}

  before -> Labeled_vertex, label_name, Ident {{
    Labeled_vertex it = (Labeled_vertex) history.peek();
    it.set_label_name(dest);
  }}

  before -> Labeled_vertex, class_name, Vertex {{
    Labeled_vertex it = (Labeled_vertex) history.peek();
    Vertex p = new Vertex();
    it.set_class_name(p);
    history.push(p);
  }}

  after -> Labeled_vertex, class_name, Vertex {{
    history.pop();
  }}

  before -> Nany_vertex_list, first, Any_vertex {{
    Nany_vertex_list it = (Nany_vertex_list) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_first((Any_vertex) p);
    history.push(p);
  }}

  after -> Nany_vertex_list, first, Any_vertex {{
    history.pop();
  }}

  before -> Nany_vertex_list, rest, Any_vertex_list {{
    Nany_vertex_list it = (Nany_vertex_list) history.peek();
    Class c = dest.getClass();
    Object p = null;
    try {
      p = c.newInstance();
    } catch(Exception e) {
      e.printStackTrace();
    }
    it.set_rest((Any_vertex_list) p);
    history.push(p);
  }}

  after -> Nany_vertex_list, rest, Any_vertex_list {{
    history.pop();
  }}

  before -> Vertex, name, Ident {{
    Vertex it = (Vertex) history.peek();
    it.set_name(dest);
  }}

  before -> CountingVisitor, total, int {{
    CountingVisitor it = (CountingVisitor) 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);
  }}

}