anchor.diff:                    (list decl nil nil)
                     (cons nil (multiple-value-list
                                (funcall #'handle-defn-declaration
  -                                      name (rest decl)))))))))
  +                                      name func-name (rest decl)))))))))
       (list (remove nil (mapcar #'first data))    ;; cl-decl
             (remove nil (mapcar #'second data))   ;; heads
             (remove nil (mapcar #'third data))))) ;; tails
  
positive.code:     ftype           inline     special
      ignorable       notinline  type))
  
  (defgeneric handle-defn-declaration (name args)
    (:method (name args)
      nil))
  
  (defmacro define-defn-declaration (name args &body body)
    (assert (not (member name *standard-declarations*)) (name))
    (with-gensyms (gname d-args)
      `(defmethod handle-defn-declaration ((,gname (eql ',name)) ,d-args)
         (declare (ignore ,gname))
         (destructuring-bind ,args ,d-args
           ,@body))))
  
  (defun process-defn-declares (decls)
    (let ((data
           (loop :for decl :in decls :collect
              (let ((name (first decl)))
  
negative.code:       (parse-defn-args typed-args result-types)
      (multiple-value-bind (body decls doc) (parse-body body :documentation t)
        (destructuring-bind (decls heads tails)
            (process-defn-declares name (reduce #'append (mapcar #'rest decls)))
          (let* ((decls (if inline-p
                            (cons `(inline ,name) decls)
                            decls))
  