sig
external make : 'a java_constructor -> 'a = "java constructor"
external make_array : 'a java_array_shape -> 'a = "java make array"
external make_array_dims : 'a java_array_shape_dims -> 'a
= "java make array dims"
external call : 'a java_method_call -> 'a = "java method call"
external exec : 'a java_method_exec -> 'a = "java method exec"
external chain : 'a java_method_chain -> 'a = "java method chain"
external get : 'a java_field_get -> 'a = "java field get"
external set : 'a java_field_set -> 'a = "java field set"
external iter :
'a java_reference_type ->
('a -> unit) -> java'util'Iterator java_extends -> unit = "java iter"
external fold :
'a java_reference_type ->
('b -> 'a -> 'b) -> 'b -> java'util'Iterator java_extends -> 'b
= "java fold"
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_reference_type -> 'b java_instance -> bool
= "java instanceof"
external cast : 'a java_reference_type -> 'b java_instance -> 'a
= "java cast"
external get_class : 'a java_any_type -> java'lang'Class java_instance
= "java class"
external throw : java'lang'Throwable java_extends -> 'a = "java throw"
external synchronized : 'a java_instance -> (unit -> unit) -> unit
= "java synchronized"
external proxy_loader :
'a java_proxy -> java'lang'ClassLoader java_extends -> 'a
= "java proxy loader"
external proxy_system : 'a java_proxy -> 'a = "java proxy system"
external proxy_runtime : 'a java_proxy -> 'a = "java proxy runtime"
external proxy : 'a java_proxy -> 'a = "java proxy system"
val wrap : 'a java_instance -> 'a java_instance option
val unwrap : 'a java_instance option -> 'a java_instance
end