+ #'(lambda (object)
+ (and
+ (funcall boundp-function object)
+ (funcall getter-function object)))))
+ ((multiple-value-bind (unbound-p unbound-value)
+ (unbound-value (slot-definition-type slotd))
+ (let ((slot-name (slot-definition-name slotd)))
+ (when unbound-p
+ #'(lambda (object)
+ (let ((value (funcall getter-function object)))
+ (if (eq value unbound-value)
+ (slot-unbound (class-of object) object slot-name)
+ value)))))))