anchor.diff:              (format stream "~&}~%"))
           nil))))
   
  -(defun print-prim (val type field stream indent)
  +(defun print-prim (val type field stream indent &optional (newline-p t))
     (when (or val (eq type :bool))
  -    (if (eq indent 't)
  -      (format stream "~A: " (proto-name field))
  -      (format stream "~&~VT~A: " (+ indent 2) (proto-name field)))
  +    (unless (eq indent 't)
  +        (format stream "~&~VT" (+ indent 2)))
  +    (if field
  +      (format stream "~A: " (proto-name field)))
       (ecase type
         ((:int32 :uint32 :int64 :uint64 :sint32 :sint64
           :fixed32 :sfixed32 :fixed64 :sfixed64)
  
positive.code:        (format stream "~A" (if val "true" "false")))
        ((:float :double)
         (format stream "~D" val))
        ;; A few of our homegrown types
        ((:symbol)
         (let ((val (if (keywordp val)
  
negative.code:          (format stream "\"~A\"" val)))
        ((:date :time :datetime :timestamp)
         (format stream "~D" val)))
      (if (and (not (eq indent 't)) newline-p)
        (format stream "~%")
        (format stream " "))))
  
  (defun print-enum (val enum field stream indent)
    (when val
  