public static Cons walkVariableArguments(Cons arguments, MethodSlot method, StandardObject firstargtype) {
    { StandardObject targettype = MethodSlot.variableArgumentsType(method);
      boolean listifyargsP = MethodSlot.passVariableArgumentsAsListP(method);
      boolean wrapargsP = false;
      Cons cursor = arguments;

      if ((!Stella_Object.typeP(targettype)) &&
          (firstargtype != null)) {
        targettype = StandardObject.computeRelativeTypeSpec(targettype, firstargtype);
      }
      wrapargsP = listifyargsP &&
          StandardObject.subTypeSpecOfP(targettype, Stella.SGT_STELLA_LITERAL);
      while (!(cursor == Stella.NIL)) {
        cursor.value = Stella_Object.walkExpressionTree(cursor.value, targettype, method.slotName, false, new Object[1]);
        cursor = cursor.rest;
      }
      if (listifyargsP) {
        { Cons listifiedargs = Cons.yieldListifiedVariableArguments(arguments, targettype, wrapargsP);

          if (arguments == Stella.NIL) {
            return (listifiedargs);
          }
          arguments.value = listifiedargs;
          arguments.rest = Stella.NIL;
        }
      }
      return (arguments);
    }
  }