sig
  type 'a t
  type 'a entry = int * int * 'a
  val empty : 'a Rgmap.t
  val add : ?overlap:bool -> 'a Rgmap.entry -> 'a Rgmap.t -> 'a Rgmap.t
  val find : int -> int -> 'a Rgmap.t -> 'a Rgmap.entry
  val find_all : int -> int -> 'a Rgmap.t -> 'a Rgmap.entry list
  val iter : ('a Rgmap.entry -> unit) -> 'a Rgmap.t -> unit
end