sig
  type 'a t
  type 'a tree
  type key
  val invariants : 'Core_map_intf.Accessors1.t -> bool
  val is_empty : 'Core_map_intf.Accessors1.t -> bool
  val length : 'Core_map_intf.Accessors1.t -> int
  val add :
    'Core_map_intf.Accessors1.t ->
    key:Core_map_intf.Accessors1.key ->
    data:'-> 'Core_map_intf.Accessors1.t
  val add_multi :
    'a list Core_map_intf.Accessors1.t ->
    key:Core_map_intf.Accessors1.key ->
    data:'-> 'a list Core_map_intf.Accessors1.t
  val change :
    'Core_map_intf.Accessors1.t ->
    Core_map_intf.Accessors1.key ->
    ('a option -> 'a option) -> 'Core_map_intf.Accessors1.t
  val find :
    'Core_map_intf.Accessors1.t ->
    Core_map_intf.Accessors1.key -> 'a option
  val find_exn :
    'Core_map_intf.Accessors1.t -> Core_map_intf.Accessors1.key -> 'a
  val remove :
    'Core_map_intf.Accessors1.t ->
    Core_map_intf.Accessors1.key -> 'Core_map_intf.Accessors1.t
  val mem :
    'Core_map_intf.Accessors1.t -> Core_map_intf.Accessors1.key -> bool
  val iter :
    'Core_map_intf.Accessors1.t ->
    f:(key:Core_map_intf.Accessors1.key -> data:'-> unit) -> unit
  val iter2 :
    'Core_map_intf.Accessors1.t ->
    'Core_map_intf.Accessors1.t ->
    f:(key:Core_map_intf.Accessors1.key ->
       data:[ `Both of 'a * '| `Left of '| `Right of 'b ] -> unit) ->
    unit
  val map :
    'Core_map_intf.Accessors1.t ->
    f:('-> 'b) -> 'Core_map_intf.Accessors1.t
  val mapi :
    'Core_map_intf.Accessors1.t ->
    f:(key:Core_map_intf.Accessors1.key -> data:'-> 'b) ->
    'Core_map_intf.Accessors1.t
  val fold :
    'Core_map_intf.Accessors1.t ->
    init:'->
    f:(key:Core_map_intf.Accessors1.key -> data:'-> '-> 'b) -> 'b
  val fold_right :
    'Core_map_intf.Accessors1.t ->
    init:'->
    f:(key:Core_map_intf.Accessors1.key -> data:'-> '-> 'b) -> 'b
  val filter :
    'Core_map_intf.Accessors1.t ->
    f:(key:Core_map_intf.Accessors1.key -> data:'-> bool) ->
    'Core_map_intf.Accessors1.t
  val filter_map :
    'Core_map_intf.Accessors1.t ->
    f:('-> 'b option) -> 'Core_map_intf.Accessors1.t
  val filter_mapi :
    'Core_map_intf.Accessors1.t ->
    f:(key:Core_map_intf.Accessors1.key -> data:'-> 'b option) ->
    'Core_map_intf.Accessors1.t
  val compare_direct :
    ('-> '-> int) ->
    'Core_map_intf.Accessors1.t -> 'Core_map_intf.Accessors1.t -> int
  val equal :
    ('-> '-> bool) ->
    'Core_map_intf.Accessors1.t -> 'Core_map_intf.Accessors1.t -> bool
  val keys :
    'Core_map_intf.Accessors1.t -> Core_map_intf.Accessors1.key list
  val data : 'Core_map_intf.Accessors1.t -> 'a list
  val to_alist :
    'Core_map_intf.Accessors1.t -> (Core_map_intf.Accessors1.key * 'a) list
  val validate :
    name:(Core_map_intf.Accessors1.key -> string) ->
    'Validate.check -> 'Core_map_intf.Accessors1.t Validate.check
  val merge :
    'Core_map_intf.Accessors1.t ->
    'Core_map_intf.Accessors1.t ->
    f:(key:Core_map_intf.Accessors1.key ->
       [ `Both of 'a * '| `Left of '| `Right of 'b ] -> 'c option) ->
    'Core_map_intf.Accessors1.t
  val symmetric_diff :
    'Core_map_intf.Accessors1.t ->
    'Core_map_intf.Accessors1.t ->
    data_equal:('-> '-> bool) ->
    (Core_map_intf.Accessors1.key *
     [ `Left of '| `Right of '| `Unequal of 'a * 'a ])
    list
  val min_elt :
    'Core_map_intf.Accessors1.t ->
    (Core_map_intf.Accessors1.key * 'a) option
  val min_elt_exn :
    'Core_map_intf.Accessors1.t -> Core_map_intf.Accessors1.key * 'a
  val max_elt :
    'Core_map_intf.Accessors1.t ->
    (Core_map_intf.Accessors1.key * 'a) option
  val max_elt_exn :
    'Core_map_intf.Accessors1.t -> Core_map_intf.Accessors1.key * 'a
  val for_all : 'Core_map_intf.Accessors1.t -> f:('-> bool) -> bool
  val exists : 'Core_map_intf.Accessors1.t -> f:('-> bool) -> bool
  val fold_range_inclusive :
    'Core_map_intf.Accessors1.t ->
    min:Core_map_intf.Accessors1.key ->
    max:Core_map_intf.Accessors1.key ->
    init:'->
    f:(key:Core_map_intf.Accessors1.key -> data:'-> '-> 'b) -> 'b
  val range_to_alist :
    'Core_map_intf.Accessors1.t ->
    min:Core_map_intf.Accessors1.key ->
    max:Core_map_intf.Accessors1.key ->
    (Core_map_intf.Accessors1.key * 'a) list
  val prev_key :
    'Core_map_intf.Accessors1.t ->
    Core_map_intf.Accessors1.key ->
    (Core_map_intf.Accessors1.key * 'a) option
  val next_key :
    'Core_map_intf.Accessors1.t ->
    Core_map_intf.Accessors1.key ->
    (Core_map_intf.Accessors1.key * 'a) option
  val rank :
    'Core_map_intf.Accessors1.t ->
    Core_map_intf.Accessors1.key -> int option
  val to_tree :
    'Core_map_intf.Accessors1.t -> 'Core_map_intf.Accessors1.tree
end