anchor.diff:        `(,slot-name
   	:allocation :property :pname ,name
   
  -	;; temporary hack
   	,@(cond
  -	   ((find :unbound args) (list :unbound (getf args :unbound)))
  -	   ((type-is-p slot-type 'gobject) (list :unbound nil)))
  +	   ((find :unbound args) (list :unbound (getf args :unbound))))
   	
   	;; accessors
   	,@(cond
  
positive.code:        (let ((reader nil))
  	 #'(lambda (object)
  	     (unless reader
  	       (setq reader (reader-function (type-from-number type-number))))
  	     (let ((gvalue (gvalue-new type-number)))
  	       (%object-get-property object pname gvalue)
  	       (unwind-protect
  
negative.code: 
  
  (register-derivable-type 'gobject "GObject" 'expand-gobject-type)
  
  
  ;;; Pseudo type for gobject instances which have their reference count
  ;;; increased by the returning function
  
  (defmethod alien-type ((type (eql 'referenced)) &rest args)
    (declare (ignore type args))
    (alien-type 'gobject))
  
  (defmethod from-alien-form (form (type (eql 'referenced)) &rest args)
    (declare (ignore type))
    (destructuring-bind (type) args
      (if (subtypep type 'gobject)
  	(let ((instance (make-symbol "INSTANCE")))
  	  `(let ((,instance ,(from-alien-form form type)))
  	     (when ,instance
  	       (%object-unref (proxy-location ,instance)))
  	     ,instance))
        (error "~A is not a subclass of GOBJECT" type))))
  
  (export 'referenced)
  