public static Cons walkReturnTree(Cons tree, Object [] MV_returnarray) {
    if (!(((MethodSlot)(Stella.$METHODBEINGWALKED$.get())) != null)) {
      { Object old$PrintreadablyP$000 = Stella.$PRINTREADABLYp$.get();

        try {
          Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
          Stella.signalTranslationError();
          if (!(Stella.suppressWarningsP())) {
            Stella.printErrorContext(">> ERROR: ", Stella.STANDARD_ERROR);
            {
              Stella.STANDARD_ERROR.nativeStream.println();
              Stella.STANDARD_ERROR.nativeStream.println(" Return statement encountered outside of method or function definition.");
            }
;
          }

        } finally {
          Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$000);
        }
      }
      return (Stella_Object.walkDontCallMeTree(tree, Stella.SGT_STELLA_VOID, MV_returnarray));
    }
    Native.setBooleanSpecial(Stella.$FOUNDRETURNp$, true);
    if (Stella.needToUnbindSpecialsP()) {
      return (Cons.walkReturnAndUnbindSpecials(tree, MV_returnarray));
    }
    { MethodSlot method = ((MethodSlot)(Stella.$METHODBEINGWALKED$.get()));
      List targettypes = List.newList();

      { StandardObject rtype = null;
        Cons iter000 = method.methodReturnTypeSpecifiers().theConsList;
        Cons collect000 = null;

        for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
          rtype = ((StandardObject)(iter000.value));
          if (collect000 == null) {
            {
              collect000 = Cons.cons(StandardObject.computeRelativeTypeSpec(rtype, method.slotOwner), Stella.NIL);
              if (targettypes.theConsList == Stella.NIL) {
                targettypes.theConsList = collect000;
              }
              else {
                Cons.addConsToEndOfConsList(targettypes.theConsList, collect000);
              }
            }
          }
          else {
            {
              collect000.rest = Cons.cons(StandardObject.computeRelativeTypeSpec(rtype, method.slotOwner), Stella.NIL);
              collect000 = collect000.rest;
            }
          }
        }
      }
      { Stella_Object otree = null;
        Cons valuestree = null;
        List valuetypes = null;

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

          otree = Stella_Object.walkMvExpressionTree((((tree.rest.length() == 1) &&
              (!(targettypes.rest() == Stella.NIL))) ? tree.rest.value : Cons.cons(Stella.SYM_STELLA_VALUES, tree.rest.concatenate(Stella.NIL, Stella.NIL))), targettypes, Stella.SYM_STELLA_RETURN, caller_MV_returnarray);
          valuestree = ((Cons)(caller_MV_returnarray[0]));
          valuetypes = ((List)(caller_MV_returnarray[1]));
        }
        targettypes.free();
        valuetypes.free();
        if (valuestree == null) {
          if (!(tree.rest == Stella.NIL)) {
            tree.secondSetter(otree);
          }
          { Cons _return_temp = tree;

            MV_returnarray[0] = Stella.SGT_STELLA_VOID;
            return (_return_temp);
          }
        }
        valuestree.firstSetter(Stella.SYM_STELLA_RETURN);
        { Cons _return_temp = ((Cons)(otree));

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