public static Cons javaTranslateWhile(Cons tree) {
    { Object old$JavaLoopName$000 = Stella.$JAVA_LOOP_NAME$.get();
      Object old$JavaLoopNameUsedP$000 = Stella.$JAVA_LOOP_NAME_USEDp$.get();

      try {
        Native.setSpecial(Stella.$JAVA_LOOP_NAME$, Stella.localGensym("LOOP"));
        Native.setBooleanSpecial(Stella.$JAVA_LOOP_NAME_USEDp$, false);
        { Stella_Object test = Stella_Object.javaTranslateATree(tree.rest.value);
          Cons body = Cons.javaTranslateListOfTrees(tree.rest.rest);

          tree.rest.rest = Stella.NIL;
          if (((Boolean)(Stella.$JAVA_LOOP_NAME_USEDp$.get())).booleanValue()) {
            return (Cons.list$(Cons.cons(Stella.SYM_STELLA_JAVA_NAMED_STATEMENT, Cons.cons(Stella_Object.javaTranslateATree(((Symbol)(Stella.$JAVA_LOOP_NAME$.get()))), Cons.cons(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_JAVA_WHILE, Cons.cons(test, Cons.cons(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_JAVA_PROGN, Cons.cons(Cons.cons(Stella.SYM_STELLA_JAVA_STATEMENTS, body.concatenate(Stella.NIL, Stella.NIL)), Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL), Stella.NIL)))), Stella.NIL), Stella.NIL)))));
          }
          else {
            return (Cons.list$(Cons.cons(Stella.SYM_STELLA_JAVA_WHILE, Cons.cons(test, Cons.cons(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_JAVA_PROGN, Cons.cons(Cons.cons(Stella.SYM_STELLA_JAVA_STATEMENTS, body.concatenate(Stella.NIL, Stella.NIL)), Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL), Stella.NIL)))));
          }
        }

      } finally {
        Stella.$JAVA_LOOP_NAME_USEDp$.set(old$JavaLoopNameUsedP$000);
        Stella.$JAVA_LOOP_NAME$.set(old$JavaLoopName$000);
      }
    }
  }