anchor.diff:                       function jargs)
             (values))
           (lispify-value
  -         (jcall (jmethod "com.sun.jna.Function" "invoke"
  -                         "java.lang.Class" "[Ljava.lang.Object;")
  +         (jcall-raw (jmethod "com.sun.jna.Function" "invoke"
  +                             "java.lang.Class" "[Ljava.lang.Object;")
                   function
                   (foreign-type-to-java-class return-type)
                   jargs)
  
positive.code:                    for type in arg-types
                     for gensym-arg in gensym-args
                     collecting `(,arg (if (typep ,gensym-arg 'java:java-object)
                                           (lispify-value (java:jobject-lisp-value ,gensym-arg)
                                                          ,type)
                                           #+nil (java:jobject-lisp-value ,gensym-arg)
                                           ,gensym-arg)))
           ,@body))))
  
  
negative.code:     ((:short :unsigned-short) "getShort")))
  
  (defun lispify-value (value type)
    (when (and (eq type :pointer) (or (null (java:jobject-lisp-value value))
                                      (eq +null+ (java:jobject-lisp-value value))))
      (return-from lispify-value (null-pointer)))
    (when (or (eq type :long) (eq type :unsigned-long))
      (setq value (jcall-raw (jmethod "com.sun.jna.NativeLong" "longValue")
                             (java:jobject-lisp-value value))))
    (let ((bit-size (* 8 (%foreign-type-size type))))
      (let ((lisp-value (java:jobject-lisp-value value)))
        (if (and (unsigned-type-p type)
                 (logbitp (1- bit-size) lisp-value))
            (lognot (logxor lisp-value (1- (expt 2 bit-size))))
            lisp-value))))
  
  (defun %mem-ref (ptr type &optional (offset 0))
    (lispify-value
     (jcall-raw (jmethod "com.sun.jna.Pointer" (jna-getter type) "long")
                ptr offset)
     type))
  
  (defun jna-setter (type)
  