anchor.diff:  (defvar *callbacks* (make-hash-table))
   
   (defmacro convert-args-to-lisp-values (arg-names &rest body)
  -  (let ((gensym-args (loop :for name :in arg-names
  -                           :collecting (gensym (format nil "~A-~A-" '#:callback-arg name)))))
  +  (let ((gensym-args (loop for name in arg-names
  +                           collect (format-symbol t '#:callback-arg-~a- name))))
       `(lambda (,@gensym-args)
  -       (let ,(loop 
  -                :for arg :in arg-names
  -                :for gensym-arg :in gensym-args
  -                :collecting `(,arg (if (typep ,gensym-arg 'java:java-object)
  -                                   (java:jobject-lisp-value ,gensym-arg) 
  -                                   ,gensym-arg)))
  +       (let ,(loop for arg in arg-names
  +                   for gensym-arg in gensym-args
  +                   collecting `(,arg (if (typep ,gensym-arg 'java:java-object)
  +                                         (java:jobject-lisp-value ,gensym-arg)
  +                                         ,gensym-arg)))
            ,body))))
   
   (defmacro %defcallback (name return-type arg-names arg-types body
                           &key convention)
     (declare (ignore convention)) ;; I'm always up for ignoring convention, but this is probably wrong.
     `(setf (gethash ',name *callbacks*)
  -         (jinterface-implementation 
  +         (jinterface-implementation
             (ensure-callback-interface ',return-type ',arg-types)
             "callback"
             `,(convert-args-to-lisp-values ,arg-names ,@body))))
   ;;          (lambda (,@arg-names) ,body))))
   
   (jvm::define-class-name +callback-object+ "com.sun.jna.Callback")
  -(defconstant 
  +(defconstant
       +dynamic-callback-package+
     "org/armedbear/jna/dynamic/callbacks"
     "The slash-delimited Java package in which we create classes dynamically to specify callback interfaces.")
  
positive.code:   (let* ((jvm-returns (foreign-to-callback-type returns))
           (jvm-args  (mapcar #'foreign-to-callback-type args))
           (interface-name (qualified-callback-interface-classname jvm-returns jvm-args)))
      (handler-case 
          (jss:find-java-class interface-name)
        (java-exception (e)
          (when (jinstance-of-p (java:java-exception-cause e)
  
negative.code:      (:float "java.lang.Float")
       (:double "java.lang.Double")
       ((:char :unsigned-char) "java.lang.Byte")
       ((:short :unsigned-short) "java.lang.Short"))))
  
  (defun %foreign-type-size (type)
    "Return the size in bytes of a foreign type."
  