public static Cons walkValuesTree(Cons tree, Object [] MV_returnarray) {
    { Stella_Object otree = null;
      StandardObject otype = null;
      Cons bindtree = Stella.NIL;
      Symbol valuevar = null;
      boolean hasproceduralvalueP = false;

      { ConsIterator it = tree.rest.allocateIterator();

        loop000 : while (it.nextP()) {
          { Object [] caller_MV_returnarray = new Object[1];

            otree = Stella_Object.walkATree(it.value, caller_MV_returnarray);
            otype = ((StandardObject)(caller_MV_returnarray[0]));
          }
          if (Stella_Object.vrletExpressionP(otree)) {
            it.valueSetter(otree);
            hasproceduralvalueP = true;
            break loop000;
          }
          otree = Stella_Object.sysTree(otree, otype, new Object[1]);
          if (StandardObject.voidP(otype)) {
            otree = ((Cons)(otree)).concatenate(Cons.cons(Stella.SGT_STELLA_VOID, Stella.NIL), Stella.NIL);
          }
          it.valueSetter(otree);
        }
      }
      if (!hasproceduralvalueP) {
        tree.firstSetter(Stella.SYM_STELLA_PROGN);
        { Cons _return_temp = tree;

          MV_returnarray[0] = Stella.SGT_STELLA_VOID;
          return (_return_temp);
        }
      }
      { ConsIterator it = tree.rest.allocateIterator();

        loop001 : while (it.nextP()) {
          { Cons value = ((Cons)(it.value));

            if (Stella_Object.proceduralExpressionP(value) ||
                (!Stella_Object.atomicExpressionP(value.rest.value))) {
              valuevar = Stella.localGensym("VALUE");
              bindtree = Cons.cons(Cons.cons(valuevar, Cons.cons((Stella_Object.proceduralExpressionP(value) ? value : value.rest.value), Stella.NIL)), bindtree);
              if (Stella_Object.proceduralExpressionP(value)) {
                it.valueSetter(valuevar);
                break loop001;
              }
              else {
                value.secondSetter(valuevar);
              }
            }
          }
        }
      }
      return (Cons.walkAConsTree(Cons.list$(Cons.cons(Stella.SYM_STELLA_LET, Cons.cons(bindtree.reverse(), Cons.cons(Cons.cons(tree, Stella.NIL), Stella.NIL)))), MV_returnarray));
    }
  }