public static Stella_Object accessDescriptionSlotValue(Description self, Symbol slotname, Stella_Object value, boolean setvalueP) {
    if (slotname == Logic.SYM_LOGIC_PROPOSITION) {
      if (setvalueP) {
        self.proposition = ((Proposition)(value));
      }
      else {
        value = self.proposition;
      }
    }
    else if (slotname == Logic.SYM_LOGIC_IO_VARIABLES) {
      if (setvalueP) {
        self.ioVariables = ((Vector)(value));
      }
      else {
        value = self.ioVariables;
      }
    }
    else if (slotname == Logic.SYM_LOGIC_INTERNAL_VARIABLES) {
      if (setvalueP) {
        self.internalVariables = ((Vector)(value));
      }
      else {
        value = self.internalVariables;
      }
    }
    else if (slotname == Logic.SYM_LOGIC_QUERY_PATTERNS) {
      if (setvalueP) {
        self.queryPatterns = ((KeyValueList)(value));
      }
      else {
        value = self.queryPatterns;
      }
    }
    else if (slotname == Logic.SYM_LOGIC_FORWARD_CHAINING_INDICES) {
      if (setvalueP) {
        KeyValueList.setDynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_FORWARD_CHAINING_INDICES, ((List)(value)), null);
      }
      else {
        value = self.forwardChainingIndices();
      }
    }
    else if (slotname == Logic.SYM_LOGIC_DEFERRED_CONTRAPOSITIVESp) {
      if (setvalueP) {
        KeyValueList.setDynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_DEFERRED_CONTRAPOSITIVESp, ((BooleanWrapper)(value)), null);
      }
      else {
        value = self.deferredContrapositivesP();
      }
    }
    else {
      if (slotname == Logic.SYM_LOGIC_RELATIVE_COMPLEMENT) {
        slotname = Logic.SYM_LOGIC_COMPLEMENT_DESCRIPTION;
      }
      else {
      }
      if (setvalueP) {
        KeyValueList.setDynamicSlotValue(self.dynamicSlots, slotname, value, null);
      }
      else {
        value = self.dynamicSlots.lookup(slotname);
      }
    }
    return (value);
  }