sig
  module Mutex :
    sig
      type t = Mutex.t
      val create : unit -> BatMutex.Mutex.t
      val lock : BatMutex.Mutex.t -> unit
      val try_lock : BatMutex.Mutex.t -> bool
      val unlock : BatMutex.Mutex.t -> unit
      val synchronize : ?lock:BatMutex.Mutex.t -> ('-> 'b) -> '-> 'b
      val make : unit -> BatConcurrent.lock
    end
  module DebugMutex :
    sig
      type t
      val create : unit -> BatMutex.DebugMutex.t
      val lock : BatMutex.DebugMutex.t -> unit
      val try_lock : BatMutex.DebugMutex.t -> bool
      val unlock : BatMutex.DebugMutex.t -> unit
      val synchronize : ?lock:BatMutex.DebugMutex.t -> ('-> 'b) -> '-> 'b
      val make : unit -> BatConcurrent.lock
    end
end