public static StandardObject walkFirstArgumentToFunction(MethodSlot fnslot, Cons tree) {
    { List ptypespecs = fnslot.methodParameterTypeSpecifiers();
      StandardObject targetts = ((StandardObject)(ptypespecs.first()));

      if (!fnslot.methodEvaluateArgumentsP()) {
        tree.rest = MethodSlot.quoteArguments(fnslot, tree.rest);
      }
      if (((BooleanWrapper)(KeyValueList.dynamicSlotValue(fnslot.dynamicSlots, Stella.SYM_STELLA_METHOD_VARIABLE_ARGUMENTSp, Stella.FALSE_WRAPPER))).wrapperValue &&
          (ptypespecs.length() == 1)) {
        tree.rest = Cons.walkVariableArguments(tree.rest, fnslot, null);
        return (Stella.SGT_STELLA_UNKNOWN);
      }
      if ((tree.rest == Stella.NIL) ||
          fnslot.methodParameterTypeSpecifiers().emptyP()) {
        return (Stella.SGT_STELLA_UNKNOWN);
      }
      { Stella_Object otree = null;
        StandardObject otype = null;

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

          otree = Stella_Object.walkExpressionTree(tree.rest.value, targetts, fnslot.slotName, true, caller_MV_returnarray);
          otype = ((StandardObject)(caller_MV_returnarray[0]));
        }
        tree.secondSetter(otree);
        if (Surrogate.subtypeOfIntegerP(Stella_Object.safePrimaryType(otree))) {
          { IntegerWrapper otree000 = ((IntegerWrapper)(otree));

            { Symbol testValue000 = fnslot.slotName;

              if (testValue000 == Stella.SYM_STELLA_GET_SYM) {
                GeneralizedSymbol.registerSymbol(Symbol.getSymFromOffset(otree000.wrapperValue));
              }
              else if (testValue000 == Stella.SYM_STELLA_GET_SGT) {
                GeneralizedSymbol.registerSymbol(Surrogate.getSgtFromOffset(otree000.wrapperValue));
              }
              else if (testValue000 == Stella.SYM_STELLA_GET_KWD) {
                GeneralizedSymbol.registerSymbol(Keyword.getKwdFromOffset(otree000.wrapperValue));
              }
              else {
              }
            }
          }
        }
        else {
        }
        return (otype);
      }
    }
  }