public static void verifyOneArgumentType(Stella_Object arg, Surrogate type, Proposition proposition, NamedDescription description) {
    if ((((Keyword)(Logic.$TYPECHECKMODE$.get())) == Logic.KWD_IGNORE_TYPE_VIOLATIONS) ||
        (type.surrogateValue == null)) {
      return;
    }
    { Stella_Object argvalue = Logic.valueOf(arg);
      boolean typeisokP = false;
      Stella_Object substitutevalue = null;

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

        typeisokP = Logic.checkCoercedTypeP(argvalue, type, false, caller_MV_returnarray);
        substitutevalue = ((Stella_Object)(caller_MV_returnarray[0]));
      }
      if (!Stella_Object.eqlP(argvalue, substitutevalue)) {
        { Stella_Object argtoo = null;
          Vector vector000 = proposition.arguments;
          int index000 = 0;
          int length000 = vector000.length();
          Surrogate t = null;
          Cons iter000 = description.ioVariableTypes.theConsList;
          int i = Stella.NULL_INTEGER;
          int iter001 = 0;

          for (;(index000 < length000) &&
                    (!(iter000 == Stella.NIL)); 
                index000 = index000 + 1,
                iter000 = iter000.rest,
                iter001 = iter001 + 1) {
            argtoo = (vector000.theArray)[index000];
            t = ((Surrogate)(iter000.value));
            i = iter001;
            if (Stella_Object.eqlP(argtoo, arg) &&
                (t == type)) {
              (proposition.arguments.theArray)[i] = substitutevalue;
            }
          }
        }
      }
      else if (!typeisokP) {
        Proposition.handleArgumentTypeViolation(proposition, arg, type);
      }
    }
  }