anchor.diff:      `(progn
          (deftclass (,name (:include event-source)
                            (:constructor ,constructor))
  -	 ,@(mapcar (lambda (s)
  -		     (destructuring-bind (name init type) s
  -		       `(,name ,init :type ,type)))
  -		   slots))
  +         ,@(mapcar (lambda (s)
  +                     (destructuring-bind (name init type) s
  +                       `(,name ,init :type ,type)))
  +                   slots))
          (defun ,make ()
            (,constructor))
          (defun ,apply ,apply-args
  
positive.code:   (container-slot :unknown-slot :type symbol)
    (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 slot-name index)
    (setf (event-source-listeners source) listeners-array
  	(event-source-container-slot source) slot-name
  	(event-source-container-index source) index))
  
  (deftclass (predicate-source (:include event-source))
    (predicate (error "Bug found in skitter: predicate-sources must always be created with predicate logic")))
  
negative.code:              (propagate ,this timestamp tpref))
             nil))
         (defmethod stop-listening ((listener ,name))
           ,@(loop :for s :in source-slots :collect
                `(remove-listener listener (,s listener)))
           (setf (predicate-source-predicate listener) #'source-is-unregistered
                 (event-source-listeners listener) nil
                 ,@(loop :for s :in source-slots :append
                      `((,s listener) nil)))))))
  
  (defun source-is-unregistered (_ _1 _2)
    (declare (ignore _ _1 _2))
    (error "Skitter: This predicate-source is not registered to anything"))
  
  (defmethod listen-to ((listener predicate-source) (input predicate-source)
                        &optional slot-name)
    (assert (null slot-name))
    (vector-push-extend listener (event-source-listeners input))
    (values listener input))
  
  (defmethod remove-listener ((listener predicate-source)
                              (input predicate-source))
    (shifting-remove (event-source-listeners input) listener *null-listener*)
    nil)
  
  