interface empty { }; abstract class empcont implements java.io.Serializable {
   abstract boolean is_full();
   abstract void insert( emp e );
   abstract void insert( int empno, int age, java.lang.String dept, java.lang.String name );
} abstract class empcursor {
   abstract emp obj();
   abstract void insert( emp e );
   abstract void insert( int empno, int age, java.lang.String dept, java.lang.String name );
   abstract emp first();
   abstract boolean more();
   abstract emp next();
   abstract void remove();
}
final class empcont1 extends empcont implements empty { emp_1 first_1, last_1; empcont1() { 
      if ( emp_1.cont == null ) emp_1.cont = this;
      else
	  Jakarta.util.Util.fatalError("creating more than one instance");
     first_1 = last_1 = null;
   } public boolean is_full() {
      return false;
   } public void insert( emp e ) {
      new emp_1 ( this, e );
   } public void insert( int empno, int age, java.lang.String dept, java.lang.String name ) {
      new emp_1( this, empno, age, dept, name );
   }
     }
final class emp_1 extends emp { static public empcont1 cont = null; emp_1 left_1, right_1;
   boolean df_2; emp_1 ( ) { } emp_1 ( empcont1 c, emp e ) {
     super(e);
      dlist_relink_1(); df_2 = false;
   } emp_1 ( empcont1 c, int empno, int age, java.lang.String dept, java.lang.String name ) {
     super( empno, age, dept, name );
      dlist_relink_1(); df_2 = false;
   }

   // element unlinking methods

   
   final void dlist_relink_1() {
      left_1 = null;
      if (cont.last_1 == null) cont.last_1 = this;
      right_1 = cont.first_1;
      cont.first_1 = this;
      if (right_1 != null) right_1.left_1 = this;
   }

   // element linking methods

   
   final void dlist_unlink_1() {
      if (left_1 != null) left_1.right_1 = right_1;
      if (right_1 != null) right_1.left_1 = left_1;
      if (cont.first_1 == this) cont.first_1 = right_1;
      if (cont.last_1 == this) cont.last_1 = left_1;
   }

   // accessor functions - currently hardcoded to emp class

   
                   public int empno() {
                      return empno;
                   }
                   public int age() {
                      return age;
                   }
                   public java.lang.String dept() {
                      return dept;
                   }
                   public java.lang.String name() {
                      return name;
                   }

   // update functions - currently hardcoded to emp class

   
                   public int empno( int _newvalue ) { empno = _newvalue;
                      return empno;
                   }
                   public int age( int _newvalue ) { age = _newvalue;
                      return age;
                   }
                   public java.lang.String dept( java.lang.String _newvalue ) { dept = _newvalue;
                      return dept;
                   }
                   public java.lang.String name( java.lang.String _newvalue ) { name = _newvalue;
                      return name;
                   }
}

abstract class empcursor_1 extends empcursor implements java.util.Enumeration{

   // encapsulates only added data members and insert/remove methods

   public emp_1 obj;
   public empcont1 cont;

   public emp obj() {
      return obj;
   }

   public boolean hasMoreElements() {
      return more();
   }

   public Object nextElement() {
      Object ret = obj;
      next();
      return ret;
   }

   public void insert( emp e ) {
      obj = new emp_1 ( cont, e );
   }

   public void insert( int empno, int age, java.lang.String dept, java.lang.String name ) {
      obj = new emp_1( cont, empno, age, dept, name );
   }

   // note: once element is unlinked, it is effectively deleted from the container
   //       and will be garbage collected by Java once the cursor no longer points
   //       to it.

   public void remove() {
      obj.dlist_unlink_1();
      obj.df_2 = true;
   }

   // movement methods

   
      final protected void adv_1() { obj = obj.right_1; }
      final protected void start_1() { obj = cont.first_1; }
      final protected void back_1() { obj = obj.left_1; }
      final protected void end_1() { obj = cont.last_1; }
}
final class old extends empcursor_1 { // cursor-specific generated fields

   public old (empcont1 cont000 ) {
      obj = null; cont = cont000;
   }

	static public java.util.Enumeration elements(empcont1 cont000 ) { old enum_cur = new old( cont000 );
      enum_cur.first();
      return enum_cur;
   }

   public emp first() { start_1();
       while ( obj != null && !( obj. age() > 40) ) { adv_1();
       }
      return obj;
   }

   public boolean more() {
      return obj != null;
   }

   public emp next() { adv_1();
       while ( obj != null && !( obj. age() > 40) ) { adv_1();
       }
      return obj;
   }
}
final class all extends empcursor_1 { // cursor-specific generated fields

   public all (empcont1 cont000 ) {
      obj = null; cont = cont000;
   }

	static public java.util.Enumeration elements(empcont1 cont000 ) { all enum_cur = new all( cont000 );
      enum_cur.first();
      return enum_cur;
   }

   public emp first() { start_1();
      return obj;
   }

   public boolean more() {
      return obj != null;
   }

   public emp next() { adv_1();
      return obj;
   }
}
final class allname extends empcursor_1 { public int x;                  // cursor specific (user-defined) fields
   
         java.util.Vector vbuf_45; emp_1 []      buffer_45;
         int              index_45;
         int              asize_45; // cursor-specific generated fields

   public allname (empcont1 cont000, int x000 ) {
      obj = null; cont = cont000; x = x000;
   }

	static public java.util.Enumeration elements(empcont1 cont000, int x000 ) { allname enum_cur = new allname( cont000, x000 );
      enum_cur.first();
      return enum_cur;
   }

   public emp first() {
         vbuf_45 = new java.util.Vector( ); start_1();
       while ( obj != null && !( obj. age() == x) ) { adv_1();
       }
         while ( obj != null ){
            vbuf_45.addElement( obj ); adv_1();
       while ( obj != null && !( obj. age() == x) ) { adv_1();
       }
         }

         asize_45 = vbuf_45.size( );
         buffer_45 = new emp_1[asize_45 + 1];
         vbuf_45.copyInto( buffer_45 );
         /* 
          * add an extra null element to the array so that the 
          * code for nextMethod() could be as simple as possible
          */
         buffer_45[asize_45] = null;
         
         /* sort the buffer if needed */
         
            int incr = asize_45 / 2;
            while ( incr >= 1 ) {
               for ( int i = incr; i < asize_45; i++ ) { emp_1 tmp = buffer_45[i];
                  int j = i;
                  while ( j >= incr && tmp. name().compareTo( 
               buffer_45[j - incr]. name( )) <0 ) {
                     buffer_45[j] = buffer_45[j - incr];
                     j-= incr;
                  }
                  buffer_45[j] = tmp;
               }
               incr /= 2;
            }

         /* return the first element */
         obj = buffer_45[0];
         index_45 = 1;
      return obj;
   }

   public boolean more() {
      return index_45 <= asize_45;
   }

   public emp next() { obj = buffer_45[index_45++];
      return obj;
   }
}
final class allname1 extends empcursor_1 { // cursor-specific generated fields

   public allname1 (empcont1 cont000 ) {
      obj = null; cont = cont000;
   }

	static public java.util.Enumeration elements(empcont1 cont000 ) { allname1 enum_cur = new allname1( cont000 );
      enum_cur.first();
      return enum_cur;
   }

   public emp first() { start_1();
       while ( obj != null && !( obj. name().compareTo( "Don")==0) ) { adv_1();
       }
      return obj;
   }

   public boolean more() {
      return obj != null;
   }

   public emp next() { adv_1();
       while ( obj != null && !( obj. name().compareTo( "Don")==0) ) { adv_1();
       }
      return obj;
   }
}

