sig
  type 'a t = java'util'concurrent'Future java_instance
  val cancel : 'Future.t -> bool -> bool
  val get : 'Future.t -> 'a
  val get_time : 'Future.t -> java_long -> TimeUnit.t -> 'a
  val is_cancelled : 'Future.t -> bool
  val is_done : 'Future.t -> bool
  val null : 'Future.t
  external is_null : 'Future.t -> bool = "java is_null"
  external is_not_null : 'Future.t -> bool = "java is_not_null"
  val wrap : 'Future.t -> 'Future.t option
  val unwrap : 'Future.t option -> 'Future.t
end