sig
  type loopable = t
  type 'a t
  val empty : 'a t
  val add : 'a t -> key:loopable -> data:'-> 'a t
  val find : 'a t -> key:loopable -> 'a option
end