anchor.diff:                                     :reader original-lambda-list))
     (:documentation "The superclass of all lambda list classes."))
   
  +(defmethod print-object ((ll lambda-list) stream)
  +  (print-unreadable-object (ll stream :type t :identity t)
  +    (when (compute-applicable-methods #'lambda-list-as-list `(,ll))
  +      (let ((*print-length* (or *print-length* 10)))
  +	;; PRINC because the names of KEYWORD-PARAMETERs are keywords.
  +	(princ (lambda-list-as-list ll) stream)))))
  +
   (defgeneric required-parameters (lambda-list)
     (:documentation "Return a list containing objects representing
   the required parameters of `lambda-list'.")
  
positive.code:   (:documentation "The base class for all parameter classes
  representing a named parameter."))
  
  (defmethod minimum-lambda-list-class ((parameter named-parameter))
    'semiordinary-lambda-list)
  
  
negative.code:                   :initform (error "A keyword parameter must have a keyword")
                    :reader keyword-name))
    (:documentation "The class for representing keyword parameters."))
  
  (defmethod print-object ((p keyword-parameter) stream)
    (print-unreadable-object (p stream :type t :identity t)
      (prin1 (keyword-name p) stream)))
  
  (defclass destructuring-required-parameter (destructuring-parameter required-parameter)
    ()
  