anchor.diff:    (subtypep (class-name super) 'container-child))
   
   
  +(defclass container-child ()
  +  ((parent :initarg :parent :type container)
  +   (child :initarg :child :type widget)))
  +
  +
  +;;;;
  +
  +(defbinding %container-query-child-args () arg
  +  (type-number type-number)
  +  (nil null)
  +  (n-args unsigned-int :out))
  +
  +(defun query-container-type-dependencies (type-number)
  +  (let ((child-slot-types ()))
  +    (multiple-value-bind (args n-args)
  +	(%container-query-child-args type-number)
  +      (dotimes (i n-args)
  +	(push (arg-type (arg-array-ref args i)) child-slot-types)))
  +    (delete-duplicates
  +     (append (query-object-type-dependencies type-number) child-slot-types))))
  +
  +(defun default-container-child-name (container-class)
  +  (intern (format nil "~A-CHILD" container-class)))
  +
  +(defun expand-container-type (type-number &optional slots)
  +  (let* ((class (type-from-number type-number))
  +	 (super (supertype type-number))
  +	 (child-class (default-container-child-name class))
  +	 (child-slots ()))
  +    (multiple-value-bind (args n-args)
  +	(%container-query-child-args type-number)
  +      (dotimes (i n-args)
  +	(let* ((arg (arg-array-ref args i))
  +	       (arg-name (arg-name arg))
  +	       (slot-name (default-slot-name
  +			    (subseq arg-name (+ (position #\: arg-name) 2))))
  +	       (type (type-from-number (arg-type arg) #|t|#)))
  +	  (push
  +	   `(,slot-name
  +	     :allocation :arg
  +	     :arg-name ,arg-name
  +	     :accessor ,(default-slot-accessor child-class slot-name type)
  +	     :initarg ,(intern (string slot-name) "KEYWORD")
  +	     :type ,type)
  +	   child-slots)))
  +      `(progn
  +	 ,(expand-gobject-type type-number slots)
  +	 (defclass ,child-class
  +	   (,(default-container-child-name super))
  +	   ,child-slots
  +	   (:metaclass child-class)
  +	   (:container ,class))))))
  +
  +(register-derivable-type
  + 'container "GtkContainer"
  + :query 'query-container-type-dependencies
  + :expand 'expand-container-type)
  
positive.code:     (unless (null-pointer-p arg)
        (when free-contents
  	(funcall
  	 (get-destroy-function (type-from-number (arg-type arg)))
  	 arg +arg-value-offset+))
        (deallocate-memory arg)))))
  
  (define-foreign %arg-reset () nil
    (arg arg))
  
  (defun arg-name (arg)
    (funcall (get-reader-function '(static string)) arg +arg-name-offset+))
  
  (defun (setf arg-name) (name arg)
    (funcall (get-writer-function '(static string)) name arg +arg-name-offset+)
    name)
  
  (defun arg-type (arg)
  
negative.code: ;;;; Superclass for the gtk class hierarchy
  
  (eval-when (:compile-toplevel :load-toplevel :execute)
    (init-types-in-library "/opt/gnome/lib/libgtk-x11-1.3.so")
  
    (defclass %object (gobject)
      ()
      (:metaclass gobject-class)
      (:alien-name "GtkObject")))
  
  
  (defmethod shared-initialize ((object %object) names &rest initargs
  			      &key signals)
    (declare (ignore initargs names))
    (call-next-method)
    (%object-sink object)
    (dolist (signal signals)
      (apply #'signal-connect object signal)))
  
  (defmethod initialize-proxy ((object %object) &rest initargs &key location)
    (declare (ignore initargs))
    (call-next-method)
    (%object-sink location))
  
  (defbinding %object-sink () nil
    (object %object))
  
  
  ;;;; Main loop, timeouts and idle functions
  
  (declaim (inline events-pending-p main-iteration))
  
  (defbinding (events-pending-p "gtk_events_pending") () boolean)
  
  (defbinding get-current-event () gdk:event)
  
  (defbinding main-do-event () nil
    (event gdk:event))
  
  (defbinding main () nil)
  
  (defbinding main-level () int)
  
  (defbinding main-quit () nil)
  
  (defbinding main-iteration-do (&optional (blocking t)) boolean
    (blocking boolean))
  
  (defun main-iterate-all (&rest args)
    (declare (ignore args))
    (when (events-pending-p)
      (main-iteration-do nil)
      (main-iterate-all)))
  
  (system:add-fd-handler (gdk:event-poll-fd) :input #'main-iterate-all)
  (setq lisp::*periodic-polling-function* #'main-iterate-all)
  