sig
  type 'a t = java'util'concurrent'Exchanger java_instance
  val make : unit -> 'Exchanger.t
  val exchange : 'Exchanger.t -> '-> 'a
  val exchange_time : 'Exchanger.t -> '-> java_long -> TimeUnit.t -> 'a
  val null : 'Exchanger.t
  external is_null : 'Exchanger.t -> bool = "java is_null"
  external is_not_null : 'Exchanger.t -> bool = "java is_not_null"
  val wrap : 'Exchanger.t -> 'Exchanger.t option
  val unwrap : 'Exchanger.t option -> 'Exchanger.t
end