sig
  type counter
  exception OVERFLOW
  val create : unit -> Counter.counter
  val create_with : int -> Counter.counter
  val set : Counter.counter -> int -> unit
  val inc : Counter.counter -> unit
  val inc_by : Counter.counter -> int -> unit
  val dec : Counter.counter -> unit
  val next : Counter.counter -> int
  val value : Counter.counter -> int
end