sig
  type key = var
  type 'data t
  val create : unit -> 'data t
  val clear : 'data t -> unit
  val add : key -> 'data -> 'data t -> unit
  val find : key -> 'data t -> 'data
  val iter : (key -> 'data -> unit) -> 'data t -> unit
end