sig
  type ('a, 'b) t
  val get : ('a, 'b) CCLinq.PMap.t -> 'a -> 'b option
  val size : ('a, 'b) CCLinq.PMap.t -> int
  val to_seq : ('a, 'b) CCLinq.PMap.t -> ('a * 'b) CCLinq.sequence
  val map : ('b -> 'c) -> ('a, 'b) CCLinq.PMap.t -> ('a, 'c) CCLinq.PMap.t
  val to_list : ('a, 'b) CCLinq.PMap.t -> ('a * 'b) list
  val reverse :
    ?cmp:'b CCLinq.ord ->
    ?eq:'b CCLinq.equal ->
    ?hash:'b CCLinq.hash ->
    unit -> ('a, 'b) CCLinq.PMap.t -> ('b, 'a list) CCLinq.PMap.t
  val reverse_multimap :
    ?cmp:'b CCLinq.ord ->
    ?eq:'b CCLinq.equal ->
    ?hash:'b CCLinq.hash ->
    unit -> ('a, 'b list) CCLinq.PMap.t -> ('b, 'a list) CCLinq.PMap.t
  val fold :
    ('acc -> 'a -> 'b -> 'acc) -> 'acc -> ('a, 'b) CCLinq.PMap.t -> 'acc
  val fold_multimap :
    ('acc -> 'a -> 'b -> 'acc) -> 'acc -> ('a, 'b list) CCLinq.PMap.t -> 'acc
  val get_seq : 'a -> ('a, 'b) CCLinq.PMap.t -> 'b CCLinq.sequence
  val iter : ('a, 'b) CCLinq.PMap.t -> ('a * 'b) CCLinq.sequence
  val flatten :
    ('a, 'b CCLinq.sequence) CCLinq.PMap.t -> ('a * 'b) CCLinq.sequence
  val flatten_l : ('a, 'b list) CCLinq.PMap.t -> ('a * 'b) CCLinq.sequence
end