anchor.diff:  
   ;;;;
   
  -(defbinding %object-class-properties () pointer
  +(defbinding %object-class-list-properties () pointer
     (class pointer)
     (n-properties unsigned-int :out))
   
  -(defun query-object-class-properties (type-number)
  +(defun query-object-class-properties (type-number &optional
  +				      inherited-properties)
     (let ((class (type-class-ref type-number)))
       (multiple-value-bind (array length)
  -	(%object-class-properties class)
  -      (map-c-array 'list #'identity array 'param length))))
  -
  -(defun query-object-type-dependencies (type-number)
  -  (delete-duplicates
  -   (reduce
  -    #'nconc
  -    (mapcar
  -     #'(lambda (param)
  -	 ;; A gobject does not depend on it's supertypes due to forward
  -	 ;; referenced superclasses
  -  	 (delete-if
  -  	  #'(lambda (type)
  -  	      (type-is-p type-number type))
  -	  (type-hierarchy (param-type param))))
  -     (query-object-class-properties type-number)))))
  +	(%object-class-list-properties class)
  +      (unwind-protect
  +	  (let ((all-properties
  +		 (map-c-array 'list #'identity array 'param length)))
  +	    (if (not inherited-properties)
  +		(delete-if
  +		 #'(lambda (param)
  +		     (not (eql type-number (param-owner-type param))))
  +		 all-properties)
  +	      all-properties))
  +	(deallocate-memory array)))))
   
   
   (defun default-slot-name (name)
  
positive.code:   (defclass gobject-class (ginstance-class))
  
    (defclass direct-gobject-slot-definition (direct-virtual-slot-definition)
      ((param :reader slot-definition-param)))
  
    (defclass effective-gobject-slot-definition
      (effective-virtual-slot-definition)))
  
negative.code: 
  
  
  ;;;; Property stuff
  
  (defbinding %object-set-property () nil
    (object gobject)
  