public static Cons normalizeDefpropositionArguments(Cons arguments) {
    { Stella_Object name = arguments.value;
      Stella_Object proposition = arguments.rest.value;
      PropertyList options = null;
      Stella_Object value = null;
      Cons annotations = Stella.NIL;

      { Surrogate testValue000 = Stella_Object.safePrimaryType(arguments.value);

        if (Surrogate.subtypeOfSymbolP(testValue000)) {
        }
        else if (Surrogate.subtypeOfStringP(testValue000)) {
          name = Symbol.internSymbol(((StringWrapper)(arguments.value)).wrapperValue);
          arguments.firstSetter(name);
        }
        else {
          { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

            { Object old$PrintreadablyP$000 = Stella.$PRINTREADABLYp$.get();

              try {
                Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
                stream000.nativeStream.println("ERROR: Illegal proposition name where symbol or string expected: `" + name + "'.");
                Logic.helpSignalPropositionError(stream000, Logic.KWD_ERROR);

              } finally {
                Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$000);
              }
            }
            throw ((PropositionError)(PropositionError.newPropositionError(stream000.theStringReader()).fillInStackTrace()));
          }
        }
      }
      options = Stella_Object.vetOptions(arguments.rest.rest, null);
      value = options.lookup(Logic.KWD_FORWARDp);
      if (value != null) {
        options.removeAt(Logic.KWD_FORWARDp);
        options.insertAt(Logic.KWD_FORWARD_ONLYp, value);
      }
      value = options.lookup(Logic.KWD_BACKWARDp);
      if (value != null) {
        options.removeAt(Logic.KWD_BACKWARDp);
        options.insertAt(Logic.KWD_BACKWARD_ONLYp, value);
      }
      value = options.lookup(Logic.KWD_CONFIDENCE_LEVEL);
      if (value != null) {
        annotations = annotations.concatenate(Cons.list$(Cons.cons(Logic.KWD_CONFIDENCE_LEVEL, Cons.cons(value, Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL);
        options.removeAt(Logic.KWD_CONFIDENCE_LEVEL);
      }
      value = options.lookup(Logic.KWD_WEIGHT);
      if (value != null) {
        annotations = annotations.concatenate(Cons.list$(Cons.cons(Logic.KWD_WEIGHT, Cons.cons(value, Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL);
        options.removeAt(Logic.KWD_WEIGHT);
      }
      if (!(annotations == Stella.NIL)) {
        arguments.secondSetter(Cons.list$(Cons.cons(Logic.SYM_LOGIC_ABOUT, Cons.cons(proposition, Cons.cons(annotations.concatenate(Stella.NIL, Stella.NIL), Stella.NIL)))));
      }
      arguments.rest.rest = options.thePlist;
      return (arguments);
    }
  }