sig
  type t
  type ('a, 'b) reagent = ('a, 'b) R.t
  val create : int -> t
  val get : t -> (unit, int) reagent
  val inc : t -> (unit, int) reagent
  val dec : t -> (unit, int) reagent
  val try_dec : t -> (unit, int option) reagent
end