public static Cons walkCursorsTree(Cons cursorstree, boolean dontoptimizeP, Object [] MV_returnarray) {
    { Cons iteratorclauses = null;
      Cons valueclauses = null;
      Cons bumpclauses = null;
      Stella_Object continuationtest = null;

      { Object [] caller_MV_returnarray = new Object[3];

        iteratorclauses = Cons.collectCursorClauses(cursorstree, dontoptimizeP, caller_MV_returnarray);
        valueclauses = ((Cons)(caller_MV_returnarray[0]));
        bumpclauses = ((Cons)(caller_MV_returnarray[1]));
        continuationtest = ((Stella_Object)(caller_MV_returnarray[2]));
      }
      { Cons clause = null;
        Cons iter000 = ((Cons)(iteratorclauses));

        for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
          clause = ((Cons)(iter000.value));
          { Stella_Object iteratortree = null;
            StandardObject iteratortype = null;

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

              iteratortree = Stella_Object.walkExpressionTree(clause.rest.rest.value, ((StandardObject)(clause.rest.value)), Stella.SYM_STELLA_FOREACH, false, caller_MV_returnarray);
              iteratortype = ((StandardObject)(caller_MV_returnarray[0]));
            }
            clause.secondSetter(iteratortype);
            clause.thirdSetter(Stella_Object.coerceATree(iteratortree, iteratortype, iteratortype, new Object[1]));
          }
          Symbol.pushVariableBinding(((Symbol)(clause.value)), ((StandardObject)(clause.rest.value)));
        }
      }
      valueclauses = Cons.walkListOfTrees(valueclauses);
      bumpclauses = Cons.walkListOfTrees(bumpclauses);
      continuationtest = Stella_Object.walkWithoutTypeTree(continuationtest);
      { int i = Stella.NULL_INTEGER;
        int iter001 = 1;
        int upperBound000 = iteratorclauses.length();

        for (;iter001 <= upperBound000; iter001 = iter001 + 1) {
          i = iter001;
          i = i;
          Stella.popVariableBinding();
        }
      }
      { Cons _return_temp = iteratorclauses;

        MV_returnarray[0] = valueclauses;
        MV_returnarray[1] = bumpclauses;
        MV_returnarray[2] = continuationtest;
        return (_return_temp);
      }
    }
  }