functor (M : Map.S->
  sig
    val of_map : 'M.t -> (M.key * 'a) CCLinq.t
    val to_pmap : 'M.t -> (M.key, 'a) CCLinq.PMap.t
    val to_map : (M.key * 'a) CCLinq.t -> 'M.t CCLinq.t
    val run : (M.key * 'a) CCLinq.t -> 'M.t
  end