sig   module type S =     sig       type key       type value       type rangemap       type t = rangemap       val ty : t Type.t       val name : string       val descr : t Descr.t       val packed_descr : Structural_descr.pack       val reprs : t list       val equal : t -> t -> bool       val compare : t -> t -> int       val hash : t -> int       val pretty_code : Format.formatter -> t -> unit       val internal_pretty_code :         Type.precedence -> Format.formatter -> t -> unit       val pretty : Format.formatter -> t -> unit       val varname : t -> string       val mem_project : (Project_skeleton.t -> bool) -> t -> bool       val copy : t -> t       val create : t -> Rangemap.S.key -> Rangemap.S.value -> t -> t       val empty : t       val is_empty : t -> bool       val add : Rangemap.S.key -> Rangemap.S.value -> t -> t       val singleton : Rangemap.S.key -> Rangemap.S.value -> t       val find : Rangemap.S.key -> t -> Rangemap.S.value       val remove : Rangemap.S.key -> t -> t       val mem : Rangemap.S.key -> t -> bool       val iter : (Rangemap.S.key -> Rangemap.S.value -> unit) -> t -> unit       val map : (Rangemap.S.value -> Rangemap.S.value) -> t -> t       val mapi :         (Rangemap.S.key -> Rangemap.S.value -> Rangemap.S.value) -> t -> t       val mapii :         (Rangemap.S.key ->          Rangemap.S.value -> Rangemap.S.key * Rangemap.S.value) ->         t -> t       val fold :         (Rangemap.S.key -> Rangemap.S.value -> '-> 'a) -> t -> '-> 'a       val for_all : (Rangemap.S.key -> Rangemap.S.value -> bool) -> t -> bool       val exists : (Rangemap.S.key -> Rangemap.S.value -> bool) -> t -> bool       val filter : (Rangemap.S.key -> Rangemap.S.value -> bool) -> t -> t       val partition :         (Rangemap.S.key -> Rangemap.S.value -> bool) -> t -> t * t       val cardinal : t -> int       val bindings : t -> (Rangemap.S.key * Rangemap.S.value) list       val min_binding : t -> Rangemap.S.key * Rangemap.S.value       val max_binding : t -> Rangemap.S.key * Rangemap.S.value       val choose : t -> Rangemap.S.key * Rangemap.S.value       val merge :         (Rangemap.S.key ->          Rangemap.S.value option ->          Rangemap.S.value option -> Rangemap.S.value option) ->         t -> t -> t       val for_all2 :         (Rangemap.S.key ->          Rangemap.S.value option -> Rangemap.S.value option -> bool) ->         t -> t -> bool       val exists2 :         (Rangemap.S.key ->          Rangemap.S.value option -> Rangemap.S.value option -> bool) ->         t -> t -> bool       val iter2 :         (Rangemap.S.key ->          Rangemap.S.value option -> Rangemap.S.value option -> unit) ->         t -> t -> unit       val fold2 :         (Rangemap.S.key ->          Rangemap.S.value option -> Rangemap.S.value option -> '-> 'a) ->         t -> t -> '-> 'a     end   type fuzzy_order = Above | Below | Match   module type Value =     sig       type t       val ty : t Type.t       val name : string       val descr : t Descr.t       val packed_descr : Structural_descr.pack       val reprs : t list       val equal : t -> t -> bool       val compare : t -> t -> int       val hash : t -> int       val pretty_code : Format.formatter -> t -> unit       val internal_pretty_code :         Type.precedence -> Format.formatter -> t -> unit       val pretty : Format.formatter -> t -> unit       val varname : t -> string       val mem_project : (Project_skeleton.t -> bool) -> t -> bool       val copy : t -> t       val fast_equal : t -> t -> bool     end   module Make :     functor (Ord : Datatype.S) (Value : Value->       sig         type key = Ord.t         type value = Value.t         type rangemap         type t = rangemap         val ty : t Type.t         val name : string         val descr : t Descr.t         val packed_descr : Structural_descr.pack         val reprs : t list         val equal : t -> t -> bool         val compare : t -> t -> int         val hash : t -> int         val pretty_code : Format.formatter -> t -> unit         val internal_pretty_code :           Type.precedence -> Format.formatter -> t -> unit         val pretty : Format.formatter -> t -> unit         val varname : t -> string         val mem_project : (Project_skeleton.t -> bool) -> t -> bool         val copy : t -> t         val create : t -> key -> value -> t -> t         val empty : t         val is_empty : t -> bool         val add : key -> value -> t -> t         val singleton : key -> value -> t         val find : key -> t -> value         val remove : key -> t -> t         val mem : key -> t -> bool         val iter : (key -> value -> unit) -> t -> unit         val map : (value -> value) -> t -> t         val mapi : (key -> value -> value) -> t -> t         val mapii : (key -> value -> key * value) -> t -> t         val fold : (key -> value -> '-> 'a) -> t -> '-> 'a         val for_all : (key -> value -> bool) -> t -> bool         val exists : (key -> value -> bool) -> t -> bool         val filter : (key -> value -> bool) -> t -> t         val partition : (key -> value -> bool) -> t -> t * t         val cardinal : t -> int         val bindings : t -> (key * value) list         val min_binding : t -> key * value         val max_binding : t -> key * value         val choose : t -> key * value         val merge :           (key -> value option -> value option -> value option) ->           t -> t -> t         val for_all2 :           (key -> value option -> value option -> bool) -> t -> t -> bool         val exists2 :           (key -> value option -> value option -> bool) -> t -> t -> bool         val iter2 :           (key -> value option -> value option -> unit) -> t -> t -> unit         val fold2 :           (key -> value option -> value option -> '-> 'a) ->           t -> t -> '-> 'a         val fold_range :           (key -> Rangemap.fuzzy_order) ->           (key -> Rangemap.Value.t -> '-> 'a) -> t -> '-> 'a         val height : t -> int         val concerned_intervals :           (key -> key -> Rangemap.fuzzy_order) ->           key -> t -> (key * Rangemap.Value.t) list         exception Empty_rangemap         val lowest_binding : t -> key * Rangemap.Value.t         exception No_such_binding         val lowest_binding_above :           (key -> bool) -> t -> key * Rangemap.Value.t         val add_whole :           (key -> key -> Rangemap.fuzzy_order) ->           key -> Rangemap.Value.t -> t -> t         val remove_whole :           (key -> key -> Rangemap.fuzzy_order) -> key -> t -> t       end end