anchor.diff:  
   (defun deserialize-structure-object-field
       (type buffer index tag repeated-p lazy-p &optional (cell nil))
  +  "Deserialize a single field from the wire, and return it.
  +
  +Parameters:
  +  TYPE: The class of the field to deserialize.
  +  BUFFER: The buffer to deserialize from.
  +  INDEX: The index of the buffer to read.
  +  TAG: The protobuf tag of the field to deserialize.
  +  REPEATED-P: True if and only if the field is repeated
  +  LAZY-P: True if and only if the field is lazy
  +  CELL: [For repeated fields only]: The current list (or vector) of
  +        deserialized objects to add to."
     (cond
       ((keywordp type) ; a wire-level primitive
        (cond ((and (packed-type-p type)
  
positive.code:           ,size)))))
  
  (defun generate-field-deserializer (message field vbuf vidx &key raw-p)
    (let ((nslot nil)
          (rslot nil))
      (let* ((class  (proto-class field))
  
negative.code: ;;; Type-checking is done at the top-level methods specialized on 'symbol',
  ;;; so we turn off all type checking at the level of these functions
  (defun generate-field-serializer (msg field boundp reader vbuf size)
    "Generate the serializer for a field.
  
  Parameters:
    MSG: The containing message-descriptor.
    FIELD: The field-descriptor for the field to serialize.
    BOUNDP: A symbol which evaluates to true if the field is bound.
    READER: A symbol which evaluates to the field's data.
    VBUF: The buffer to write to.
    SIZE: A symbol which stores the number of bytes serialized."
    (let ((vval (gensym "VAL")))
      (let* ((class  (proto-class field))
             (index  (proto-index field)))
  