anchor.diff:           list-1)))
   
   (defun union (list-1 list-2 &key key test test-not)
  +  (when (not key)
  +    (setf key 'identity))
     (check-type list-1 list)
     (check-type list-2 list)
     (check-test-test-not test test-not)
  -  (when (not key)
  -    (setf key 'identity))
     (cond ((and list-1 list-2)
  -         (let ((result (copy-list list-2)))
  +         (let ((result list-2))
              (dolist (e list-1)
                (when (not (member (funcall key e) list-2 :key key :test test :test-not test-not))
                  (push e result)))
  
positive.code:     result))
  
  (defun set-exclusive-or (list-1 list-2 &key key test test-not)
    (check-type list-1 list)
    (check-type list-2 list)
    (when (not key)
      (setf key 'identity))
    (let ((result '()))
      (dolist (e list-1)
        (when (not (member (funcall key e) list-2 :key key :test test :test-not test-not))
  
negative.code:         (list-2)))
  
  (defun intersection (list-1 list-2 &key key test test-not)
    (when (not key)
      (setf key 'identity))
    (check-type list-1 list)
    (check-type list-2 list)
    (check-test-test-not test test-not)
    (let ((result '()))
      (dolist (e list-1)
        (when (member (funcall key e) list-2 :key key :test test :test-not test-not)
  