anchor.diff:                                                         param-syms (when (foreign-function-variadic-p fun) rest))))))
                           `(defmacro ,fun-name (,@maybe-cbv-return
                                                 ,@param-names ,@(when (foreign-function-variadic-p fun) `(&rest ,rest)))
  +                           ,@(when maybe-cbv-return `((declare (ignorable ,@maybe-cbv-return))))
                              (let ((,!fun (find-function ',name-or-function)))
                                (with-slots ((,!fields fields)) ,!fun
                                  (foreign-to-ffi
  
positive.code:                     (if make-function-p
                          `(defun ,fun-name (,@maybe-cbv-return
                                             ,@param-names ,@(when (foreign-function-variadic-p fun) `(&rest ,rest)))
                             ,(let ((!fun (find-function name-or-function)))
                                (with-slots ((!fields fields)) !fun
                                  (foreign-to-ffi
  
negative.code:                      (symbol (enum-value ',type-name ,name))
                       (integer ,name)))))))
      `(let ((,name ,expansion))
         (declare (ignorable ,name))
         ,(next-ffi))))
  
  (defmethod foreign-to-ffi ((type foreign-alias) names params fields body)
    (if (eq :pointer (basic-foreign-type type))
        `(let ((,(car names) (autowrap:ptr ,(car params))))
           (declare (ignorable ,(car names)))
           ,(next-ffi))
        (foreign-to-ffi (foreign-type type) names params fields body)))
  
  (defmethod foreign-to-ffi ((type foreign-pointer) names params fields body)
    `(let ((,(car names) (ptr ,(car params))))
       (declare (ignorable ,(car names)))
       ,(next-ffi)))
  
  (defmethod foreign-to-ffi ((type foreign-string) names params fields body)
  