anchor.diff:                                        ',slot-name) 
                                        ',(varjo:type-principle vslot-type))
                               ,slot-name)))))))))
  +
   
   ;; [TODO] Use 'normalize' 
   ;; [TODO] the setter seems ugly, gotta be a better way
  
positive.code:            (:simple-parser ,name))
           (defclass ,value-name (c-value) ())
           ,@(when accessors (make-getters-and-setters name value-name struct-name slots))
           ,@(make-translators name type-name value-name slots struct-name)
           ,(when accessors (make-puller name value-name slots))
           ,(when vertex (make-gl-struct-attrib-assigner name slots))
           ,(when pixel (make-struct-pixel-format name slot-descriptions))
  
negative.code:                                (varjo:type-array-length (slot-type slot))
                                 1))))))
  
  ;; [TODO] is this fucked now?
  (defun make-translators (name type-name value-name slots struct-name)
    (let ((slot-names (mapcar #'first slots)))
      `((defmethod translate-from-foreign (ptr (type ,type-name))
  