anchor.diff:  
   (defmacro defstruct-g (name-and-options &body slot-descriptions)
     (dbind (name &key (accesors t) (constructor (symb 'make- name))
  -               (readers t) (writers t) (pull-push t) (attribs t) (populate t))
  +               (readers t) (writers t) (pull-push t) (attribs t) (populate t)
  +               (layout :default))
         (listify name-and-options)
       (let* ((slots (mapcar (lambda (_) (normalize-slot-description
                                          _ name (and readers accesors)
  
positive.code:            (foreign-struct-name (hidden-symb name :foreign))
             (qualified-struct-name `(:struct ,foreign-struct-name))
             (get-ptr-name (hidden-symb name :ptr))
             (typed-populate (symb :populate- name)))
        (when (validate-defstruct-g-form name slots)
          `(progn
             (eval-when (:compile-toplevel :load-toplevel :execute)
               ,(make-varjo-struct-def name slots))
             ,@(make-instance-wrapper-def name foreign-struct-name get-ptr-name
                                          slots typed-populate)
             ,@(when (and readers accesors)
                 (remove nil (mapcar (lambda (_)
                                       (make-slot-getter
  
negative.code:                                    foreign-struct-name
                                     get-ptr
                                     slots
                                     typed-populate
                                     layout)
    (declare (ignore layout))
    (let* ((foreign-type-name (hidden-symb name :cffi-ct-type))
           (make-name (hidden-symb name :make))
           (slot-defs (mapcar #'format-slot-for-cstruct slots))
  