import demeter.*;
class Person_NList implements java.util.Enumeration, Cloneable {
  protected Nonempty_Person_NList first;
  public Nonempty_Person_NList get_first() { return first; }
  public void set_first(Nonempty_Person_NList new_first)
    { first = new_first; }
  Person_NList() { super(); }
  public Person_NList(Nonempty_Person_NList first) {
    super();
    set_first(first);
  }
  public static Person_NList parse(java.io.InputStream in) throws ParseError
    { return new Parser(in)._Person_NList(); }
  public static Person_NList parse(String s) {
    try { return parse(new java.io.ByteArrayInputStream(s.getBytes())); }
    catch (ParseError e) { throw new RuntimeException(e.toString()); }
  }
  void universal_trv0_bef(UniversalVisitor _v_) {
    _v_.before(this);
  }
  void universal_trv0_aft(UniversalVisitor _v_) {
    _v_.after(this);
  }
  void universal_trv0(UniversalVisitor _v_) {
    universal_trv0_bef(_v_);
    _v_.before_first(this, first);
    first.universal_trv0(_v_);
    _v_.after_first(this, first);
    universal_trv0_aft(_v_);
  }
private Nonempty_Person_NList tail;
public void addElement(Person e) { 
  checktail(); 
  if (tail == null) {first = new Nonempty_Person_NList(e,null); tail = first;}
  else {tail.set_next(new Nonempty_Person_NList(e,null)); tail = tail.get_next();}
}

public void push(Person e) { first = new Nonempty_Person_NList(e,first);}

public java.util.Enumeration elements() { return new Person_NList(first); } 

public int size() {int i= 0; for (java.util.Enumeration e=elements();e.hasMoreElements();i++) e.nextElement(); return i;} 
public boolean isEmpty() { return (first == null);} 

public boolean hasMoreElements() {return (first != null);} 

public Object nextElement() { 
  Person car = first.get_it(); 
  first = first.get_next(); 
  return (Object) car; }

private void checktail() {
  if ((tail == null) && (first !=null)) {
    tail = first; 
    while (tail.get_next() != null) tail = tail.get_next();}} 
public boolean contains(Person e) {for (java.util.Enumeration en= this.elements(); en.hasMoreElements(); ) { if (e.equals((Person) en.nextElement())) return true; } return false; }
}

