anchor.diff:  
   (defun make-array-ref (field ref index)
     "`REF` must already refer to the field.  Use `MAKE-FIELD-REF` first."
  -  (let ((size (foreign-type-size (basic-foreign-type (foreign-type field)))))
  -    `(cffi-sys:inc-pointer ,ref ,(if (= size 1) index `(* ,size ,index)))))
  +  (if (> index 0)
  +      (let ((size (foreign-type-size (basic-foreign-type (foreign-type field)))))
  +        `(cffi-sys:inc-pointer ,ref ,(if (= size 1) index `(* ,size ,index))))
  +      ref))
   
   (defun make-field-deref (field ref)
     (let* ((type (or (basic-foreign-type (foreign-type field))
  
positive.code: 
  (defclass foreign-pointer (foreign-type) ())
  (defclass foreign-alias (foreign-type) ())
  (defclass foreign-array (foreign-type)
    ((size :initarg :size :initform 0 :accessor foreign-array-size :type integer)))
  
  (defclass foreign-string (foreign-pointer)
    ((type :initform :char)))
  
negative.code: 
  (defun alloc-ptr (type &optional (count 1))
    "Return a pointer allocated to the size of `TYPE`"
    (cffi-sys:%foreign-alloc
     (* count (foreign-type-size
               (require-type type "allocate an instance of foreign type ~S" type)))))
  
  (defun alloc (type &optional (count 1))
    "Return a foreign wrapper for `TYPE` with its pointer allocated.
  