anchor.diff:                      (,@(if constructor (list constructor)
                              #+sbcl`(make-instance ',lisp-type)
                              #-sbcl`(funcall (get-constructor-name ',lisp-type)))
  +                     ;; oneofs
  +                     ,@(loop for temp in oneofslots
  +                             for mtemp = (slot-value-to-slot-name-symbol temp)
  +                             nconc (list (intern (string mtemp) :keyword) temp))
                        ;; nonrepeating slots
                        ,@(loop for temp in nslots
                                for mtemp = (slot-value-to-slot-name-symbol temp)
  
positive.code:         (dolist (field fields)
            (when (and (include-field field)
                       (not (skip-field field)))
              (multiple-value-bind (tags deserializers nslot rslot)
                  (generate-field-deserializer message field vbuf vidx :raw-p raw-p)
                (assert tags)
                (assert deserializers)
  
negative.code:                       ;; Nonrepeating slots
                        (nslots collect-nslot)
                        ;; For tracking repeated slots that will need to be reversed
                        (rslots collect-rslot)
                        ;; For tracking oneof slots
                        (oneofslots collect-oneofslot))
        (flet ((include-field (field)
                 (or (eq include-fields :all)
                     (member (proto-external-field-name field)
  