anchor.diff:  (defun bind (object event handler)
     "Bind the handler function to the event in the bindings alist of the object.
   
  +If event is a list of events, bind the handler to each event separately.
  +
   The handlers will be called by the run-event-loop when keyboard or mouse events occur.
   
   The handler functions have two mandatory arguments, window and event.
  
positive.code: An event should be bound to the pre-defined function exit-event-loop."
    (flet ((ev (event)
             (let ((keymap (typecase (keymap object)
                             (keymap (keymap object))
                             (symbol (find-keymap (keymap object))))))
               ;; object-local bindings override the external keymap
               ;; an event is checked in the bindings first, then in the external keymap.
               (if (bindings object)
                   (if (assoc event (bindings object))
                       (assoc event (bindings object))
                       (if (and keymap (bindings keymap))
                           (assoc event (bindings keymap))
                           nil))
  
negative.code: 
  The key bindings alist is stored in the bindings slot of the object.
  
  An external keymap can be defined so several objects can share the same
  set of bindings.
  
  Object-local bindings override the external keymap. The local bindings
  are checked first for a handler, then the external keymap.
  
  If no handler is defined for the event, the default event handler t is tried.
  If not even a default handler is defined, the event is ignored.
  
  