anchor.diff:  
   (defmethod translate-from-foreign (value (type foreign-bitfield))
     (%foreign-bitfield-symbols type value))
  +
  +(defmethod expand-to-foreign (value (type foreign-bitfield))
  +  (flet ((expander (value type)
  +           `(if (integerp ,value)
  +                ,value
  +                (%foreign-bitfield-value ,type (ensure-list ,value)))))
  +    (if (constantp value)
  +        (eval (expander value type))
  +        (expander value type))))
  +
  +(defmethod expand-from-foreign (value (type foreign-bitfield))
  +  (flet ((expander (value type)
  +           `(%foreign-bitfield-symbols ,type ,value)))
  +    (if (constantp value)
  +        (eval (expander value type))
  +        (expander value type))))
  
positive.code:         (error "~S is not a foreign bitfield type." type)
          (%foreign-bitfield-symbols type-obj value))))
  
  (defmethod translate-to-foreign (value (type foreign-bitfield))
    (if (integerp value)
        value
  
negative.code:       (error "~S is not a foreign bitfield type." type)
        (%foreign-bitfield-value type-obj symbols))))
  
  (define-compiler-macro foreign-bitfield-value (&whole form type symbols)
    "Optimize for when TYPE and SYMBOLS are constant."
    (if (and (constantp type) (constantp symbols))
        (let ((type-obj (parse-type (eval type))))
          (if (not (typep type-obj 'foreign-bitfield))
              (error "~S is not a foreign bitfield type." type)
              (%foreign-bitfield-value type-obj (eval symbols))))
        form))
  
  (defun %foreign-bitfield-symbols (type value)
    (check-type value integer)
    (loop for mask being the hash-keys in (value-symbols type)
  