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


import demeter.*;
class Root implements Cloneable {
  private Ident className;
  public Ident get_className() { return className; }
  public void set_className(Ident new_className)
    { className = new_className; }
  private RootClass rootclass;
  public RootClass get_rootclass() { return rootclass; }
  public void set_rootclass(RootClass new_rootclass)
    { rootclass = new_rootclass; }
  Root() { }
  public Root(Ident className, RootClass rootclass) {
    super();
    set_className(className);
    set_rootclass(rootclass);
  }
  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();
	}

                Ident slot_name() { return className; }
          public void all(AppendVisitor av)
    { all_trv1(av); }
  public void all_trv1_bef(AppendVisitor av) {
    av.before(this);
  }
  public void all_trv1_aft(AppendVisitor av) {
    av.after(this);
  }
  public void all_trv1(AppendVisitor av) {
    all_trv1_bef(av);
    rootclass.all_trv1(av);
    all_trv1_aft(av);
  }
}

