anchor.diff:    (values (decode-hole-sig key)
             (decode-skill-sig-full key n)))
   
  +(declaim (inline hole-part))
  +(defun hole-part (key)
  +  (declare (type (unsigned-byte 64) key))
  +  (the (unsigned-byte 64) (ldb (byte 12 0) key)))
  +
   (declaim (inline encode-armor))
   (defun encode-armor (armor-piece required-effects)
     (let ((hole-sig (make-list 3 :initial-element 0))
  
positive.code:             (push (make-jewel-combo :key (the (unsigned-byte 64) it)
                                      :jewels (list (jewel-id piece)))
                    candidates)))
      (let ((full-map (make-map)))
        (labels ((expand (base)
                   (let ((expanded nil))
                     (loop for item in base
  
negative.code:                    (flood-fill (1+ iteration)
                                 (expand base)))))
          (flood-fill 1 candidates))
        (loop
           for key being the hash-keys of full-map
           for combos being the hash-values of full-map
           do (push combos (gethash (hole-part key)
                                    hole-map nil)))
        hole-map)))
        ;; (loop 
        ;;    for hole-key being the hash-keys of hole-map
        ;;    for values being the hash-values of hole-map
        ;;    do (format t "~a: ~a~%" 
        ;;               (decode-hole-sig hole-key)
        ;;               (length values))))))
  
  
  
  ;;; ---------- Search ----------
  
  