anchor.diff:  		      (make-array 0 :element-type '(or ,element-type null) :adjustable t
   				  :fill-pointer 0))
   		    (%make-callback-array ()
  -		      (make-array 0 :element-type '(function (,root-type ,element-type) t)
  +		      (make-array 0 :element-type '(function (,bag-type ,element-type) t)
   				  :adjustable t :fill-pointer 0))
   
   		    (%remove-item-from-cache (bag pos-in-item-array)
  
positive.code: 	    :type (array fixnum (*)))
  	   (holes-in-items nil :type list)
  	   (added-callbacks
  	    (make-array 0 :element-type '(function (,root-type ,element-type) t)
  			:adjustable t :fill-pointer 0)
  	    :type (array (function (,root-type ,element-type) t) (*)))
  	   (removed-callbacks
  	    (make-array 0 :element-type '(function (,root-type ,element-type) t)
  				:adjustable t :fill-pointer 0)
  	    :type (array (function (,root-type ,element-type) t) (*)))
  	   (extension 100 :type fixnum)
  	   (parent nil :type (or ,root-type null)))
  
  	 (defstruct (,rummager-type (:include ,root-type))
  	   (predicate (error "predicate is mandatory to start rummaging")
  		      :type (function (,element-type) boolean)))
  
  	 (defstruct (,bag-type (:include ,root-type))
  	   (rummagers (make-array 0 :element-type ',rummager-type :adjustable t
  				  :fill-pointer 0)
  		      :type (array ,rummager-type (*))))
  
  	 (defmethod print-object ((object ,bag-type) stream)
  	   (format stream ,(format nil "#<BAG-OF-~s (~~s)>" element-type)
  
negative.code: 	 (defmethod print-object ((object ,rummager-type) stream)
  	   (format stream ,(format nil "#<RUMMAGER-FOR-BAGS-OF-~s (~~s) (~~s)>"
  				   element-type)
  		   (length (,item-cache (,rummager-bag object)))
  		   (,predicate object)))
  	 (let ((,eraser (let ((tmp ,(first eraser-instance)))
  			  (assert (typep tmp ',element-type)) tmp)))
  