anchor.diff:  (defclass enter-notify-event (crossing-event)
     ()
     (:metaclass event-class)
  -  (:type :enter-notify))
  +  (:event-type :enter-notify))
   
   (defclass leave-notify-event (crossing-event)
     ()
     (:metaclass event-class)
  -  (:type :leave-notify))
  +  (:event-type :leave-notify))
   
   (defclass focus-change-event (event)
     ((in
       :allocation :alien
       :accessor event-in
       :initarg :in
  -    :type (boolean 16)))
  -  (:metaclass event-class)
  -  (:type :focus-change))
  +    :type (bool 16)))
  +  (:metaclass event-class)
  +  (:event-type :focus-change))
   
   (defclass configure-event (event)
     ((x
  
positive.code:     :initarg :name
      :type string))
    (:metaclass event-class)
    (:type :setting))
  
  (defclass proximity-event (timed-event)
    ((device
  
negative.code: ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  
  ;; $Id: gdkevents.lisp,v 1.12 2006-04-26 09:20:20 espen Exp $
  
  (in-package "GDK")
  
  
  ;;;; Metaclass for event classes
  
  (eval-when (:compile-toplevel :load-toplevel :execute)
    (defvar *event-classes* (make-hash-table))
  
    (defclass event-class (boxed-class)
      ((event-type :reader event-class-type :initform nil)))
  
    (defmethod validate-superclass ((class event-class) (super standard-class))
      ;(subtypep (class-name super) 'event)
      t)
  
    (defmethod shared-initialize ((class event-class) names &key name event-type)
      (declare (ignore names))
      (register-type-alias (or name (class-name class)) 'event)
      (call-next-method)
      (when event-type
        (setf (slot-value class 'event-type) (first event-type))
        (setf (gethash (first event-type) *event-classes*) class))))
    
  (let ((reader (reader-function 'event-type)))
    (defun %event-class (location)
      (gethash (funcall reader location 0) *event-classes*)))
  
  (defmethod make-proxy-instance :around ((class event-class) location 
  					&rest initargs)
    (let ((class (%event-class location)))
      (apply #'call-next-method class location initargs)))
  
  
  ;; The class event is the only class that actually exists in the
  ;; GObject class hierarchy
  
  (eval-when (:compile-toplevel :load-toplevel :execute)
    (defclass event (boxed)
  