sig
  type 'v t = (Key.t, 'v, Key.comparator) Core_map_intf.S.tree
  type ('k, 'v, 'c) t_ = 'Core_map_intf.S.Tree.t
  val empty : ('k, 'comparator, ('k, 'a, 'comparator) t_) without_comparator
  val singleton :
    ('k, 'comparator, 'k key_ -> '-> ('k, 'v, 'comparator) t_)
    without_comparator
  val of_alist :
    ('k, 'comparator,
     ('k key_ * 'v) list ->
     [ `Duplicate_key of 'k key_ | `Ok of ('k, 'v, 'comparator) t_ ])
    without_comparator
  val of_alist_exn :
    ('k, 'comparator, ('k key_ * 'v) list -> ('k, 'v, 'comparator) t_)
    without_comparator
  val of_alist_multi :
    ('k, 'comparator, ('k key_ * 'v) list -> ('k, 'v list, 'comparator) t_)
    without_comparator
  val of_alist_fold :
    ('k, 'comparator,
     ('k key_ * 'v1) list ->
     init:'v2 -> f:('v2 -> 'v1 -> 'v2) -> ('k, 'v2, 'comparator) t_)
    without_comparator
  val of_tree :
    ('k, 'comparator,
     ('k key_, 'v, 'comparator) tree -> ('k, 'v, 'comparator) t_)
    without_comparator
  val is_empty : ('a, 'b, 'c) t_ -> bool
  val length : ('a, 'b, 'c) t_ -> int
  val add :
    ('k, 'comparator,
     ('k, 'v, 'comparator) t_ ->
     key:'k key_ -> data:'-> ('k, 'v, 'comparator) t_)
    without_comparator
  val add_multi :
    ('k, 'comparator,
     ('k, 'v list, 'comparator) t_ ->
     key:'k key_ -> data:'-> ('k, 'v list, 'comparator) t_)
    without_comparator
  val change :
    ('k, 'comparator,
     ('k, 'v, 'comparator) t_ ->
     'k key_ -> ('v option -> 'v option) -> ('k, 'v, 'comparator) t_)
    without_comparator
  val find :
    ('k, 'comparator, ('k, 'v, 'comparator) t_ -> 'k key_ -> 'v option)
    without_comparator
  val find_exn :
    ('k, 'comparator, ('k, 'v, 'comparator) t_ -> 'k key_ -> 'v)
    without_comparator
  val remove :
    ('k, 'comparator,
     ('k, 'v, 'comparator) t_ -> 'k key_ -> ('k, 'v, 'comparator) t_)
    without_comparator
  val mem :
    ('k, 'comparator, ('k, 'a, 'comparator) t_ -> 'k key_ -> bool)
    without_comparator
  val iter : ('k, 'v, 'a) t_ -> f:(key:'k key_ -> data:'-> unit) -> unit
  val map :
    ('k, 'v1, 'comparator) t_ -> f:('v1 -> 'v2) -> ('k, 'v2, 'comparator) t_
  val mapi :
    ('k, 'v1, 'comparator) t_ ->
    f:(key:'k key_ -> data:'v1 -> 'v2) -> ('k, 'v2, 'comparator) t_
  val fold :
    ('k, 'v, 'b) t_ ->
    init:'-> f:(key:'k key_ -> data:'-> '-> 'a) -> 'a
  val fold_right :
    ('k, 'v, 'b) t_ ->
    init:'-> f:(key:'k key_ -> data:'-> '-> 'a) -> 'a
  val filter :
    ('k, 'comparator,
     ('k, 'v, 'comparator) t_ ->
     f:(key:'k key_ -> data:'-> bool) -> ('k, 'v, 'comparator) t_)
    without_comparator
  val filter_map :
    ('k, 'comparator,
     ('k, 'v1, 'comparator) t_ ->
     f:('v1 -> 'v2 option) -> ('k, 'v2, 'comparator) t_)
    without_comparator
  val filter_mapi :
    ('k, 'comparator,
     ('k, 'v1, 'comparator) t_ ->
     f:(key:'k key_ -> data:'v1 -> 'v2 option) -> ('k, 'v2, 'comparator) t_)
    without_comparator
  val compare_direct :
    ('k, 'comparator,
     ('-> '-> int) ->
     ('k, 'v, 'comparator) t_ -> ('k, 'v, 'comparator) t_ -> int)
    without_comparator
  val equal :
    ('k, 'comparator,
     ('-> '-> bool) ->
     ('k, 'v, 'comparator) t_ -> ('k, 'v, 'comparator) t_ -> bool)
    without_comparator
  val keys : ('k, 'a, 'b) t_ -> 'k key_ list
  val data : ('a, 'v, 'b) t_ -> 'v list
  val to_alist : ('k, 'v, 'a) t_ -> ('k key_ * 'v) list
  val merge :
    ('k, 'comparator,
     ('k, 'v1, 'comparator) t_ ->
     ('k, 'v2, 'comparator) t_ ->
     f:(key:'k key_ ->
        [ `Both of 'v1 * 'v2 | `Left of 'v1 | `Right of 'v2 ] -> 'v3 option) ->
     ('k, 'v3, 'comparator) t_)
    without_comparator
  val min_elt : ('k, 'v, 'a) t_ -> ('k key_ * 'v) option
  val min_elt_exn : ('k, 'v, 'a) t_ -> 'k key_ * 'v
  val max_elt : ('k, 'v, 'a) t_ -> ('k key_ * 'v) option
  val max_elt_exn : ('k, 'v, 'a) t_ -> 'k key_ * 'v
  val for_all : ('k, 'v, 'a) t_ -> f:('-> bool) -> bool
  val exists : ('k, 'v, 'a) t_ -> f:('-> bool) -> bool
  val fold_range_inclusive :
    ('k, 'comparator,
     ('k, 'v, 'comparator) t_ ->
     min:'k key_ ->
     max:'k key_ -> init:'-> f:(key:'k key_ -> data:'-> '-> 'a) -> 'a)
    without_comparator
  val range_to_alist :
    ('k, 'comparator,
     ('k, 'v, 'comparator) t_ ->
     min:'k key_ -> max:'k key_ -> ('k key_ * 'v) list)
    without_comparator
  val prev_key :
    ('k, 'comparator,
     ('k, 'v, 'comparator) t_ -> 'k key_ -> ('k key_ * 'v) option)
    without_comparator
  val next_key :
    ('k, 'comparator,
     ('k, 'v, 'comparator) t_ -> 'k key_ -> ('k key_ * 'v) option)
    without_comparator
  val rank :
    ('k, 'comparator, ('k, 'v, 'comparator) t_ -> 'k key_ -> int option)
    without_comparator
  val to_tree : ('k, 'v, 'comparator) t_ -> ('k key_, 'v, 'comparator) tree
  val t_of_sexp :
    (Sexplib.Sexp.t -> 'v) -> Sexplib.Sexp.t -> 'Core_map_intf.S.Tree.t
  val sexp_of_t :
    ('-> Sexplib.Sexp.t) -> 'Core_map_intf.S.Tree.t -> Sexplib.Sexp.t
end