public static Stella_Object accessPropositionSlotValue(Proposition self, Symbol slotname, Stella_Object value, boolean setvalueP) {
    if (slotname == Logic.SYM_STELLA_HOME_CONTEXT) {
      if (setvalueP) {
        self.homeContext = ((Context)(value));
      }
      else {
        value = self.homeContext;
      }
    }
    else if (slotname == Logic.SYM_LOGIC_KIND) {
      if (setvalueP) {
        self.kind = ((Keyword)(value));
      }
      else {
        value = self.kind;
      }
    }
    else if (slotname == Logic.SYM_LOGIC_TRUTH_VALUE) {
      if (setvalueP) {
        { Proposition object000 = self;
          TruthValue value000 = ((TruthValue)(value));
          Stella_Object oldValue000 = object000.truthValue;
          Stella_Object newValue000 = Stella_Object.updateInContext(oldValue000, value000, object000.homeContext, false);

          if (!((oldValue000 != null) &&
              (oldValue000.primaryType() == Logic.SGT_STELLA_CS_VALUE))) {
            object000.truthValue = newValue000;
          }
        }
      }
      else {
        value = ((TruthValue)(Stella_Object.accessInContext(self.truthValue, self.homeContext, false)));
      }
    }
    else if (slotname == Logic.SYM_STELLA_ARGUMENTS) {
      if (setvalueP) {
        self.arguments = ((Vector)(value));
      }
      else {
        value = self.arguments;
      }
    }
    else if (slotname == Logic.SYM_STELLA_OPERATOR) {
      if (setvalueP) {
        self.operator = ((GeneralizedSymbol)(value));
      }
      else {
        value = self.operator;
      }
    }
    else if (slotname == Logic.SYM_LOGIC_RELATIONREF) {
      if (setvalueP) {
        self.operator = ((Surrogate)(value));
      }
      else {
        value = ((Surrogate)(self.operator));
      }
    }
    else if (slotname == Logic.SYM_LOGIC_DEPENDENT_PROPOSITIONS) {
      if (setvalueP) {
        self.dependentPropositions = ((NonPagingIndex)(value));
      }
      else {
        value = self.dependentPropositions;
      }
    }
    else if (slotname == Logic.SYM_LOGIC_VARIABLE_TYPEp) {
      if (setvalueP) {
        KeyValueList.setDynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_VARIABLE_TYPEp, ((BooleanWrapper)(value)), null);
      }
      else {
        value = self.variableTypeP();
      }
    }
    else if (slotname == Logic.SYM_LOGIC_SATELLITE_PROPOSITIONS) {
      if (setvalueP) {
        KeyValueList.setDynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_SATELLITE_PROPOSITIONS, ((List)(value)), null);
      }
      else {
        value = self.satellitePropositions();
      }
    }
    else if (slotname == Logic.SYM_LOGIC_PROPOSITION_ORIGINATED_PROPOSITIONS) {
      if (setvalueP) {
        Logic.originatedPropositionsSetter(self, ((List)(value)));
      }
      else {
        value = Logic.originatedPropositions(self);
      }
    }
    else if (slotname == Logic.SYM_LOGIC_PROPOSITION_STRINGIFIED_SOURCE) {
      if (setvalueP) {
        Logic.stringifiedSourceSetter(self, ((StringWrapper)(value)).wrapperValue);
      }
      else {
        value = StringWrapper.wrapString(Logic.stringifiedSource(self));
      }
    }
    else if (slotname == Logic.SYM_LOGIC_UNFASTENEDp) {
      if (setvalueP) {
        KeyValueList.setDynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_UNFASTENEDp, ((BooleanWrapper)(value)), null);
      }
      else {
        value = self.unfastenedP();
      }
    }
    else if (slotname == Logic.SYM_LOGIC_WEIGHT_DELTA) {
      if (setvalueP) {
        KeyValueList.setDynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_WEIGHT_DELTA, FloatWrapper.wrapFloat(((FloatWrapper)(value)).wrapperValue), Stella.NULL_FLOAT_WRAPPER);
      }
      else {
        value = FloatWrapper.wrapFloat(self.weightDelta());
      }
    }
    else if (slotname == Logic.SYM_LOGIC_SUPPORT) {
      if (setvalueP) {
        KeyValueList.setDynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_SUPPORT, ((Cons)(value)), null);
      }
      else {
        value = self.support();
      }
    }
    else {
      if (setvalueP) {
        KeyValueList.setDynamicSlotValue(self.dynamicSlots, slotname, value, null);
      }
      else {
        value = self.dynamicSlots.lookup(slotname);
      }
    }
    return (value);
  }