type nonrec 'a t = ('a, 'a, int, int) tval create : ?n:int -> unit -> 'a tval add : 'a t -> 'a -> int -> unitval tick : 'a t -> 'a -> unitval stream : 'a t -> ('a * int) Stream.tval of_stream : 'a Stream.t -> 'a tval to_alist : 'a t -> ('a * int) list