public static Proposition buildAnnotatedProposition(Cons tree) {
    { Proposition proposition = ((Proposition)(Logic.buildProposition(tree.rest.value)));
      Cons options = tree.rest.rest;

      while (!(options == Stella.NIL)) {
        if (Stella_Object.isaP(options.value, Logic.SGT_STELLA_GENERALIZED_SYMBOL)) {
          options.firstSetter(((GeneralizedSymbol)(options.value)).keywordify());
        }
        else {
          { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

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

              try {
                Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
                stream000.nativeStream.println("PARSING ERROR: Illegal annotation option: `" + options.value + "'.");
                Logic.helpSignalPropositionError(stream000, Logic.KWD_ERROR);

              } finally {
                Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$000);
              }
            }
            throw ((ParsingError)(ParsingError.newParsingError(stream000.theStringReader()).fillInStackTrace()));
          }
        }
        if (!(options.rest.value != null)) {
          { OutputStringStream stream001 = OutputStringStream.newOutputStringStream();

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

              try {
                Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
                stream001.nativeStream.println("PARSING ERROR: Missing annotation value for option: `" + options.value + "'.");
                Logic.helpSignalPropositionError(stream001, Logic.KWD_ERROR);

              } finally {
                Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$001);
              }
            }
            throw ((ParsingError)(ParsingError.newParsingError(stream001.theStringReader()).fillInStackTrace()));
          }
        }
        options = options.rest.rest;
      }
      { PropertyList self004 = PropertyList.newPropertyList();

        self004.thePlist = tree.rest.rest;
        KeyValueList.setDynamicSlotValue(proposition.dynamicSlots, Logic.SYM_LOGIC_ANNOTATIONS, self004, null);
      }
      Proposition.finalizePropositionAnnotations(proposition);
      return (proposition);
    }
  }