anchor.diff:  (defun once (event object listener)
     (%add-listener object event (make-listener listener :once t)))
   
  -(defun remove-listener (object event listener)
  +(defun remove-listener (object event listener &key(start 0))
     (let* ((silo (silo object))
            (listeners (gethash event silo)))
       (unless listeners
  
positive.code:                             :adjustable t :fill-pointer 0)))))
  
  (defun emit (event object &rest args)
    (let ((listeners (listeners object event)))
      (when (zerop (length listeners))
        (return-from emit nil))
  
      (map nil (lambda (listener)
               (let ((fn (listener-function listener)))
                 (apply fn args)
                 (when (listener-once listener)
                   (remove-listener object event fn))))
           (copy-seq listeners))
      t))
  
  (defun listener-count (object event)
  
negative.code:           (delete listener listeners
                    :test #'eq
                    :count 1
  				  :start start
                    :key #'listener-function)))
    (values))
  
  