anchor.diff:                         (when nslot
                            (collect-nslot nslot))
                          (when rslot
  -                         (collect-rslot rslot)))))))
  +                         (collect-rslot rslot))
  +                       (when oneofslot
  +                         (collect-oneofslot oneofslot)))))))
         (let* ((rslots  (delete-duplicates rslots :key #'first))
                (rfields (mapcar #'first  rslots))
                (rtemps  (mapcar #'second rslots))
  +             (oneofslots (delete-duplicates oneofslots :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
  
positive.code:                     (type array-index ,vidx ,vlim))
             (let (,@(loop for slot in nslots
                           collect `(,slot ,missing-value))
                   ,@rtemps)
               (loop
                 (multiple-value-setq (tag ,vidx)
  
negative.code:                  (generate-non-repeated-field-deserializer
                    class index vbuf vidx temp :raw-p raw-p)
                 (if deserializer
                     (return-from generate-field-deserializer
                       (values (list tag) (list deserializer)
                               nslot rslot))
                     (undefined-field-type "While generating 'deserialize-object' for ~S,"
                                           message class field)))))))
  
    (assert nil))
  
  