anchor.diff:        (collect-form `(record-protobuf-object ',type ,enum :enum))
         ;; Register it by the full symbol name.
         (record-protobuf-object type enum :enum)
  +      ;; This is messy and should be fixed.
  +      ;; Enums define types and functions that will need to be called
  +      ;; when creating messages. As such they need to be first
  +      ;; in the list of things a macro evaluated. So we make a global var
  +      ;; and gaurantee they are first.
  +      (unless (top-level-p *protobuf*)
  +        (push `(progn ,@forms) *enum-forms*))
         `(progn ,@forms))))
   
   (declaim (inline proto-%bytes))
  
positive.code: 
  (deftype numeral () "byte 32" '(signed-byte 32))
  
  (defgeneric cl-protobufs:numeral->enum (enum numeral &optional default)
    (:documentation
     "Converts a NUMERAL to a corresponding ENUM keyword.
  
negative.code:              (appendf (proto-fields extends) (list field))
               (appendf (proto-extended-fields extends) (list field))))))
        (collect-form `(record-protobuf-object ',type ,extends :message))
        (create-progn-with-enum-forms-if-top-level top-level-form-p forms))))
  
  (defun index-within-extensions-p (index message)
    (let ((extensions (proto-extensions message)))
  