anchor.diff:                     (defun ,(sym (string lisp-type) "-SLOT-VALUE") (object slot)
                        (cffi:foreign-slot-value (,(sym (string lisp-type) "-POINTER") object)
                                                 '(:struct ,struct-type) slot))))
  +
  +         ,@(when destructor
  +                 `((defun ,%finalize-it (pointer)
  +                     (let ((object (,%make-it pointer)))
  +                       (sb-ext:finalize object (lambda () (,destructor pointer)))
  +                       object))))
            (defmethod cffi:expand-from-foreign (form (type ,cffi-type))
              ,(if destructor
  -                `(list 'foreign-container-finalizer form '#',%make-it '#',destructor)
  +                `(list ',%finalize-it form)
                   `(list ',%make-it form)))))))
   
   (defmacro def-foreign-container-accessor (lisp-type slot)
  
positive.code:   (labels ((sym (&rest args)
               (intern (apply #'concatenate 'string args)
                       (symbol-package lisp-type))))
      (let ((%make-it (sym "%MAKE-" (string lisp-type))))
        `(progn
           (defstruct (,lisp-type (:include foreign-container)
                                  (:constructor ,%make-it (pointer)))
  
negative.code: (defstruct foreign-container
    pointer)
  
  (defmacro def-foreign-container (lisp-type cffi-type
                                   &key
                                     slots
  