functor (Ord : OrderedType->
  functor (Value : ValueType->
    sig
      type key = Ord.t
      type t =
          Empty
        | Node of Rangemap.Make.t * Rangemap.Make.key * Value.t *
            Rangemap.Make.t * int * int
      val descr : Unmarshal.t
      val create :
        Rangemap.Make.t ->
        Rangemap.Make.key -> Value.t -> Rangemap.Make.t -> Rangemap.Make.t
      val hash : Rangemap.Make.t -> int
      val empty : Rangemap.Make.t
      val is_empty : Rangemap.Make.t -> bool
      val add :
        Rangemap.Make.key -> Value.t -> Rangemap.Make.t -> Rangemap.Make.t
      val find : Rangemap.Make.key -> Rangemap.Make.t -> Value.t
      val remove : Rangemap.Make.key -> Rangemap.Make.t -> Rangemap.Make.t
      val mem : Rangemap.Make.key -> Rangemap.Make.t -> bool
      val iter :
        (Rangemap.Make.key -> Value.t -> unit) -> Rangemap.Make.t -> unit
      val map : (Value.t -> Value.t) -> Rangemap.Make.t -> Rangemap.Make.t
      val mapi :
        (Rangemap.Make.key -> Value.t -> Value.t) ->
        Rangemap.Make.t -> Rangemap.Make.t
      val mapii :
        (Rangemap.Make.key -> Value.t -> Rangemap.Make.key * Value.t) ->
        Rangemap.Make.t -> Rangemap.Make.t
      val fold :
        (Rangemap.Make.key -> Value.t -> '-> 'a) ->
        Rangemap.Make.t -> '-> 'a
      val compare :
        (Value.t -> Value.t -> int) ->
        Rangemap.Make.t -> Rangemap.Make.t -> int
      val equal :
        (Value.t -> Value.t -> bool) ->
        Rangemap.Make.t -> Rangemap.Make.t -> bool
      val fold_range :
        (Rangemap.Make.key -> Rangemap.fuzzy_order) ->
        (Rangemap.Make.key -> Value.t -> Value.t -> Value.t) ->
        Rangemap.Make.t -> Value.t -> Value.t
      val height : Rangemap.Make.t -> int
      val concerned_intervals :
        (Rangemap.Make.key -> Rangemap.Make.key -> Rangemap.fuzzy_order) ->
        Rangemap.Make.key ->
        Rangemap.Make.t -> (Rangemap.Make.key * Value.t) list
      exception Empty_rangemap
      val lowest_binding : Rangemap.Make.t -> Rangemap.Make.key * Value.t
      exception No_such_binding
      val lowest_binding_above :
        (Rangemap.Make.key -> bool) ->
        Rangemap.Make.t -> Rangemap.Make.key * Value.t
      val merge : Rangemap.Make.t -> Rangemap.Make.t -> Rangemap.Make.t
      val add_whole :
        (Rangemap.Make.key -> Rangemap.Make.key -> Rangemap.fuzzy_order) ->
        Rangemap.Make.key -> Value.t -> Rangemap.Make.t -> Rangemap.Make.t
      val remove_whole :
        (Rangemap.Make.key -> Rangemap.Make.key -> Rangemap.fuzzy_order) ->
        Rangemap.Make.key -> Rangemap.Make.t -> Rangemap.Make.t
    end