public static Cons javaTranslateReturnTree(Cons tree) {
    { Cons otree = null;
      Cons returnassignments = Stella.NIL;
      Cons methodotherreturntypes = ((MethodSlot)(Stella.$METHODBEINGWALKED$.get())).methodReturnTypeSpecifiers().rest();
      Stella_Object returnexpression = null;
      Cons translatedreturnexpression = Stella.NIL;
      Cons mvreturnparametertranslation = Stella.NIL;

      { Stella_Object exp = null;
        Cons iter000 = tree.rest.rest;
        int parameterindex = Stella.NULL_INTEGER;
        int iter001 = 0;
        StandardObject parametertype = null;
        Cons iter002 = methodotherreturntypes;

        for (;(!(iter000 == Stella.NIL)) &&
                  (!(iter002 == Stella.NIL)); 
              iter000 = iter000.rest,
              iter001 = iter001 + 1,
              iter002 = iter002.rest) {
          exp = iter000.value;
          parameterindex = iter001;
          parametertype = ((StandardObject)(iter002.value));
          if (Surrogate.subtypeOfP(StandardObject.typeSpecToBaseType(parametertype), Stella.SGT_STELLA_LITERAL)) {
            mvreturnparametertranslation = ((Cons)(Stella_Object.javaTranslateATree(Cons.list$(Cons.cons(Stella.SYM_STELLA_SYS_CALL_FUNCTION, Cons.cons(Surrogate.lookupLiteralTypeInfo(StandardObject.typeSpecToBaseType(parametertype), Stella.KWD_WRAP_FUNCTION), Cons.cons(Cons.cons(exp, Stella.NIL), Stella.NIL)))))));
          }
          else {
            mvreturnparametertranslation = ((Cons)(Stella_Object.javaTranslateATree(exp)));
          }
          returnassignments = Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_JAVA_ASSIGN, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_JAVA_AREF, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_JAVA_IDENT, Cons.cons(StringWrapper.wrapString("MV_returnarray"), Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(IntegerWrapper.wrapInteger(parameterindex), Cons.cons(Stella.NIL, Stella.NIL))))), Cons.cons(mvreturnparametertranslation, Cons.cons(Stella.NIL, Stella.NIL))))), returnassignments);
        }
      }
      returnassignments = returnassignments.reverse();
      returnexpression = tree.rest.value;
      if ((methodotherreturntypes.length() > 0) &&
          ((tree.rest.rest == Stella.NIL) &&
           (Stella_Object.consP(returnexpression) &&
            ((((Cons)(returnexpression)).value != null) &&
             ((((Cons)(returnexpression)).value == Stella.SYM_STELLA_SYS_CALL_FUNCTION) ||
              (((Cons)(returnexpression)).value == Stella.SYM_STELLA_SYS_CALL_METHOD)))))) {
        translatedreturnexpression = Cons.javaTranslateMvFunctionCall(((Cons)(returnexpression)), Stella.SYM_STELLA_MV_returnarray);
      }
      else {
        translatedreturnexpression = ((Cons)(Stella_Object.javaTranslateATree(returnexpression)));
      }
      if (returnassignments == Stella.NIL) {
        if (tree.rest == Stella.NIL) {
          otree = Cons.cons(Stella.SYM_STELLA_JAVA_RETURN, Stella.NIL);
        }
        else {
          otree = Cons.list$(Cons.cons(Stella.SYM_STELLA_JAVA_RETURN, Cons.cons(translatedreturnexpression, Cons.cons(Stella.NIL, Stella.NIL))));
        }
      }
      else {
        { String tempvarname = "_return_temp";

          otree = Cons.list$(Cons.cons(Stella.SYM_STELLA_JAVA_BLOCK, Cons.cons(Cons.cons(Cons.cons(StandardObject.javaTranslateTypeSpec(((MethodSlot)(Stella.$METHODBEINGWALKED$.get())).computeReturnTypeSpec(((MethodSlot)(Stella.$METHODBEINGWALKED$.get())).slotOwner)), Cons.list$(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_JAVA_IDENT, Cons.cons(StringWrapper.wrapString(tempvarname), Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(translatedreturnexpression, Cons.cons(Stella.NIL, Stella.NIL))))), Stella.NIL), Cons.cons(Cons.cons(Stella.SYM_STELLA_JAVA_STATEMENTS, returnassignments.concatenate(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_JAVA_RETURN, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_JAVA_IDENT, Cons.cons(StringWrapper.wrapString(tempvarname), Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL), Stella.NIL)), Cons.cons(Stella.NIL, Stella.NIL)))));
        }
      }
      return (otree);
    }
  }