import demeter.*;
class DisplayVisitor extends UniversalVisitor implements Cloneable {
  protected int indent;
  public int get_indent() { return indent; }
  public void set_indent(int new_indent)
    { indent = new_indent; }
  DisplayVisitor() { super(); }
  public DisplayVisitor(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; }
    DisplayVisitor(java.io.PrintStream out) {
      set_out(out);
    }
    public void before(Person host) {
    out.print(": Person  (");
    indent++;
  }
  public void after(Person host) {
    out.print(" )");
    indent--;
  }
  public void before_personname(Person source, Ident dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<personname> ");
    out.print(" : Ident");
    out.print(" \"" + source.get_personname() + "\"");
  }
  public void before_spouse(Person source, Person dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<spouse> ");
  }
  public void before_siblings(Person source, Person_NList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<siblings> ");
  }
  public void before(Main host) {
    out.print(": Main  (");
    indent++;
  }
  public void after(Main host) {
    out.print(" )");
    indent--;
  }
  public void before(PrintVisitor host) {
    out.print(": PrintVisitor  (");
    indent++;
  }
  public void after(PrintVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_indent(PrintVisitor source, int dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<indent> ");
    out.print(" : int \"" + dest + "\"");
  }
  public void before_needSpace(PrintVisitor source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<needSpace> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before(CopyVisitor host) {
    out.print(": CopyVisitor  (");
    indent++;
  }
  public void after(CopyVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_copy(CopyVisitor source, Object dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<copy> ");
  }
  public void before(EqualVisitor host) {
    out.print(": EqualVisitor  (");
    indent++;
  }
  public void after(EqualVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_is_equal(EqualVisitor source, boolean dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<is_equal> ");
    out.print(" : boolean \"" + dest + "\"");
  }
  public void before(DisplayVisitor host) {
    out.print(": DisplayVisitor  (");
    indent++;
  }
  public void after(DisplayVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_indent(DisplayVisitor source, int dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<indent> ");
    out.print(" : int \"" + dest + "\"");
  }
  public void before(TraceVisitor host) {
    out.print(": TraceVisitor  (");
    indent++;
  }
  public void after(TraceVisitor host) {
    out.print(" )");
    indent--;
  }
  public void before_indent(TraceVisitor source, int dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<indent> ");
    out.print(" : int \"" + dest + "\"");
  }
  public void before(Person_NList host) {
    out.print(": Person_NList  {");
    indent++;
  }
  public void after(Person_NList host) {
    out.print(" }");
    indent--;
  }
  public void before_first(Person_NList source, Nonempty_Person_NList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<first> ");
  }
  public void before(Nonempty_Person_NList host) {
    out.print(": Nonempty_Person_NList  (");
    indent++;
  }
  public void after(Nonempty_Person_NList host) {
    out.print(" )");
    indent--;
  }
  public void before_it(Nonempty_Person_NList source, Person dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<it> ");
  }
  public void before_next(Nonempty_Person_NList source, Nonempty_Person_NList dest) {
    out.println();    for (int i = 0; i < indent; i++) out.print("\t");
    out.print("<next> ");
  }
  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_);
  }
}

