anchor.diff:     ((not (slot-writable-p slotd))
       #'(lambda (object)
   	(error 'unwritable-slot :name (slot-definition-name slotd) :instance object)))
  -   ((slot-boundp slotd 'makunbound) (slot-value slotd 'makunbound))
  +   ((slot-boundp slotd 'makunbound)
  +    (let ((makunbound (slot-value slotd 'makunbound)))
  +      #-sbcl makunbound
  +      #+sbcl
  +      (etypecase makunbound
  +	(symbol #'(lambda (object) (funcall makunbound object)))
  +	(function makunbound))))
      ((slot-boundp slotd 'unbound)
       #'(lambda (object)
   	(funcall (slot-value slotd 'writer-function) (slot-value slotd 'unbound) object)))
  
positive.code: ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  
  ;; $Id: virtual-slots.lisp,v 1.4 2006-09-05 13:16:18 espen Exp $
  
  (in-package "GFFI")
  
  
negative.code:     (call-next-method)))
  
  (defmethod compute-slot-writer-function ((slotd effective-virtual-slot-definition))
    (let ((setter (slot-value slotd 'setter)))
      #-sbcl setter
      #+sbcl
      (etypecase setter
        (symbol #'(lambda (object value) (funcall setter object value)))
        (function setter))))
  
  (define-condition slot-can-not-be-unbound (cell-error)
    ((instance :reader slot-can-not-be-unbound-instance :initarg :instance))
  