sig
  type ('k, 'v) t
  type 'a with_init_args = 'a
  val cps_create : f:(('a, 'c) t -> 'b) -> 'b with_init_args
  val clear : ('k, 'v) t -> unit
  val replace : ('k, 'v) t -> key:'-> data:'-> unit
  val find : ('k, 'v) t -> '-> 'v option
  val data : ('a, 'v) t -> 'v list
  val remove : ('k, 'v) t -> '-> unit
end