+ object)
+
+(defmethod slot-value-using-class
+ ((class condition-class)
+ (object condition)
+ (slotd condition-effective-slot-definition))
+ (let ((fun (slot-definition-reader-function slotd)))
+ (declare (type function fun))
+ (funcall fun object)))
+
+(defmethod (setf slot-value-using-class)
+ (new-value
+ (class condition-class)
+ (object condition)
+ (slotd condition-effective-slot-definition))
+ (let ((fun (slot-definition-writer-function slotd)))
+ (declare (type function fun))
+ (funcall fun new-value object)))
+
+(defmethod slot-boundp-using-class
+ ((class condition-class)
+ (object condition)
+ (slotd condition-effective-slot-definition))
+ (let ((fun (slot-definition-boundp-function slotd)))
+ (declare (type function fun))
+ (funcall fun object)))
+
+(defmethod slot-makunbound-using-class ((class condition-class) object slot)
+ (error "attempt to unbind slot ~S in condition object ~S."
+ slot object))