anchor.diff:  ;; FIXME: most of these are bad. QPX does not do much decoding,
   ;; so I'll not touch them for the time being.
   (defun deserialize-scalar (type buffer index)
  -  "Deserializes the next object of scalar type 'type'.
  -   Deserializes from the byte vector 'buffer' starting at 'index'.
  +  "Deserializes the next object of scalar type TYPE.
  +   Deserializes from the byte vector BUFFER starting at INDEX.
      Returns the value and the new index into the buffer.
      Watch out, this function turns off most type checking and all array bounds checking."
     (declare (type (simple-array (unsigned-byte 8) (*)) buffer)
  
positive.code:     (:double   `(encode-double ,val ,buffer))))
  
  (defun get-scalar-encoder-lambda (type)
    (ecase type
      (:uint32   (lambda (val b) (encode-uint32 val b)))
      (:uint64   (lambda (val b) (encode-uint64 val b)))
  
negative.code:                 serialize-scalar))
  (defun serialize-scalar (val type tag buffer)
    "Serializes a Protobufs scalar value into the buffer at the given index.
     Modifies the buffer in place, and returns the new index into the buffer.
     Watch out, this function turns off most type checking and all array bounds checking.
  
  Parameters:
    VAL: The value to serialize.
    TYPE: The type of VAL.
    TAG: The protobuf tag to serialize.
    BUFFER: The buffer to serialize to."
    (declare (type (unsigned-byte 32) tag))
    (locally (declare #.$optimize-serialization)
      (i+
  