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