anchor.diff:  See also: `event', `e', `raw-event-value'"
     (when (eop-p event)
       (return-from event-value (values nil nil)))
  -  (let* ((key (make-keyword key))
  -         (cases (car (getf *event-special-keys* key)))
  +  (let* ((cases (car (getf *event-special-keys* key)))
            (cases (if (not (position key (keys cases))) ;; FIX: move this to when the special-key is defined instead?
                       (append (list key (lambda (event) (raw-event-value event key))) cases)
                       cases))
  
positive.code: 
  (defun (setf event-value) (value event key)
    "Set the value of KEY to VALUE in EVENT, running any conversion functions that exist."
    (let* ((key (make-keyword key))
           (cases (getf *event-special-keys* key)))
      (when (cadr cases) ;; remove keys that are different "units" of the same concept
        (dolist (k (remove-if (lambda (c) (eql c t)) (keys (car cases))))
          (remove-event-value event k)))
  
negative.code:   (assert (evenp (length params)) (params) "PARAMS must be a list of key/value pairs; got ~s" params)
    (let ((ev (make-instance 'event)))
      (doplist (key value params ev)
        (setf (event-value ev key) value))))
  
  (defparameter *event-special-keys* (list)
    "Plist mapping event special keys to their case lists.")
  