sig   type 'a t   val create : '-> 'CCLock.t   val with_lock : 'CCLock.t -> ('-> 'b) -> 'b   val try_with_lock : 'CCLock.t -> ('-> 'b) -> 'b option   module LockRef :     sig       type 'a t       val get : 'CCLock.LockRef.t -> 'a       val set : 'CCLock.LockRef.t -> '-> unit       val update : 'CCLock.LockRef.t -> ('-> 'a) -> unit     end   val with_lock_as_ref : 'CCLock.t -> f:('CCLock.LockRef.t -> 'b) -> 'b   val update : 'CCLock.t -> ('-> 'a) -> unit   val update_map : 'CCLock.t -> ('-> 'a * 'b) -> 'b   val mutex : 'CCLock.t -> Mutex.t   val get : 'CCLock.t -> 'a   val set : 'CCLock.t -> '-> unit   val incr : int CCLock.t -> unit   val decr : int CCLock.t -> unit   val incr_then_get : int CCLock.t -> int   val get_then_incr : int CCLock.t -> int   val decr_then_get : int CCLock.t -> int   val get_then_decr : int CCLock.t -> int   val get_then_set : bool CCLock.t -> bool   val get_then_clear : bool CCLock.t -> bool end