sig
  type t = java'lang'Object java_instance
  val make : unit -> JavaObject.t
  val equals :
    java'lang'Object java_extends ->
    java'lang'Object java_extends -> java_boolean
  val get_class :
    java'lang'Object java_extends -> java'lang'Class java_instance
  val hash_code : java'lang'Object java_extends -> java_int
  val to_string : java'lang'Object java_extends -> JavaString.t
  val notify : java'lang'Object java_extends -> unit
  val notify_all : java'lang'Object java_extends -> unit
  val wait : java'lang'Object java_extends -> unit
  val wait_timeout : java'lang'Object java_extends -> java_long -> unit
  val wait_timeout_nanos :
    java'lang'Object java_extends -> java_long -> java_int -> unit
  val null : JavaObject.t
  external is_null : 'a java_instance -> bool = "java is_null"
  external is_not_null : 'a java_instance -> bool = "java is_not_null"
  external cast : java'lang'Object java_extends -> JavaObject.t = "%identity"
  val wrap : 'a java_instance -> 'a java_instance option
  val unwrap : 'a java_instance option -> 'a java_instance
end