sig
  type t = java'util'concurrent'locks'ReentrantReadWriteLock java_instance
  val make_reentrant : ?fair:bool -> unit -> ReadWriteLock.t
  val read_lock : ReadWriteLock.t -> Lock.t
  val write_lock : ReadWriteLock.t -> Lock.t
  val null : ReadWriteLock.t
  external is_null : ReadWriteLock.t -> bool = "java is_null"
  external is_not_null : ReadWriteLock.t -> bool = "java is_not_null"
  val wrap : ReadWriteLock.t -> ReadWriteLock.t option
  val unwrap : ReadWriteLock.t option -> ReadWriteLock.t
end