anchor.diff:  			   return nil
   			 do (unless (consp (cddr rest))
   			      (error 'must-be-property-list
  -				     :datum plist
  +				     :datum ,(car store-vars)
   				     :name 'getf))
   			 when (eq (cadr rest) ,indicator-var)
   			   do (setf (cdr rest) (cdddr rest))
   			      (return t)
   			 finally (unless (null rest)
   				   (error 'must-be-property-list
  -					  :datum plist
  +					  :datum ,(car store-vars)
   					  :name 'getf))))))))))
   
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
positive.code:       (values (append vars (list indicator-var default-var))
  	      (append vals (list indicator default))
  	      (list value-var)
  	      `(progn (loop for rest on ,reader-form by #'cddr
  			    when (eq (car rest) ,indicator-var)
  			      do (setf (cadr rest) ,value-var)
  				 (return nil)
  			    finally (let ((,(car store-vars)
  					   (list* ,indicator-var ,value-var ,reader-form)))
  				      ,writer-form))
  		      ,value-var)
  	      `(getf ,reader-form ,indicator-var ,default)))))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
negative.code: (define-condition setf-c*r-must-be-cons (must-be-cons)
    ((%original-tree :initarg :original-tree :reader original-tree)
     (%access-string :initarg :access-string :reader access-string)))
  
  ;;; This condition is used by macros that detect that there
  ;;; is both a :test and a :test-not, and that detection is
  ;;; done at macro-expansion time. 
  (define-condition warn-both-test-and-test-not-given (warning name-mixin)
    ())
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  