anchor.diff:    (unserialize-let* (:string name)
       (intern name :keyword)))
   
  +;;; serializer for symbols
   (define-serializer (:symbol value)
     (declare (type symbol value))
     (serialize* :string (symbol-name value)
  
positive.code:                                            (if (symbolp ff)
                                                 `(slot-value ,var ',ff)
                                                 ff)))))
         (serialize-slots* ,var ,@type-slot-pairs))
       (define-unserializer (,key :layer ,layer
                                  :extra (,var ,@extra))
         (declare (ignorable ,var))
         (unserialize-let* ,(loop :for aa :on type-getter-var-list :by #'cdddr
                               :appending (list (first aa) (third aa)))
           (unserialize-slots* ,finder-form ,@type-slot-pairs)))))
negative.code:          (declare (ignore ,keysym))
           (apply #'unserialize ,was-key ,rest)))))
  
  ;;; serializer for objects fetched by a key
  (defmacro make-key-*-serializer (serialize-it unserialize-it
                                   (key var
                                           type-getter-var-list
                                           finder-form
                                           &key layer extra)
                                      &rest type-*-pairs)
    `(progn
       (define-serializer (,key ,var :layer ,layer :extra ,extra)
         (serialize* ,@(loop :for aa :on type-getter-var-list :by #'cdddr
  