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