anchor.diff:  
   (defun %make-item-cache (&optional items)
     (if items
  -      (make-array (length items) :adjustable t :fill-pointer 0
  -		  :initial-contents items)
  +      (let ((l (length items)))
  +	(make-array l :adjustable t :fill-pointer l
  +		    :initial-contents items))
         (make-array 0 :adjustable t :fill-pointer 0)))
  -
  -(defun %make-item-to-cache-array ()
  -  (make-array 0 :element-type 'fixnum :adjustable t :fill-pointer 0))
   
   (defun %make-callback-array ()
     (make-array 0 :element-type '(function (bag t) t)
  
positive.code: 
    ;; a holeless array with the same elements as items
    (item-cache (%make-item-cache) :type (array t (*)))
  
    ;; an array where the nth element hold the index into the
    ;; item-cache where you can find the nth element of 'items
    (items-to-cache-indices (%make-item-to-cache-array) :type (array fixnum (*)))
  
    ;; quick lookup for cache state
    (cache-invalid-p nil :type boolean)
  
negative.code: 	  (bag-item-cache bag) (%make-item-cache)
  	  (bag-holes-in-items bag) nil
  	  (bag-cache-invalid-p bag) nil
  	  (bag-added-callbacks bag) (%make-callback-array)
  	  (bag-removed-callbacks bag) (%make-callback-array))
      (loop :for callback :across (bag-removed-callbacks bag) :do
  