anchor.diff:  	
   (defun parse-generic-function-lambda-list (lambda-list)
     (let ((allowed '(&optional &rest &body &key &allow-other-keys)))
  -    (check-lambda-list-proper lambda-list)
  +    (check-lambda-list-proper lambda-list 'parse-generic-function-lambda-list)
       (check-lambda-list-keywords lambda-list allowed)
       (let ((positions (compute-keyword-positions lambda-list allowed))
   	  (result (make-instance 'lambda-list)))
  
positive.code: 	  (error 'malformed-destructuring-optional
  		 :code optional))
  	`(,(car optional)
  	  ,(if (> length 1) (cadr optional) default)
  	  . ,(cddr optional)))
        (progn
  	(unless (and (symbolp optional)
  		     (not (constantp optional)))
  	  (error 'malformed-destructuring-optional
  		 :code optional))
  	`(,optional nil))))
  
  (defun parse-destructuring-optional (optional)
    (parse-destructuring/deftype-optional optional nil))
  
negative.code: (defun check-lambda-list-not-circular (lambda-list)
    (when (eq (nth-value 1 (list-structure lambda-list)) :circular)
      (error 'lambda-list-must-not-be-circular
  	   :signaler 
  	   :code lambda-list)))
  
  ;;; Use this function for lambda lists that must be proper lists.
  (defun check-lambda-list-proper (lambda-list signaler)
    (unless (eq (nth-value 1 (list-structure lambda-list)) :proper)
      (error 'lambda-list-must-be-proper-list
  	   :signaler signaler
  	   :code lambda-list)))
  
  ;;; Check for restrictions common to all lambda lists.
  ;;;
  