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