# Module type Core_map_intf.Creators_generic

    module type Creators_generic = sig .. end

    type ('k, 'v, 'cmp) t

    type ('k, 'v, 'cmp) tree

    type 'k key

    type ('a, 'cmp, 'z) options

    val empty : ('k, 'cmp, ('k, 'a, 'cmp) t)
           options

    val singleton : ('k, 'cmp,
            'k key ->
            'v -> ('k, 'v, 'cmp) t)
           options

    val of_sorted_array : ('k, 'cmp,
            ('k key * 'v) array ->
            ('k, 'v, 'cmp) t Or_error.t)
           options

    val of_sorted_array_unchecked : ('k, 'cmp,
            ('k key * 'v) array ->
            ('k, 'v, 'cmp) t)
           options

    val of_alist : ('k, 'cmp,
            ('k key * 'v) list ->
            [ `Duplicate_key of 'k key
            | `Ok of ('k, 'v, 'cmp) t ])
           options

    val of_alist_or_error : ('k, 'cmp,
            ('k key * 'v) list ->
            ('k, 'v, 'cmp) t Or_error.t)
           options

    val of_alist_exn : ('k, 'cmp,
            ('k key * 'v) list ->
            ('k, 'v, 'cmp) t)
           options

    val of_alist_multi : ('k, 'cmp,
            ('k key * 'v) list ->
            ('k, 'v list, 'cmp) t)
           options

    val of_alist_fold : ('k, 'cmp,
            ('k key * 'v1) list ->
            init:'v2 ->
            f:('v2 -> 'v1 -> 'v2) -> ('k, 'v2, 'cmp) t)
           options

    val of_alist_reduce : ('k, 'cmp,
            ('k key * 'v) list ->
            f:('v -> 'v -> 'v) -> ('k, 'v, 'cmp) t)
           options

    val of_tree : ('k, 'cmp,
            ('k key, 'v, 'cmp)
            tree ->
            ('k, 'v, 'cmp) t)
           options