public static Cons walkMvValuesTree(Cons tree, Object [] MV_returnarray) {
    if (tree.length() == 1) {
      { Cons _return_temp = tree;

        MV_returnarray[0] = tree;
        MV_returnarray[1] = StandardObject.listifyTypeSpec(Stella.SGT_STELLA_VOID);
        return (_return_temp);
      }
    }
    { Stella_Object otree = null;
      StandardObject otype = null;
      List returntypes = List.newList();
      Cons typedsystree = null;

      otype = otype;
      { Object [] caller_MV_returnarray = new Object[1];

        otree = Cons.walkValuesTree(tree, caller_MV_returnarray);
        otype = ((StandardObject)(caller_MV_returnarray[0]));
      }
      tree.firstSetter(Stella.SYM_STELLA_VALUES);
      { ConsIterator it = tree.rest.allocateIterator();

        while (it.nextP()) {
          typedsystree = ((Cons)(it.value));
          returntypes.push(((StandardObject)(typedsystree.rest.rest.value)));
          if (Stella.SGT_STELLA_UNKNOWN == typedsystree.rest.rest.value) {
            it.valueSetter(typedsystree.rest.value);
          }
        }
      }
      { Cons _return_temp = ((Cons)(otree));

        MV_returnarray[0] = tree;
        MV_returnarray[1] = returntypes.reverse();
        return (_return_temp);
      }
    }
  }