anchor.diff:    ((pname :reader slot-definition-pname :initarg :pname)
      (readable :reader slot-readable-p :initarg :readable)
      (writable :reader slot-writable-p :initarg :writable)
  -   (construct :initarg :construct)));)
  +   (construct :initarg :construct)))
  +
  +(defclass direct-user-data-slot-definition (direct-virtual-slot-definition)
  +  ())
  +
  +(defclass effective-user-data-slot-definition (effective-virtual-slot-definition)
  +  ())
  +
   
   (defbinding %object-ref () pointer
     (location pointer))
  
positive.code: 	       (gvalue-free gvalue t)
  	       value))))))
  
    (call-next-method))
  
  
  
negative.code: 
  ;;;; User data
  
  (defun (setf user-data) (data object key)
    (%object-set-qdata-full
     object (quark-from-object key)
     (register-user-data data) (callback %destroy-user-data))
    data)
  
  ;; depecated
  (defun (setf object-data) (data object key &key (test #'eq))
    (assert (eq test #'eq))
    (setf (user-data object key) data))
  
  (defbinding %object-get-qdata () unsigned-long
    (object gobject)		 
    (id quark))
  
  (defun user-data (object key)
    (find-user-data (%object-get-qdata object (quark-from-object key))))
  
  ;; depecated
  (defun object-data (object key &key (test #'eq))
    (assert (eq test #'eq))
    (user-data object key))
  
  (defun user-data-p (object key)
    (nth-value 1 (find-user-data (%object-get-qdata object (quark-from-object key)))))
  
  
  ;;;;
  