sig
  type t = java'util'concurrent'locks'Lock java_instance
  val make_reentrant : ?fair:bool -> unit -> Lock.t
  val lock : Lock.t -> unit
  val lock_interruptibly : Lock.t -> unit
  val new_condition : Lock.t -> Condition.t
  val try_lock : Lock.t -> bool
  val try_lock_time : Lock.t -> java_long -> TimeUnit.t -> bool
  val unlock : Lock.t -> unit
  val null : Lock.t
  external is_null : Lock.t -> bool = "java is_null"
  external is_not_null : Lock.t -> bool = "java is_not_null"
  val wrap : Lock.t -> Lock.t option
  val unwrap : Lock.t option -> Lock.t
end