anchor.diff:    (ll-implicit-progn (cdr form))
     form)
   
  -;; NOTE: Only support required and keyword args.
  -;; Doesn't support fuzzy allow-other-keys matching or suppliedp variables.
  +;; Doesn't support fuzzy allow-other-keys matching.
   (defun arguments-match-lambda-list (lambda arg-list)
     (let ((arg-count (length arg-list))
  -        (req-count (length (lambda-information-required-args lambda))))
  +        (req-count (length (lambda-information-required-args lambda)))
  +        (opt-count (length (lambda-information-optional-args lambda))))
       (cond ((lambda-information-enable-keys lambda)
              (let ((keywords (mapcar 'caar (lambda-information-key-args lambda))))
                (when (and (>= arg-count req-count)
  -                        (evenp (- arg-count req-count)))
  -               (do ((i (nthcdr req-count arg-list) (cddr i)))
  +                        (evenp (- arg-count (+ req-count opt-count))))
  +               (do ((i (nthcdr (+ req-count opt-count) arg-list) (cddr i)))
                      ((null i)
                       t)
  -                 (when (third (car i))
  -                   (return nil))
                    (unless (and (listp (car i))
                                 (= (length (car i)) 2)
                                 (eql (first (car i)) 'quote)
                                 (member (second (car i)) keywords))
                      (return nil))))))
  -          (t (= arg-count req-count)))))
  +          ((lambda-information-rest-arg lambda)
  +           (<= req-count arg-count))
  +          (t (<= req-count arg-count (+ req-count opt-count))))))
   
   (defun lift-lambda (lambda arg-list)
  -  (let ((name (lambda-information-name lambda))
  +  (let ((name (or (lambda-information-name lambda) 'lambda))
   	(required-args (lambda-information-required-args lambda))
   	(optional-args (lambda-information-optional-args lambda))
   	(rest-arg (lambda-information-rest-arg lambda))
  
positive.code:     (dolist (arg required-args)
        (when (lexical-variable-p arg)
  	(setf (lexical-variable-definition-point arg) *current-lambda*)))
      #+nil(dolist (arg optional-args)
        (when (lexical-variable-p arg)
  	(setf (lexical-variable-definition-point arg) *current-lambda*)))
      #+nil(when (lexical-variable-p rest-arg)
        (setf (lexical-variable-definition-point rest-arg) *current-lambda*))
      (dolist (arg key-args)
        (when (lexical-variable-p (second (first arg)))
  
negative.code:             :format-arguments (list name))
        (return-from lift-lambda))
      ;; Attempt to match the argument list with the function's lambda list.
      (unless (arguments-match-lambda-list lambda arg-list)
        ;; Bail out.
        (warn 'simple-warning
  