anchor.diff:  (define-grovel-syntax cunion (union-lisp-name union-c-name &rest slots)
     (let ((documentation (when (stringp (car slots)) (pop slots))))
       (c-section-header out "cunion" union-lisp-name)
  -    (format out "  CFFI_DEFCUNION_START(~S, ~A, ~S);~%"
  +    (format out "  CFFI_DEFCUNION_START(~S, ~A, ~A);~%"
               (string union-lisp-name) union-c-name
  -            (or documentation 'null))
  +            (docstring-to-c documentation))
       (dolist (slot slots)
         (destructuring-bind (slot-lisp-name slot-c-name &key type (count 1))
             slot
  
positive.code:     (destructuring-bind (name &key (base-type :int) define-constants)
          (ensure-list name)
        (c-section-header out "cenum" name)
        (format out "  CFFI_DEFCENUM_START(~S, ~S, ~S);~%"
                (string name) (prin1-to-string base-type)
                (or documentation 'null))
        (dolist (enum enum-list)
          (destructuring-bind (lisp-name c-name &key documentation)
              enum
            (check-type lisp-name keyword)
            (format out "  CFFI_DEFCENUM_MEMBER(~S, ~A, ~S);~%"
                    (prin1-to-string lisp-name) c-name
                    (or documentation 'null))))
        (format out "  CFFI_DEFCENUM_END;~%")
        (when define-constants
          (define-constants-from-enum out enum-list)))))
  
negative.code: (define-grovel-syntax cstruct (struct-lisp-name struct-c-name &rest slots)
    (let ((documentation (when (stringp (car slots)) (pop slots))))
      (c-section-header out "cstruct" struct-lisp-name)
      (format out "  CFFI_DEFCSTRUCT_START(~S, ~A, ~A);~%"
              (string struct-lisp-name) struct-c-name
              (docstring-to-c documentation))
      (dolist (slot slots)
        (destructuring-bind (slot-lisp-name slot-c-name &key type (count 1))
            slot
  