public static Cons walkWhileTree(Cons tree, Object [] MV_returnarray) {
    { Object old$Nofspecialsatloopentry$000 = Stella.$NOFSPECIALSATLOOPENTRY$.get();

      try {
        Native.setIntSpecial(Stella.$NOFSPECIALSATLOOPENTRY$, ((KeyValueList)(Stella.$SPECIALVARIABLESTACK$.get())).length());
        { Stella_Object test = Stella_Object.walkExpressionTree(tree.rest.value, Stella.SGT_STELLA_BOOLEAN, Stella.SYM_STELLA_WHILE, true, new Object[1]);
          Cons body = tree.rest.rest;

          tree.secondSetter(test);
          if (Stella_Object.proceduralExpressionP(test)) {
            tree.rest.rest = Stella.NIL;
            return (Cons.walkAConsTree(Cons.list$(Cons.cons(Stella.SYM_STELLA_LOOP, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_UNLESS, Cons.cons(test, Cons.cons(Cons.cons(Cons.cons(Stella.SYM_STELLA_BREAK, Stella.NIL), Stella.NIL), Stella.NIL)))), Cons.cons(body.concatenate(Stella.NIL, Stella.NIL), Stella.NIL)))), MV_returnarray));
          }
          tree.rest.rest = Cons.walkListOfStatements(tree.rest.rest);
          { Cons _return_temp = tree;

            MV_returnarray[0] = Stella.SGT_STELLA_VOID;
            return (_return_temp);
          }
        }

      } finally {
        Stella.$NOFSPECIALSATLOOPENTRY$.set(old$Nofspecialsatloopentry$000);
      }
    }
  }