anchor.diff:                        `(setq ,place ,store-sym)
                         place))))))
   
  -(defun expand-setf-values (place value env)
  -  "Expand a (setf (values foo...) bar) place."
  -  ;; TODO: Evaluation order & env.
  -  (let ((tmp-values (loop for i below (length (rest place))
  -                         collect (gensym "VALUE"))))
  -    `(multiple-value-bind ,tmp-values ,value
  -       (setf ,@(loop
  -                  for p in (rest place)
  -                  for v in tmp-values
  -                  collect p
  -                  collect v))
  -       ;; Evaluate to all values.
  -       (values ,@tmp-values))))
  -
   (defun expand-setf (place value env)
     "Expand a normal setf place."
     (multiple-value-bind (vars vals stores setter getter)
  
positive.code:             (list store)
              `(apply #'(setf ,real-function) ,store ,@vars)
              `(apply #',real-function ,@vars))))
  
negative.code:                        (list* (car place) call-vars)))))
  
  (defun get-setf-expansion (place &optional environment)
    (if (consp place)
        (let ((expander (and (symbolp (car place))
                             (get (car place) 'setf-expander))))
  