public static Cons cppTranslateNormalMethodCall(Symbol methodname, Surrogate owner, Cons arguments, boolean referencedP) {
    { Slot slot = Stella_Class.lookupSlot(((Stella_Class)(owner.surrogateValue)), methodname);
      MethodSlot method = (Stella_Object.methodSlotP(slot) ? ((MethodSlot)(slot)) : null);
      Stella_Object firstarg = arguments.value;
      Cons otherargs = arguments.rest;

      { Cons operator = Symbol.cppLookupOperatorTable(methodname.softPermanentify());

        if (operator != null) {
          return (Cons.cppTranslateOperatorCall(operator, arguments, arguments.length()));
        }
      }
      if ((method != null) &&
          MethodSlot.cppMethodObjectIsOverloadedFunctionP(method)) {
        return (Cons.cppTranslateFunctionCall(Cons.cons(Symbol.cppCreateOverloadedFunctionName(methodname, owner), arguments.concatenate(Stella.NIL, Stella.NIL)), method));
      }
      { StringWrapper translatedname = Symbol.cppTranslateName(Symbol.yieldRenamedNameIfNative(methodname, Stella.KWD_CPP, Stella.KWD_FUNCTION));

        if ((method == null) &&
            Symbol.slotReaderFromNameP(methodname, owner)) {
          translatedname.wrapperValue = translatedname.wrapperValue + "_reader";
        }
        otherargs = otherargs.concatenate(MethodSlot.cppYieldUnusedDummyArgs(method, arguments), Stella.NIL);
        return (Cons.cons((referencedP ? Stella.SYM_STELLA_CPP_REFERENCED_METHOD_CALL : Stella.SYM_STELLA_CPP_METHOD_CALL), Cons.list$(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_CPP_IDENT, Cons.cons(GeneralizedSymbol.cppTranslateClassName(Symbol.internSymbolInModule(owner.symbolName, ((Module)(owner.homeContext)), false)), Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_CPP_IDENT, Cons.cons(translatedname, Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(Stella_Object.cppTranslateATree(firstarg), Cons.cons(Cons.cons((((method != null) &&
            (((BooleanWrapper)(KeyValueList.dynamicSlotValue(method.dynamicSlots, Stella.SYM_STELLA_METHOD_VARIABLE_ARGUMENTSp, Stella.FALSE_WRAPPER))).wrapperValue &&
             (!MethodSlot.passVariableArgumentsAsListP(method)))) ? Cons.cppTranslateVariableLengthActuals(otherargs, method) : Cons.cppTranslateActualParameters(otherargs)), Stella.NIL), Stella.NIL)))))));
      }
    }
  }