anchor.diff:  		,@(iterate-foreign-structure
   		   fields
   		   (lambda (field fn gn)
  -		     `((object
  -			(cffi:foreign-slot-value object ',name ',(first field))
  -			,(second field) ,fn)
  -		       ,(let ((decon
  -			       (option-from-name-and-options
  -				name-and-options :deconstructor 'elt)))
  -			     (if (listp decon)
  -				 `(,(nth gn decon) value)
  -				 `(,decon value ,gn)))))))))
  +		     `(,(structure-slot-form field name fn)
  +			,(let ((decon
  +				(option-from-name-and-options
  +				 name-and-options :deconstructor 'elt)))
  +			      (if (listp decon)
  +				  `(,(nth gn decon) value)
  +				  `(,decon value ,gn)))))))))
          ',name)))
  
positive.code:   "This structure has been defined for call-by-value."
    (member name *libffi-struct-defs*))
  
  (defun field-count (field)
    (getf field :count 1))
  
  (defun name-from-name-and-options (name-and-options)
    (if (listp name-and-options)
  
negative.code: 	(prog1
  	    (funcall form field fn gn)
  	  (incf gn)))))
  
  (defun structure-slot-form (field name fn)
    "A form for getting or setting the foreign slot value."
    (if (field-count field nil)		; aggregate slot
        `(object
  	(cffi:foreign-slot-value object ',name ',(first field))
  	,(second field) ,fn)
        ;; simple slot
        `(cffi:foreign-slot-value object ',name ',(first field))))
  
  (defmacro defcstruct (name-and-options &body fields)
    "A macro to define the struct to CFFI and to libffi simultaneously.
  