anchor.diff:    (if (and (listp typespec) (stringp (car typespec)))
         (second typespec)
         typespec))
  +
  +(defun symbol* (s)
  +  (check-type s (and symbol (not null)))
  +  s)
   
   (define-wrapper-syntax defwrapper (name-and-options rettype &rest args)
     (multiple-value-bind (lisp-name foreign-name options)
  
positive.code: 
  (defun generate-c-lib-file (input-file output-defaults)
    (let ((*lisp-forms* nil)
          (c-file (make-pathname :type "c" :defaults output-defaults)))
      (with-open-file (out c-file :direction :output :if-exists :supersede)
        (with-open-file (in input-file :direction :input)
          (write-string *header* out)
  
negative.code:       (push `(cffi:defcfun (,foreign-name-wrap ,lisp-name ,@options)
                   ,(cffi-type rettype)
                 ,@(mapcar (lambda (arg)
                             (list (symbol* (first arg))
                                   (cffi-type (second arg))))
                           args))
              *lisp-forms*))))
  