* @return Stella_Object
   */
  public static Stella_Object collect(Cons body) {
    { Symbol collection = Stella.localGensym("VALUE");

      if (body.rest.value == Stella.SYM_STELLA_FOREACH) {
        return (Cons.list$(Cons.cons(Stella.SYM_STELLA_VRLET, Cons.cons(Cons.cons(Cons.cons(collection, Cons.cons(Stella.SYM_STELLA_NIL, Stella.NIL)), Stella.NIL), Cons.cons(Cons.cons(Stella.SYM_STELLA_FOREACH, body.rest.rest.concatenate(Cons.list$(Cons.cons(Stella.SYM_STELLA_COLLECT, Cons.cons(body.value, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_INTO, Cons.cons(collection, Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL)))), Stella.NIL)), Cons.cons(collection, Cons.cons(Stella.NIL, Stella.NIL)))))));
      }
      else {
        return (Cons.list$(Cons.cons(Stella.SYM_STELLA_VRLET, Cons.cons(Cons.cons(Cons.cons(collection, Cons.cons(Stella.SYM_STELLA_NIL, Stella.NIL)), Stella.NIL), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_FOREACH, Cons.cons(body.value, Cons.cons(body.rest.concatenate(Cons.list$(Cons.cons(Stella.SYM_STELLA_COLLECT, Cons.cons(body.value, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_INTO, Cons.cons(collection, Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL)))), Stella.NIL), Stella.NIL)))), Cons.cons(collection, Cons.cons(Stella.NIL, Stella.NIL)))))));
      }
    }
  }