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