anchor.diff:                      (type array-index ,vidx ,vlim))
              (let (,@(loop for slot in nslots
                            collect `(,slot ,missing-value))
  -                 ,@(loop for oneofslot in oneofslots
  -                         collect `(,oneofslot (make-instance 'oneof)))
  +                 ,@(loop for oneof-slot in oneof-slots
  +                         collect `(,oneof-slot (make-instance 'oneof)))
                    ,@rtemps)
                (loop
                  (multiple-value-setq (tag ,vidx)
  
positive.code:                       ;; 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)
  
negative.code:                          (collect-nslot nslot))
                         (when rslot
                           (collect-rslot rslot))
                         (when oneof-slot
                           (collect-oneof-slot oneof-slot)))))))
        (let* ((rslots  (delete-duplicates rslots :key #'first))
               (rfields (mapcar #'first  rslots))
               (rtemps  (mapcar #'second rslots))
               (oneof-slots (delete-duplicates oneof-slots :test #'string= :key #'symbol-name))
               (lisp-type (or (proto-alias-for message) (proto-class message)))
               (lisp-class (find-class lisp-type nil))
               (constructor (or constructor
  