anchor.diff:        nil)))
   
   (defun print-repeated-field
  -    (values field &key (indent 0) (stream *standard-output*) (print-name t) (pretty-print t))
  +    (values type name &key (indent 0) (stream *standard-output*) (print-name t) (pretty-print t))
     "Print the text format of a single field which is not repeated.
   
   Parameters:
     VALUES: The list or vector of values in the field to print.
  -  FIELD: The field-descriptor of the field.
  +  TYPE: The protobuf type to print. This is obtained from
  +    the PROTO-CLASS slot in the field-descriptor.
  +  NAME: The name of the field. This is printed before the value.
     INDENT: If supplied, indent the text by INDENT spaces.
     STREAM: The stream to output to.
     PRINT-NAME: Whether or not to print the name of the field.
     PRETTY-PRINT: When true, print newlines and indentation."
     (unless values
       (return-from print-repeated-field nil)) ; If values is NIL, then there is nothing to do.
  -  (let ((type (proto-class field))
  -        (desc))
  +  (let ((desc))
       (cond
         ((scalarp type)
          (doseq (v values)
  -              (print-scalar v type (proto-name field) stream
  +              (print-scalar v type name stream
                               (and pretty-print indent))))
         ((typep (setq desc (or (find-message type)
                                (find-enum type)
  
positive.code:                                 (and (not (proto-lazy-p field))
                                       reader))
                       (list object))
                   field
                   :indent indent
                   :stream stream
                   :print-name print-name
                   :pretty-print pretty-print)
                  (print-non-repeated-field
                   (if slot (read-slot object slot reader) object)
                   field
                   :indent indent
                   :stream stream
                   :print-name print-name
  
negative.code:        (dolist (v values)
           (print-text-format v :indent (+ indent 2)
                                :stream stream
                                :name name
                                :print-name print-name
                                :pretty-print pretty-print)))
        ((typep desc 'enum-descriptor)
         (doseq (v values)
                (print-enum v desc name stream
                            (and pretty-print indent))))
        ((typep desc 'protobuf-type-alias)
         (let ((type (proto-proto-type desc)))
           (doseq (v values)
                  (let ((v (funcall (proto-serializer desc) v)))
                    (print-scalar v type name stream
                                  (and pretty-print indent))))))
        (t
         (undefined-type "While printing ~S to text format,"
                               values type)))))
  
  (defun print-non-repeated-field
      (value type name &key (indent 0) (stream *standard-output*) (print-name t) (pretty-print t))
    "Print the text format of a single field which is not repeated.
  
  Parameters:
    VALUE: The value in the field to print.
    TYPE: The protobuf type to print. This is obtained from
      the PROTO-CLASS slot in the field-descriptor.
    NAME: The name of the field. This is printed before the value.
    INDENT: If supplied, indent the text by INDENT spaces.
    STREAM: The stream to output to.
    PRINT-NAME: Whether or not to print the name of the field.
    PRETTY-PRINT: When true, print newlines and indentation."
    (let ((desc))
      ;; If VALUE is NIL and the type is not boolean, there is nothing to do.
      (unless (or value (eq type :bool))
        (return-from print-non-repeated-field nil))
      (cond
        ((scalarp type)
         (print-scalar value type name stream
                       (and pretty-print indent)))
        ((typep (setq desc (or (find-message type)
                               (find-enum type)
  