# Module type Core_map_intf.Creators3_with_comparator

    module type Creators3_with_comparator = sig .. end

    type ('a, 'b, 'cmp) t

    type ('a, 'b, 'cmp) tree

    val empty : comparator:('a, 'cmp) Comparator.t ->
           ('a, 'b, 'cmp) t

    val singleton : comparator:('a, 'cmp) Comparator.t ->
           'a -> 'b -> ('a, 'b, 'cmp) t

    val of_alist : comparator:('a, 'cmp) Comparator.t ->
           ('a * 'b) list ->
           [ `Duplicate_key of 'a
           | `Ok of ('a, 'b, 'cmp) t ]

    val of_alist_or_error : comparator:('a, 'cmp) Comparator.t ->
           ('a * 'b) list ->
           ('a, 'b, 'cmp) t Or_error.t

    val of_alist_exn : comparator:('a, 'cmp) Comparator.t ->
           ('a * 'b) list -> ('a, 'b, 'cmp) t

    val of_alist_multi : comparator:('a, 'cmp) Comparator.t ->
           ('a * 'b) list ->
           ('a, 'b list, 'cmp) t

    val of_alist_fold : comparator:('a, 'cmp) Comparator.t ->
           ('a * 'b) list ->
           init:'c ->
           f:('c -> 'b -> 'c) ->
           ('a, 'c, 'cmp) t

    val of_alist_reduce : comparator:('a, 'cmp) Comparator.t ->
           ('a * 'b) list ->
           f:('b -> 'b -> 'b) ->
           ('a, 'b, 'cmp) t

    val of_sorted_array : comparator:('a, 'cmp) Comparator.t ->
           ('a * 'b) array ->
           ('a, 'b, 'cmp) t Or_error.t

    val of_sorted_array_unchecked : comparator:('a, 'cmp) Comparator.t ->
           ('a * 'b) array -> ('a, 'b, 'cmp) t

    val of_tree : comparator:('a, 'cmp) Comparator.t ->
           ('a, 'b, 'cmp) tree ->
           ('a, 'b, 'cmp) t