* @return Stella_Object
   */
  public static Stella_Object firstDefined(Cons forms) {
    switch (forms.length()) {
      case 0: 
        return (Stella.SYM_STELLA_NULL);
      case 1: 
        return (forms.value);
      case 2: 
        if (Stella_Object.symbolP(forms.value)) {
          return (Cons.list$(Cons.cons(Stella.SYM_STELLA_CHOOSE, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_DEFINEDp, Cons.cons(forms.value, Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(forms.value, Cons.cons(Cons.cons(forms.rest.value, Stella.NIL), Stella.NIL))))));
        }
        else {
          { Symbol letvariable = Stella.localGensym("TEMP");

            return (Cons.list$(Cons.cons(Stella.SYM_STELLA_VRLET, Cons.cons(Cons.cons(Cons.cons(letvariable, Cons.cons(forms.value, Stella.NIL)), Stella.NIL), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_CHOOSE, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_DEFINEDp, Cons.cons(letvariable, Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(letvariable, Cons.cons(Cons.cons(forms.rest.value, Stella.NIL), Stella.NIL))))), Cons.cons(Stella.NIL, Stella.NIL))))));
          }
        }
      default:
        return (Cons.list$(Cons.cons(Stella.SYM_STELLA_FIRST_DEFINED, Cons.cons(forms.value, Cons.cons(Cons.cons(Cons.cons(Stella.SYM_STELLA_FIRST_DEFINED, forms.rest.concatenate(Stella.NIL, Stella.NIL)), Stella.NIL), Stella.NIL)))));
    }
  }