anchor.diff:  ;;----------------------------------------------------------------------
   
   (deftclass event-source
  -  (container-kind :unknown-kind :type keyword)
  +  (container-slot :unknown-slot :type keyword)
     (container-index -1 :type fixnum)
     (listeners (make-array 0 :element-type 'predicate-source :adjustable t
   			 :fill-pointer 0)
   	     :type (array predicate-source (*))))
   
  -(defun %set-container (source listeners-array container-kind index)
  +(defun %set-container (source listeners-array slot-name index)
     (setf (event-source-listeners source) listeners-array
  -	(event-source-container-kind source) container-kind
  +	(event-source-container-slot source) slot-name
   	(event-source-container-index source) index))
   
   (deftclass (predicate-source (:include event-source))
  
positive.code:          (defun ,make ()
             (let ((result (,constructor)))
  	     ,@(remove nil
  		       (mapcar (lambda (h a l)
  				 (when (not l)
  				   `(%set-container (,h result)
  						    (,a result)
  						    ',name
  						    -1)))
  			       hidden-slot-names
  			       listener-slot-names
  			       lengths))
  	     (initialize-kind result)
  	     result))
  	 (defmethod initialize-kind ((obj ,name)) obj)
  
negative.code:                                         (intern (format nil "MAKE-~a" n)
                                                  (symbol-package n)))
                                        types)))
        `(progn
           (deftclass (,name (:constructor ,constructor)
                             (:conc-name nil))
  