// 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 -> BusRoute, brn, BRN {{
    BusRoute it = (BusRoute) history.peek();
    BRN p = new BRN();
    it.set_brn(p);
    history.push(p);
  }}

  after -> BusRoute, brn, BRN {{
    history.pop();
  }}

  before -> BusRoute, buses, Bus_List {{
    BusRoute it = (BusRoute) history.peek();
    Bus_List p = new Bus_List();
    it.set_buses(p);
    history.push(p);
  }}

  after -> BusRoute, buses, Bus_List {{
    history.pop();
  }}

  before -> BusRoute, busStops, BusStop_List {{
    BusRoute it = (BusRoute) history.peek();
    BusStop_List p = new BusStop_List();
    it.set_busStops(p);
    history.push(p);
  }}

  after -> BusRoute, busStops, BusStop_List {{
    history.pop();
  }}

  before -> Bus, bn, BN {{
    Bus it = (Bus) history.peek();
    BN p = new BN();
    it.set_bn(p);
    history.push(p);
  }}

  after -> Bus, bn, BN {{
    history.pop();
  }}

  before -> Bus, passengers, Person_List {{
    Bus it = (Bus) history.peek();
    Person_List p = new Person_List();
    it.set_passengers(p);
    history.push(p);
  }}

  after -> Bus, passengers, Person_List {{
    history.pop();
  }}

  before -> BusStop, bsn, BSN {{
    BusStop it = (BusStop) history.peek();
    BSN p = new BSN();
    it.set_bsn(p);
    history.push(p);
  }}

  after -> BusStop, bsn, BSN {{
    history.pop();
  }}

  before -> BusStop, waiting, Person_List {{
    BusStop it = (BusStop) history.peek();
    Person_List p = new Person_List();
    it.set_waiting(p);
    history.push(p);
  }}

  after -> BusStop, waiting, Person_List {{
    history.pop();
  }}

  before -> Person, pn, PN {{
    Person it = (Person) history.peek();
    PN p = new PN();
    it.set_pn(p);
    history.push(p);
  }}

  after -> Person, pn, PN {{
    history.pop();
  }}

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

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

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

  before -> PN, string, String {{
    PN it = (PN) history.peek();
    it.set_string(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);
  }}

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

  after -> Bus_List, first, Nonempty_Bus_List {{
    history.pop();
  }}

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

  after -> BusStop_List, first, Nonempty_BusStop_List {{
    history.pop();
  }}

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

  after -> Person_List, first, Nonempty_Person_List {{
    history.pop();
  }}

  before -> Nonempty_Bus_List, it, Bus {{
    Nonempty_Bus_List it = (Nonempty_Bus_List) history.peek();
    Bus p = new Bus();
    it.set_it(p);
    history.push(p);
  }}

  after -> Nonempty_Bus_List, it, Bus {{
    history.pop();
  }}

  before -> Nonempty_Bus_List, next, Nonempty_Bus_List {{
    Nonempty_Bus_List it = (Nonempty_Bus_List) history.peek();
    Nonempty_Bus_List p = new Nonempty_Bus_List();
    it.set_next(p);
    history.push(p);
  }}

  after -> Nonempty_Bus_List, next, Nonempty_Bus_List {{
    history.pop();
  }}

  before -> Nonempty_BusStop_List, it, BusStop {{
    Nonempty_BusStop_List it = (Nonempty_BusStop_List) history.peek();
    BusStop p = new BusStop();
    it.set_it(p);
    history.push(p);
  }}

  after -> Nonempty_BusStop_List, it, BusStop {{
    history.pop();
  }}

  before -> Nonempty_BusStop_List, next, Nonempty_BusStop_List {{
    Nonempty_BusStop_List it = (Nonempty_BusStop_List) history.peek();
    Nonempty_BusStop_List p = new Nonempty_BusStop_List();
    it.set_next(p);
    history.push(p);
  }}

  after -> Nonempty_BusStop_List, next, Nonempty_BusStop_List {{
    history.pop();
  }}

  before -> Nonempty_Person_List, it, Person {{
    Nonempty_Person_List it = (Nonempty_Person_List) history.peek();
    Person p = new Person();
    it.set_it(p);
    history.push(p);
  }}

  after -> Nonempty_Person_List, it, Person {{
    history.pop();
  }}

  before -> Nonempty_Person_List, next, Nonempty_Person_List {{
    Nonempty_Person_List it = (Nonempty_Person_List) history.peek();
    Nonempty_Person_List p = new Nonempty_Person_List();
    it.set_next(p);
    history.push(p);
  }}

  after -> Nonempty_Person_List, next, Nonempty_Person_List {{
    history.pop();
  }}

}