anchor.diff:  
   (eval-when (:compile-toplevel :load-toplevel :execute)
     (defvar *type-initializers* ())
  +
  +  (defun library-filename (system library)
  +  (let ((component (asdf:find-component (asdf:find-system system) library)))
  +    (etypecase component
  +      (asdf:shared-object 
  +       (first (asdf:output-files (make-instance 'asdf:compile-op) component)))
  +      (asdf:library (asdf:component-pathname component)))))
  +
     (defun %find-types-in-library (pathname prefixes ignore)
       (let ((outname (tmpname "types")))
         (unwind-protect
  
positive.code: 			   t))))))
  
  
  (defun expand-type-definitions (prefix &optional args)
    (flet ((type-options (type-number)
  	   (let ((name (find-foreign-type-name type-number)))
  	     (cdr (assoc name args :test #'string=)))))
  
     (let ((type-list
  	  (delete-if
  	   #'(lambda (type-number)
  	       (let ((name (find-foreign-type-name type-number)))
  		 (or
  		  (getf (type-options type-number) :ignore)
  		  (find-if
  		   #'(lambda (options)
  		       (and
  			(string-prefix-p (first options) name)
  			(getf (cdr options) :ignore-prefix)
  			(not (some
  			      #'(lambda (exception)
  				  (string= name exception))
  			      (getf (cdr options) :except)))))
  		   args))))
  	   (find-types prefix))))
  
       (dolist (type-number type-list)
         (let ((name (find-foreign-type-name type-number)))
  	 (register-type
  	  (getf (type-options type-number) :type (default-type-name name))
  	  (register-type-as type-number))))
  
       ;; This is needed for some unknown reason to get type numbers right
       (mapc #'find-type-dependencies type-list)
  
       (let ((sorted-type-list 
  	    #+clisp (mapcar #'list type-list)
  	    #-clisp
  	    (sort-types-topologicaly 
  	     (mapcar 
  	      #'(lambda (type)
  		  (cons type (find-type-dependencies type (type-options type))))
  	      type-list))))
         `(progn
  	  ,@(mapcar
  	     #'(lambda (pair)
  		 (destructuring-bind (type . forward-p) pair
  		   (expand-type-definition type forward-p (type-options type))))
  	     sorted-type-list)
  	  ,@(mapcar
  	     #'(lambda (pair)
  		 (destructuring-bind (type . forward-p) pair
  		   (when forward-p
  		     (expand-type-definition type nil (type-options type)))))
  	     sorted-type-list))))))
  
  (defmacro define-types-by-introspection (prefix &rest args)
    (expand-type-definitions prefix args))
  
  (defexport define-types-by-introspection (prefix &rest args)
    (list-autoexported-symbols (expand-type-definitions prefix args)))
  
  
  ;;;; Initialize all non static types in GObject
  
negative.code: (defun type-from-glib-name (name)
    (type-from-number (type-number-from-glib-name name) t))
  
  (defun type-registered-p (type)
    (nth-value 1 (gethash type *lisp-type-to-type-number*)))
  
  (defun register-type (type id)
    (cond
     ((type-registered-p type) (find-type-number type))
     ((not id) (warn "Can't register type with no foreign id: ~A" type))
     (t    
      (pushnew (cons type id) *registered-types* :key #'car)
  