public static Cons cppTranslateFunctionParameters(MethodSlot method) {
    { boolean skipfirstparameterP = !MethodSlot.cppMethodObjectIsFunctionP(method);
      boolean variableargumentsP = ((BooleanWrapper)(KeyValueList.dynamicSlotValue(method.dynamicSlots, Stella.SYM_STELLA_METHOD_VARIABLE_ARGUMENTSp, Stella.FALSE_WRAPPER))).wrapperValue &&
          (!MethodSlot.passVariableArgumentsAsListP(method));
      Cons translatedparameters = Stella.NIL;

      { Symbol pname = null;
        Cons iter000 = method.methodParameterNames().theConsList;
        StandardObject ptype = null;
        Cons iter001 = method.methodParameterTypeSpecifiers().theConsList;
        int i = Stella.NULL_INTEGER;
        int iter002 = 1;
        Cons collect000 = null;

        for (;(!(iter000 == Stella.NIL)) &&
                  (!(iter001 == Stella.NIL)); 
              iter000 = iter000.rest,
              iter001 = iter001.rest,
              iter002 = iter002 + 1) {
          pname = ((Symbol)(iter000.value));
          ptype = ((StandardObject)(iter001.value));
          i = iter002;
          if (((!skipfirstparameterP) ||
              (i > 1)) &&
              ((!variableargumentsP) ||
               (!(pname == MethodSlot.variableArgumentsName(method))))) {
            if (collect000 == null) {
              {
                collect000 = Cons.cons(Symbol.cppTranslateFunctionParameter(pname, ptype, method), Stella.NIL);
                if (translatedparameters == Stella.NIL) {
                  translatedparameters = collect000;
                }
                else {
                  Cons.addConsToEndOfConsList(translatedparameters, collect000);
                }
              }
            }
            else {
              {
                collect000.rest = Cons.cons(Symbol.cppTranslateFunctionParameter(pname, ptype, method), Stella.NIL);
                collect000 = collect000.rest;
              }
            }
          }
        }
      }
      { StandardObject rtype = null;
        Cons iter003 = method.methodReturnTypeSpecifiers().rest();
        int rtypeindex = Stella.NULL_INTEGER;
        int iter004 = 1;
        Cons collect001 = null;

        for (;!(iter003 == Stella.NIL); iter003 = iter003.rest, iter004 = iter004 + 1) {
          rtype = ((StandardObject)(iter003.value));
          rtypeindex = iter004;
          if (collect001 == null) {
            {
              collect001 = Cons.cons(Stella.cppTranslateReturnParameter(rtypeindex, rtype), Stella.NIL);
              if (translatedparameters == Stella.NIL) {
                translatedparameters = collect001;
              }
              else {
                Cons.addConsToEndOfConsList(translatedparameters, collect001);
              }
            }
          }
          else {
            {
              collect001.rest = Cons.cons(Stella.cppTranslateReturnParameter(rtypeindex, rtype), Stella.NIL);
              collect001 = collect001.rest;
            }
          }
        }
      }
      return (translatedparameters.concatenate(((variableargumentsP ? Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_CPP_VAR_ARGS, Cons.cons(Symbol.cppTranslateName(MethodSlot.variableArgumentsName(method)), Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL) : Stella.NIL)).concatenate(Stella.NIL, Stella.NIL), Stella.NIL));
    }
  }