anchor.diff:                          'backing-array array)))))
   
   (defun displacement-bytes (mat)
  -  (* (mat-displacement mat)
  -     (cffi:foreign-type-size (mat-ctype mat))))
  +  (* (mat-displacement mat) (ctype-size (mat-ctype mat))))
   
   (defmethod reshape-and-displace-facet* ((mat mat) facet-name
                                           (facet offset-pointer)
  
positive.code:    different representations of the same data. See @MAT-BASICS for a
     tuturialish treatment."))
  
  (defmethod initialize-instance :after ((mat mat) &key initial-contents
                                         &allow-other-keys)
    (unless (listp (mat-dimensions mat))
      (setf (slot-value mat 'dimensions)
            (list (mat-dimensions mat))))
    (setf (slot-value mat 'size) (reduce #'* (mat-dimensions mat)))
    (unless (slot-boundp mat 'max-size)
      (setf (slot-value mat 'max-size)
            (+ (mat-displacement mat) (mat-size mat))))
    (assert (<= (+ (mat-displacement mat) (mat-size mat)) (mat-max-size mat)))
    (setf (slot-value mat 'n-bytes)
          (* (mat-max-size mat) (cffi:foreign-type-size (mat-ctype mat))))
    (when (mat-initial-element mat)
      (setf (slot-value mat 'initial-element)
            (coerce-to-ctype (mat-initial-element mat)
                             :ctype (mat-ctype mat))))
    (when initial-contents
      (replace! mat initial-contents)))
  
  (defun mat-dimension (mat axis-number)
    "Return the dimension along AXIS-NUMBER. Similar to
  
negative.code: 
  (defmethod make-facet* ((mat mat) (facet-name (eql 'foreign-array)))
    (assert (or (eq *foreign-array-strategy* :dynamic)
                ;; It may be that this backing array was allocated when
                ;; *FOREIGN-ARRAY-STRATEGY* was :PIN-BACKING-ARRAY so it
                ;; is not static.
                (and (eq *foreign-array-strategy* :static-backing-array)
  