sig
  type 'a t
  type key
  val empty : 'Data.Map.t
  val add : Data.Map.key -> '-> 'Data.Map.t -> 'Data.Map.t
  val find : Data.Map.key -> 'Data.Map.t -> 'a
end