anchor.diff:          for uncovered-indexes in *all-uncovered-indexes*
           for all-indexes in *all-pyramid-indexes*
           do (setf (gethash pyramid-flags state-caches)
  -                 (vector
  +                 (make-state-cache
  +                  :successor-masks
                     (successor-masks uncovered-indexes king-masks card-masks)
  +                  :h-cost
                     (h-cost all-indexes card-values)
  +                  :unwinnable-masks
                     (unwinnable-masks all-indexes card-values card-bucket-masks)))
           finally (return state-caches)))
   
  
positive.code:                            (svref *unrelated-card-masks* i))
                     masks))))))
  
  (deftype state-cache ()
    "SUCCESSOR-MASKS, H-COST, and UNWINNABLE-MASKS for a given PYRAMID-FLAGS."
    '(simple-vector 3))
  
  (defun make-state-caches (deck)
    "Precalculate all the data we need to speed up processing for each state.
  The result is a hash table indexed by one of 1430 PYRAMID-FLAGS, and the hash
  
negative.code:   "Return an estimate of how many steps to clear all 28 pyramid cards."
    (declare (optimize speed (safety 0))
             (type state-cache state-cache))
    (state-cache-h-cost state-cache))
  
  (declaim (inline state-unwinnable-p))
  (defun state-unwinnable-p (state state-cache)
  