sig
  type ('a, 'b) t
  val get : ('a, 'b) OLinq_map.Build.t -> ('a, 'b) OLinq_map.map
  val add : ('a, 'b) OLinq_map.Build.t -> 'a -> 'b -> unit
  val add_multimap : ('a, 'b list) OLinq_map.Build.t -> 'a -> 'b -> unit
  val add_count : ('a, int) OLinq_map.Build.t -> 'a -> unit
  val update :
    ('a, 'b) OLinq_map.Build.t -> 'a -> f:('b -> 'b) -> or_:'b -> unit
  val of_hash :
    ?eq:('a -> 'a -> bool) ->
    ?hash:('a -> int) -> ?size:int -> unit -> ('a, 'b) OLinq_map.Build.t
  val of_cmp : ?cmp:('a -> 'a -> int) -> unit -> ('a, 'b) OLinq_map.Build.t
  type 'a src =
      Cmp of 'a OLinq_map.ord
    | Hash of 'a OLinq_map.equal * 'a OLinq_map.hash * int
    | Default
  val of_src : 'a OLinq_map.Build.src -> ('a, 'b) OLinq_map.Build.t
  val src_of_args :
    ?cmp:'a OLinq_map.ord ->
    ?eq:'a OLinq_map.equal ->
    ?hash:'a OLinq_map.hash -> unit -> 'a OLinq_map.Build.src
  val make :
    ?cmp:'a OLinq_map.ord ->
    ?eq:'a OLinq_map.equal ->
    ?hash:'a OLinq_map.hash -> unit -> ('a, 'b) OLinq_map.Build.t
end