anchor.diff:                         (list* (car place) call-vars)))))
   
   (defun get-setf-expansion (place &optional environment)
  -  (assert (not (and (consp place) (eql (first place) 'values))) (place)
  -          "SETF VALUES not supported here.")
     (if (consp place)
         (let ((expander (and (symbolp (car place))
                              (get (car place) 'setf-expander))))
  
positive.code:                       `(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)
  
negative.code:         (error "Odd number of forms supplied to SETF."))
        (let ((place (car i))
              (value (cadr i)))
          (setf (cdr tail) (cons (expand-setf place value env) nil))))))
  
  (defmacro push (&environment env item place)
    (multiple-value-bind (vars vals stores setter getter)
  