anchor.diff:               (:constructor make-aux-param (name #:FIXME_INIT))))
   
   
  +(defstruct (other-param-subset
  +             (:include param-subset)
  +             (:constructor %mk-other-param-subset
  +                           (members))))
  +
   
   (defstruct (lambda-signature
                (:constructor %mk-lambda-signature
                              (&key
  +                            lambda-list
  +                            ((:first first-param) nil)
                               ((:required required-param-subset) nil)
                               ((:optional optional-param-subset) nil)
                               ((:keyword keyword-param-subset) nil)
  +                            ((:other other-subset) nil)
                               ((:rest rest-param) nil)
                               )))
     ;; Ed. NB: See remarks about the design of this lambda list parser
  
positive.code:                           (values list &optional))
                  compute-lambda-list))
  
  (defun compute-lambda-list (signature ;; <- as a LAMBDA-SIGNATURE
                              #+TBD &optional #+TBD other-handler)
    ;; NB: OTHER-HANDLER - if provided, a function accepting one argument,
    ;; i.e a PARM object "not otherwise handled" below. Should return a
    ;; list of symbols (optionally null) such that ... TBD ordering for
    ;; OTHER-SUBSET onto the original lambda list expression.
    ;;
    ;; see also:  COMPUTE-LAMBDA-SIGNATURE
    (let* ((params (lambda-signature-params signature))
           (buf (make-array (length params) ;; NB: approx. final length
                           :fill-pointer 0 :adjustable t))
          restp
          context)
      (labels ((add-to-buffer (elt)
                 (vector-push-extend elt buf))
               (update-context (which)
                 (unless (eq context which)
                   (setq context which)
                   (add-to-buffer which))))
        (do-vector (param params)
          (let ((name (param-name param)))
          (etypecase param
            ;; NB: for now, not parsing for other types of lambda kwd
            (required-param
             (add-to-buffer name))
            ;; FIXME add parseer subtree for OPTIONAL-PARAM-SUBSET
            (optional-param
             (update-context (quote &optional))
             (add-to-buffer name))
            (rest-param
             (when restp
               (error "More than on &REST param in ~S" signature))
             (update-context (quote  &rest))
             (setq restp t)
             (add-to-buffer name))
            ;; FIXME add parseer subtree for KEY-PARAM-SUBSET
            (keyword-param
             ;; FIXME - need further processing here
             (update-context (quote &key))
             (add-to-buffer name))
            )))
  
        ;; FIXME - cheap hack, as yet
        (when (lambda-signature-allow-other-keys signature)
          (add-to-buffer (quote &allow-other-keys)))
  
        (coerce buf 'list))))
  
  
negative.code:    ;;
     ;;
     nil
     :type (or other-param-subset null)
     :read-only t)
    ;; TBD in extensions:
    ;; - AUX-PARAM-SUBSET - specifically for anonymous lambdas & defun forms
  