anchor.diff:           (bool-count (count-if #'non-repeated-bool-field fields))
            (bool-index -1)
            (bool-values (make-array bool-count :element-type 'bit :initial-element 0)))
  -
       (with-collectors ((slots collect-slot)
                         (forms collect-form)
                         ;; The typedef needs to be first in forms otherwise ccl warns.
                         ;; We'll collect them separately and splice them in first.
                         (type-forms collect-type-form)
                         (lazy-fields collect-lazy-field)
  -                      (non-lazy-fields collect-non-lazy-field))
  +                      (non-lazy-fields collect-non-lazy-field)
  +                      (oneofs collect-oneof))
         (dolist (field fields)
           (case (car field)
             ((define-enum)
  
positive.code:                      (make-structure-class-forms-lazy proto-type field public-slot-name))
                     lazy-fields public-lazy-slot-names)
  
           ;; Define public constructor.
           (declaim (inline ,public-constructor-name))
           (defun ,public-constructor-name
  
negative.code:         ((enum-default-value `,type) (enum-default-value `,type))
          (t `(enum-default-value ',type))))))
  
  (defun make-structure-class-forms (proto-type slots non-lazy-fields lazy-fields oneofs)
    "Makes the definition forms for the define-group and define-message macros.
  
  Arguments:
    PROTO-TYPE: The Lisp type name of the proto message.
    SLOTS: Slot definitions created by PROCESS-FIELD.
    NON-LAZY-FIELDS: Field definitions for non-lazy fields.
    LAZY-FIELDS: Field definitions for lazy fields.
    ONEOFS: A list of oneof descriptors for the message/group."
    (let* ((public-constructor-name (fintern "MAKE-~A" proto-type))
           (hidden-constructor-name (fintern "%MAKE-~A" proto-type))
           (public-lazy-slot-names (mapcar #'proto-external-field-name lazy-fields))
  