# Module Jni

    module Jni: sig .. end

    val set_debug : bool -> unit

    val set_string_auto_conv : bool -> unit

    type obj

    val null : obj

    exception Null_pointer

    exception Exception of obj

    val is_null : obj -> bool

    val is_same_object : obj -> obj -> bool

    val string_to_java : string -> obj

    val string_from_java : obj -> string

    val null_string : string

    val is_null_string : string -> bool

    type clazz

    val find_class : string -> clazz

    val get_superclass : clazz -> clazz

    val is_assignable_from : clazz -> clazz -> bool

    val get_object_class : obj -> clazz

    val is_instance_of : obj -> clazz -> bool

    val alloc_object : clazz -> obj

    type fieldID

    type methodID

    val get_fieldID : clazz -> string -> string -> fieldID

    val get_static_fieldID : clazz -> string -> string -> fieldID

    val get_methodID : clazz -> string -> string -> methodID

    val get_static_methodID : clazz -> string -> string -> methodID

    val get_object_field : obj -> fieldID -> obj

    val get_boolean_field : obj -> fieldID -> bool

    val get_byte_field : obj -> fieldID -> int

    val get_char_field : obj -> fieldID -> int

    val get_short_field : obj -> fieldID -> int

    val get_int_field : obj -> fieldID -> int32

    val get_camlint_field : obj -> fieldID -> int

    val get_long_field : obj -> fieldID -> int64

    val get_float_field : obj -> fieldID -> float

    val get_double_field : obj -> fieldID -> float

    val set_object_field : obj -> fieldID -> obj -> unit

    val set_boolean_field : obj -> fieldID -> bool -> unit

    val set_byte_field : obj -> fieldID -> int -> unit

    val set_char_field : obj -> fieldID -> int -> unit

    val set_short_field : obj -> fieldID -> int -> unit

    val set_int_field : obj -> fieldID -> int32 -> unit

    val set_camlint_field : obj -> fieldID -> int -> unit

    val set_long_field : obj -> fieldID -> int64 -> unit

    val set_float_field : obj -> fieldID -> float -> unit

    val set_double_field : obj -> fieldID -> float -> unit

    val get_static_object_field : clazz -> fieldID -> obj

    val get_static_boolean_field : clazz -> fieldID -> bool

    val get_static_byte_field : clazz -> fieldID -> int

    val get_static_char_field : clazz -> fieldID -> int

    val get_static_short_field : clazz -> fieldID -> int

    val get_static_int_field : clazz -> fieldID -> int32

    val get_static_camlint_field : clazz -> fieldID -> int

    val get_static_long_field : clazz -> fieldID -> int64

    val get_static_float_field : clazz -> fieldID -> float

    val get_static_double_field : clazz -> fieldID -> float

    val set_static_obj_field : clazz -> fieldID -> obj -> unit

    val set_static_boolean_field : clazz -> fieldID -> bool -> unit

    val set_static_byte_field : clazz -> fieldID -> int -> unit

    val set_static_char_field : clazz -> fieldID -> int -> unit

    val set_static_short_field : clazz -> fieldID -> int -> unit

    val set_static_int_field : clazz -> fieldID -> int32 -> unit

    val set_static_camlint_field : clazz -> fieldID -> int -> unit

    val set_static_long_field : clazz -> fieldID -> int64 -> unit

    val set_static_float_field : clazz -> fieldID -> float -> unit

    val set_static_double_field : clazz -> fieldID -> float -> unit

    type argument =

`|` | `Boolean of `bool``
`|` | `Byte of `int``
`|` | `Char of `int``
`|` | `Short of `int``
`|` | `Camlint of `int``
`|` | `Int of `int32``
`|` | `Long of `int64``
`|` | `Float of `float``
`|` | `Double of `float``
`|` | `Obj of `obj``

    val call_object_method : obj -> methodID -> argument array -> obj

    val call_boolean_method : obj -> methodID -> argument array -> bool

    val call_byte_method : obj -> methodID -> argument array -> int

    val call_char_method : obj -> methodID -> argument array -> int

    val call_short_method : obj -> methodID -> argument array -> int

    val call_int_method : obj -> methodID -> argument array -> int32

    val call_camlint_method : obj -> methodID -> argument array -> int

    val call_long_method : obj -> methodID -> argument array -> int64

    val call_float_method : obj -> methodID -> argument array -> float

    val call_double_method : obj -> methodID -> argument array -> float

    val call_void_method : obj -> methodID -> argument array -> unit

    val call_static_object_method : clazz -> methodID -> argument array -> obj

    val call_static_boolean_method : clazz -> methodID -> argument array -> bool

    val call_static_byte_method : clazz -> methodID -> argument array -> int

    val call_static_char_method : clazz -> methodID -> argument array -> int

    val call_static_short_method : clazz -> methodID -> argument array -> int

    val call_static_int_method : clazz -> methodID -> argument array -> int32

    val call_static_camlint_method : clazz -> methodID -> argument array -> int

    val call_static_long_method : clazz -> methodID -> argument array -> int64

    val call_static_float_method : clazz -> methodID -> argument array -> float

    val call_static_double_method : clazz -> methodID -> argument array -> float

    val call_static_void_method : clazz -> methodID -> argument array -> unit

    val call_nonvirtual_object_method : obj -> clazz -> methodID -> argument array -> obj

    val call_nonvirtual_boolean_method : obj -> clazz -> methodID -> argument array -> bool

    val call_nonvirtual_byte_method : obj -> clazz -> methodID -> argument array -> int

    val call_nonvirtual_char_method : obj -> clazz -> methodID -> argument array -> int

    val call_nonvirtual_short_method : obj -> clazz -> methodID -> argument array -> int

    val call_nonvirtual_int_method : obj -> clazz -> methodID -> argument array -> int32

    val call_nonvirtual_camlint_method : obj -> clazz -> methodID -> argument array -> int

    val call_nonvirtual_long_method : obj -> clazz -> methodID -> argument array -> int64

    val call_nonvirtual_float_method : obj -> clazz -> methodID -> argument array -> float

    val call_nonvirtual_double_method : obj -> clazz -> methodID -> argument array -> float

    val call_nonvirtual_void_method : obj -> clazz -> methodID -> argument array -> unit

    val get_array_length : obj -> int

    val new_object_array : int -> clazz -> obj

    val get_object_array_element : obj -> int -> obj

    val set_object_array_element : obj -> int -> obj -> unit

    val new_boolean_array : int -> obj

    val get_boolean_array_element : obj -> int -> bool

    val set_boolean_array_element : obj -> int -> bool -> unit

    val new_byte_array : int -> obj

    val get_byte_array_element : obj -> int -> int

    val set_byte_array_element : obj -> int -> int -> unit

    val get_byte_array_region : obj -> int -> string -> int -> int -> unit

    val set_byte_array_region : string -> int -> obj -> int -> int -> unit

    val new_char_array : int -> obj

    val get_char_array_element : obj -> int -> int

    val set_char_array_element : obj -> int -> int -> unit

    val new_short_array : int -> obj

    val get_short_array_element : obj -> int -> int

    val set_short_array_element : obj -> int -> int -> unit

    val new_int_array : int -> obj

    val get_int_array_element : obj -> int -> int32

    val set_int_array_element : obj -> int -> int32 -> unit

    val get_camlint_array_element : obj -> int -> int

    val set_camlint_array_element : obj -> int -> int -> unit

    val new_long_array : int -> obj

    val get_long_array_element : obj -> int -> int64

    val set_long_array_element : obj -> int -> int64 -> unit

    val new_float_array : int -> obj

    val get_float_array_element : obj -> int -> float

    val set_float_array_element : obj -> int -> float -> unit

    val new_double_array : int -> obj

    val get_double_array_element : obj -> int -> float

    val set_double_array_element : obj -> int -> float -> unit

    val wrap_object : < .. > -> obj