anchor.diff:  (in-package :clim-internals)
   
   (defun setf-name-p (name)
  -  (and (listp name) (eq (car name) 'setf)))
  +  (typep name '(cons (eql setf) (cons symbol null))))
   
   ;;; Many implementations complain if a defsetf definition and a setf function
   ;;; exist for the same place. Time to stop fighting that...
  
positive.code: SETF new value form."
    (unless (setf-name-p fun-name)
      (error "~S is not a valid name for a SETF* generic function." fun-name))
    (let ((setf-name (cadr fun-name))
          (gf (make-setf*-gfn-name fun-name)))
      (multiple-value-bind (required optional rest keys allow-other-keys aux keyp)
          (alexandria:parse-ordinary-lambda-list lambda-list)
        (when aux
          (error "The use of &aux is not allowed in generic function lambda list."))
        (let ((optional (make-arglist (mapcar #'car optional)))
              (keys (make-arglist (mapcar #'cadar keys))))
          `(progn
             (defsetf ,setf-name
                 (,(car (last required))
                  ,@(and optional `(&optional ,@optional))
                  ,@(and rest `(&rest ,rest))
                  ,@(and keyp `(&key ,@keys))
                  ,@(and allow-other-keys `(&allow-other-keys)))
                 ,(butlast required)
               `(funcall #',',gf ,,@required
                  ,,@(mapcar (lambda (x) `(and ,(third x) ,(car x))) optional)
                  ,@,@(mapcar (lambda (x) `(and ,(third x) `(,,(make-keyword (car x)) ,,(car x)))) keys)))
             (defgeneric ,gf ,lambda-list ,@options))))))
  
  (defmacro defmethod* (name lambda-list &body body)
    "Defines a SETF* method.  NAME is a SETF function name.  Otherwise,
  
negative.code: 			    (symbol-name '#:star))
  		    (symbol-package name-sym)))))
  
  (defmacro defgeneric* (fun-name lambda-list &body options)
    "Defines a SETF* generic function.  FUN-NAME is a SETF function
  name.  The last required argument is the single argument to the function in a
  