sig
  module Factory :
    functor (Mutex : Mutex.Mutex_t->
      sig
        type condition
        val create : unit -> Duppy.Monad.Condition.Factory.condition
        val wait :
          Duppy.Monad.Condition.Factory.condition ->
          Mutex.mutex -> (unit, 'a) Duppy.Monad.t
        val broadcast :
          Duppy.Monad.Condition.Factory.condition -> (unit, 'a) Duppy.Monad.t
        val signal :
          Duppy.Monad.Condition.Factory.condition -> (unit, 'a) Duppy.Monad.t
      end
end