sig
external make : 'a java_constructor -> 'a = "java constructor"
external make_array : 'a java_array_shape -> 'a = "java make array"
external make_array1 : 'a java_array_shape1 -> 'a = "java make array 1"
external call : 'a java_method -> 'a = "java method call"
external get : 'a java_field_get -> 'a = "java field get"
external set : 'a java_field_set -> 'a = "java field set"
val null : 'a java_instance
external is_null : 'a java_instance -> bool = "java is_null"
external is_not_null : 'a java_instance -> bool = "java is_not_null"
external equal : 'a java_instance -> 'b java_instance -> bool = "java =="
external not_equal : 'a java_instance -> 'b java_instance -> bool
= "java !="
external instanceof : 'a java_type -> 'b java_instance -> bool
= "java instanceof"
external cast : 'a java_type -> 'b java_instance -> 'a = "java cast"
external throw : java'lang'Throwable java_extends -> 'a = "java throw"
external synchronized : 'a java_instance -> (unit -> unit) -> unit
= "java synchronized"
external proxy : 'a java_proxy -> 'a = "java proxy"
val wrap : 'a java_instance -> 'a java_instance option
end