anchor.diff:          ((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)
  +(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."
  +  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))
  
positive.code:                                  ;; todo(jgodbout):delete asap
                                   (:predicate nil))
             ,@(remove nil
                (mapcar (lambda (slot)
                          (let ((name (field-data-internal-slot-name slot))
                                (type (field-data-type slot))
                                (initform (field-data-initform slot)))
                            (unless (eq type 'boolean)
                              `(,name ,(get-default-form type initform) :type ,type))))
                        slots)))
           ;; Define public accessors for fields.
           ,@(mapcan (lambda (field public-slot-name)
                       (make-structure-class-forms-non-lazy proto-type
  
negative.code:         (unless (or (eq type alias-for) (find-class type nil))
            (collect-type-form `(deftype ,type () ',alias-for)))
            (collect-type-form
             (make-structure-class-forms type slots non-lazy-fields lazy-fields oneofs)))
        (collect-form `(record-protobuf-object ',type ,message :message))
        ;; Group can never be a top level element.
        `(progn
  