import demeter.*;
class TraceVisitor extends UniversalVisitor implements Cloneable {
  protected int indent;
  public int get_indent() { return indent; }
  public void set_indent(int new_indent)
    { indent = new_indent; }
  TraceVisitor() { super(); }
  public TraceVisitor(int indent) {
    super();
    set_indent(indent);
  }

    private java.io.PrintStream out = System.out;
    java.io.PrintStream get_out() { return out; }
    void set_out(java.io.PrintStream new_out)
      { out = new_out; }
    TraceVisitor(java.io.PrintStream out) {
      set_out(out);
    }
    public void before(Person host) {
    out.println("before Person");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Person host) {
    out.println("after Person");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_personname(Person source, Ident dest) {
    out.println("before -> Person, personname, Ident");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_personname(Person source, Ident dest) {
    out.println("after -> Person, personname, Ident");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_spouse(Person source, Person dest) {
    out.println("before -> Person, spouse, Person");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_spouse(Person source, Person dest) {
    out.println("after -> Person, spouse, Person");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_siblings(Person source, Person_NList dest) {
    out.println("before -> Person, siblings, Person_NList");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_siblings(Person source, Person_NList dest) {
    out.println("after -> Person, siblings, Person_NList");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Main host) {
    out.println("before Main");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Main host) {
    out.println("after Main");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(PrintVisitor host) {
    out.println("before PrintVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(PrintVisitor host) {
    out.println("after PrintVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_indent(PrintVisitor source, int dest) {
    out.println("before -> PrintVisitor, indent, int");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_indent(PrintVisitor source, int dest) {
    out.println("after -> PrintVisitor, indent, int");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_needSpace(PrintVisitor source, boolean dest) {
    out.println("before -> PrintVisitor, needSpace, boolean");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_needSpace(PrintVisitor source, boolean dest) {
    out.println("after -> PrintVisitor, needSpace, boolean");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(CopyVisitor host) {
    out.println("before CopyVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(CopyVisitor host) {
    out.println("after CopyVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_copy(CopyVisitor source, Object dest) {
    out.println("before -> CopyVisitor, copy, Object");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_copy(CopyVisitor source, Object dest) {
    out.println("after -> CopyVisitor, copy, Object");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(EqualVisitor host) {
    out.println("before EqualVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(EqualVisitor host) {
    out.println("after EqualVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_is_equal(EqualVisitor source, boolean dest) {
    out.println("before -> EqualVisitor, is_equal, boolean");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_is_equal(EqualVisitor source, boolean dest) {
    out.println("after -> EqualVisitor, is_equal, boolean");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(DisplayVisitor host) {
    out.println("before DisplayVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(DisplayVisitor host) {
    out.println("after DisplayVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_indent(DisplayVisitor source, int dest) {
    out.println("before -> DisplayVisitor, indent, int");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_indent(DisplayVisitor source, int dest) {
    out.println("after -> DisplayVisitor, indent, int");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(TraceVisitor host) {
    out.println("before TraceVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(TraceVisitor host) {
    out.println("after TraceVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_indent(TraceVisitor source, int dest) {
    out.println("before -> TraceVisitor, indent, int");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_indent(TraceVisitor source, int dest) {
    out.println("after -> TraceVisitor, indent, int");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(UniversalVisitor host) {
    out.println("before UniversalVisitor");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(UniversalVisitor host) {
    out.println("after UniversalVisitor");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Person_NList host) {
    out.println("before Person_NList");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Person_NList host) {
    out.println("after Person_NList");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_first(Person_NList source, Nonempty_Person_NList dest) {
    out.println("before -> Person_NList, first, Nonempty_Person_NList");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_first(Person_NList source, Nonempty_Person_NList dest) {
    out.println("after -> Person_NList, first, Nonempty_Person_NList");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before(Nonempty_Person_NList host) {
    out.println("before Nonempty_Person_NList");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after(Nonempty_Person_NList host) {
    out.println("after Nonempty_Person_NList");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_it(Nonempty_Person_NList source, Person dest) {
    out.println("before -> Nonempty_Person_NList, it, Person");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_it(Nonempty_Person_NList source, Person dest) {
    out.println("after -> Nonempty_Person_NList, it, Person");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void before_next(Nonempty_Person_NList source, Nonempty_Person_NList dest) {
    out.println("before -> Nonempty_Person_NList, next, Nonempty_Person_NList");
    indent++;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  public void after_next(Nonempty_Person_NList source, Nonempty_Person_NList dest) {
    out.println("after -> Nonempty_Person_NList, next, Nonempty_Person_NList");
    indent--;
    for (int i = 0; i < indent; i++) out.print(" ");
  }
  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_);
    super.universal_trv0(_v_);
    universal_trv0_aft(_v_);
  }
}

