anchor.diff:       (uses-method-p :initarg :uses-method-p :reader s-uses-method-p))))
   
   (defmethod v-type-of ((gss gl-struct-slot))
  -  (type-spec->type (s-type gss)))
  +  (if (eq (s-type gss) :array)
  +      (type-spec->type (list (s-element-type gss) (s-dimensions gss)))
  +      (type-spec->type (s-type gss))))
   
   (defmethod s-arrayp ((object gl-struct-slot))
     (eq (s-type object) :array))
  
positive.code:                          ',foreign-struct-name
                           ',(s-name slot))))
  
  (defun+ make-array-slot-getter (get-ptr slot type-name foreign-struct-name)
    `(,(s-def slot) ,(s-reader slot)
       ,(s-slot-args slot `((wrapped-object ,type-name)))
       (cepl.c-arrays::make-c-array-from-pointer
        ',(s-dimensions slot) ',(s-element-type slot)
        (foreign-slot-pointer (,get-ptr wrapped-object)
                              ',foreign-struct-name
                              ',(s-name slot)))))
  
  (defun+ make-slot-setter (get-ptr slot type-name foreign-struct-name)
    (when (s-writer slot)
      (cond
        ((or (member (s-type slot) cffi:*built-in-foreign-types*)
             (assoc (s-type slot) cffi::*extra-primitive-types*))
         (make-eprim-slot-setter get-ptr slot type-name foreign-struct-name))
        ((not (s-arrayp slot)) (make-t-slot-setter slot type-name))
        ((s-arrayp slot) (make-array-slot-setter slot type-name))
        (t (error "Dont know what to do with slot ~a" slot)))))
  
  (defun+ make-eprim-slot-setter (get-ptr slot type-name foreign-struct-name)
    `(,(s-def slot) (setf ,(s-writer slot))
       ,(s-slot-args slot `(value (wrapped-object ,type-name)))
       (setf (mem-ref (foreign-slot-pointer (,get-ptr wrapped-object)
  
negative.code: 
  (defun+ make-instance-wrapper-def (name
                                     foreign-struct-name
                                     wrapper-constructor-name
                                     get-ptr
                                     slots
                                     typed-populate
                                     slot-layouts)
    (let* ((foreign-type-name (hidden-symb name :cffi-ct-type))
           (slot-defs (mapcar #'format-slot-for-cstruct
                              slots
                              slot-layouts))
           ;;
           (from (hidden-symb name :from-foreign))
           (to (hidden-symb name :to-foreign)))
      `((eval-when (:compile-toplevel :load-toplevel :execute)
          (defcstruct ,foreign-struct-name
            ,@slot-defs)
  