anchor.diff:  ;;; 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)))
  
positive.code:                  (insert-in (cdr field-list))))))))
  
  (defun deserialize-structure-object (message buffer index limit end-tag class)
    (declare (type (simple-array (unsigned-byte 8)) buffer))
    ;; FIELD-MAP quickly translates a field number to its PROTO-FIELD object
    ;; without using linear scan
  
negative.code: 
  (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)
  