module type Creators = sig .. end
type ('a, 'b) t 
type 'a key 
type ('key, 'z) create_options 
val create : ('a key,
        unit -> ('a, 'b) t)
       create_options
val of_alist : ('a key,
        ('a key * 'b) list ->
        [ `Duplicate_key of 'a key
        | `Ok of ('a, 'b) t ])
       create_options
val of_alist_report_all_dups : ('a key,
        ('a key * 'b) list ->
        [ `Duplicate_keys of 'a key list
        | `Ok of ('a, 'b) t ])
       create_options
val of_alist_exn : ('a key,
        ('a key * 'b) list ->
        ('a, 'b) t)
       create_options
val of_alist_multi : ('a key,
        ('a key * 'b) list ->
        ('a, 'b list) t)
       create_options
val create_mapped : ('a key,
        get_key:('r -> 'a key) ->
        get_data:('r -> 'b) ->
        'r list ->
        [ `Duplicate_keys of 'a key list
        | `Ok of ('a, 'b) t ])
       create_options
val create_with_key : ('a key,
        get_key:('r -> 'a key) ->
        'r list ->
        [ `Duplicate_keys of 'a key list
        | `Ok of ('a, 'r) t ])
       create_options
val create_with_key_exn : ('a key,
        get_key:('r -> 'a key) ->
        'r list -> ('a, 'r) t)
       create_options
val group : ('a key,
        get_key:('r -> 'a key) ->
        get_data:('r -> 'b) ->
        combine:('b -> 'b -> 'b) -> 'r list -> ('a, 'b) t)
       create_options