anchor.diff:    (destructuring-bind (x y z w) val
       (destructuring-bind (type raw-ary) ary
         (ecase type
  -        (:gpu (setf (mem-aref raw-ary i) (make-float4 x y z w)))
  +        ((:gpu :gpu/interop)
  +              (setf (mem-aref raw-ary i) (make-float4 x y z w)))
           (:cpu (setf (vec3-aref raw-ary i :x) x
                       (vec3-aref raw-ary i :y) y
                       (vec3-aref raw-ary i :z) z))))))
  
positive.code: 
  #|
  (require :sb-sprof)
  (defun main/profile (&key (gpu-p t))
    (sb-sprof:with-profiling (:max-samples 1000
                              :report      :graph
                              :loop        nil)
      (main :gpu-p gpu-p)))
  |#
  
  (defun main (&key (gpu-p t))
    (let ((glut:*run-main-loop-after-display* nil)
          (window (make-instance 'nbody-window)))
      (glut:display-window window) ; GLUT window must be created before initializing nbody-demo
      (with-nbody-demo (demo 2048 gpu-p)
        (with-frame-rate-counter (counter)
          (setf (slot-value window 'nbody-demo) demo
                (slot-value window 'counter)    counter)
          (glut:main-loop)))))
  
  (defun not-implemented ()
    (error "not implemented."))
  
negative.code: ;;; Abstract array structure
  ;;;
  
  (defun alloc-array (n array-type)
    (ecase array-type
      (:gpu         (list :gpu         (alloc-memory-block 'float4 n)))
      (:gpu/interop (list :gpu/interop (alloc-memory-block 'float4 n :interop t)))
      (:cpu         (list :cpu         (make-vec3-array n)))))
  
  (defun free-array (ary)
    (ecase (array-type ary)
      (:gpu         (free-memory-block (raw-array ary)))
      (:gpu/interop (free-memory-block (raw-array ary)))
      (:cpu         nil)))
  
  (defun array-ref (ary i)
    (destructuring-bind (type raw-ary) ary
      (ecase type
        ((:gpu :gpu/interop)
              (let ((x (mem-aref raw-ary i)))
                (values (float4-x x) (float4-y x) (float4-z x) (float4-w x))))
        (:cpu (values (vec3-aref raw-ary i :x)
                      (vec3-aref raw-ary i :y)
  