anchor.diff:             (unless args
                (done))
              (case (first args)
  -             ((&whole &optional &key &allow-other-keys &aux) (fail))
  +             ((&whole &optional &key &environment &allow-other-keys &aux &body) (fail))
                (t
                 (let ((arg (ensure-list (pop args))))
                   (funcall visitor '&aux (first arg) arg))
  
positive.code:              (done))
             (case (first args)
               (&key               (entering-&key))
               ((&whole &optional &rest &allow-other-keys) (fail))
               (&aux               (entering-&aux))
               (t                  (fail))))
           (entering-&optional ()
  
negative.code:   (error 'illegal-lambda-list :lambda-list lambda-list))
  
  (defun parse-lambda-list (lambda-list visitor &key macro)
    ;; TODO finish macro lambda list parsing
    (declare (optimize (speed 3))
             (type list lambda-list)
             (type (or symbol function) visitor))
  