anchor.diff:      #'(lambda (object) (declare (ignore object)) nil))
   
      ;; An explicit boundp function has been supplied
  -   ((slot-boundp slotd 'boundp) (slot-value slotd 'boundp))
  -   
  +   ((slot-boundp slotd 'boundp)
  +    (let ((boundp (slot-value slotd 'boundp)))
  +      #-sbcl boundp
  +      #+sbcl
  +      (etypecase boundp
  +	(symbol #'(lambda (object) (funcall boundp object)))
  +	(function boundp))))
  +
      ;; An unbound value has been supplied
      ((slot-boundp slotd 'unbound)
       (let ((reader-function (compute-slot-reader-function slotd nil))
  
positive.code:     (call-next-method)))
  
  (defmethod compute-slot-writer-function ((slotd effective-virtual-slot-definition))
    (slot-value slotd 'setter))
  
  (define-condition slot-can-not-be-unbound (cell-error)
    ((instance :reader slot-can-not-be-unbound-instance :initarg :instance))
  
negative.code: 
  (defmethod compute-slot-reader-function ((slotd effective-virtual-slot-definition) &optional signal-unbound-p)
    (declare (ignore signal-unbound-p))
    (let ((getter (slot-value slotd 'getter)))
      #-sbcl getter
      #+sbcl
      (etypecase getter
        (symbol #'(lambda (object) (funcall getter object)))
        (function getter))))
  
  (defmethod compute-slot-boundp-function ((slotd effective-virtual-slot-definition))
    (cond
  