anchor.diff:                     (and data (data-name data)))
               :test #'string=))
   
  -(declaim (notinline bash))
  +#-debug (declaim (inline bash))
   (defun bash (idx module-number kind)
     (logior kind
             (ash (logior module-number
                          (ash idx +module-bits+))
                  +kind-bits+)))
   
  -(declaim (notinline ldb-module))
  +#-debug (declaim (inline ldb-module))
   (defun ldb-module (x)
     (ldb (byte +module-bits+ +kind-bits+) x))
   
  +#-debug (declaim (inline ldb-kind))
   (defun ldb-kind (x)
     (ldb (byte +kind-bits+ 0) x))
   
  -(declaim (notinline unbash))
  +#-debug (declaim (inline unbash))
   (defun unbash (x)
     (values (ldb (byte 16 (+ +module-bits+ +kind-bits+)) x)
             (ldb-module x)
             (ldb (byte +kind-bits+ 0) x)))
   
  +#-debug (declaim (inline unbash*))
   (defun unbash* (x expected-kind)
     (multiple-value-bind (idx <module> kind)
         (unbash x)
  -    (assert (eql kind expected-kind))
  +    #+debug (assert (eql kind expected-kind))
       (values idx <module> kind)))
   
   
  
positive.code: (defvar *module-data-table*
    (make-array (ash 1 +module-bits+) :initial-element nil))
  
  (declaim (notinline module-ref))
  (defun module-ref (i) (svref *module-table* i))
  
  (declaim (notinline data-ref))
  (defun data-ref (i) (svref *module-data-table* i))
  
  ;;;;
  
negative.code: (defun qclass-struct (<class>)
    (multiple-value-bind (idx <module>)
        (unbash* <class> +class+)
      #+debug (assert (<= 0 idx (data-nclasses (data-ref <module>))))
      (cffi:mem-aref (data-classes (data-ref <module>))
                     '|struct Class|
                     idx)))
  