 
	import java.io.*;
	import java.util.*;
	import demeter.*;
	import java.lang.*;


import demeter.*;
class Root extends SubClass implements Cloneable {
  private Ident className;
  public Ident get_className() { return className; }
  public void set_className(Ident new_className)
    { className = new_className; }
  private SubClass_List parent_of;
  public SubClass_List get_parent_of() { return parent_of; }
  public void set_parent_of(SubClass_List new_parent_of)
    { parent_of = new_parent_of; }
  Root() { }
  public Root(Ident className, SubClass_List parent_of) {
    super();
    set_className(className);
    set_parent_of(parent_of);
  }
  public static Root parse(java.io.InputStream in) throws ParseError
    { return new Parser(in)._Root(); }
  public static Root parse(String str) throws ParseError
    { return parse(new java.io.StringBufferInputStream(str)); }


Names Find_Name() {
	AppendVisitor av = new AppendVisitor(new Names());
	this.all(av);
	return av.get_names();
	}
  public void all(AppendVisitor av)
    { all_trv1(av); }
  public void all_trv1_bef(AppendVisitor av) {
    super.all_trv1_bef(av);
    av.before(this);
  }
  public void all_trv1_aft(AppendVisitor av) {
    av.after(this);
    super.all_trv1_aft(av);
  }
  public void all_trv1(AppendVisitor av) {
    all_trv1_bef(av);
    av.before(this, "parent_of", parent_of);
    parent_of.all_trv1(av);
    av.after(this, "parent_of", parent_of);
    super.all_trv1(av);
    all_trv1_aft(av);
  }
}

