sig
  type t = Biocaml_range.t = private { lo : int; hi : int; }
  val make : int -> int -> t Core.Std.Or_error.t
  val make_unsafe : int -> int -> t
  val size : t -> int
  val member : t -> int -> bool
  val to_string : t -> string
  val to_list : t -> int list
  val overlap : t -> t -> int
  val gap : t -> t -> int
  val union : t -> t -> [ `Disjoint of t * t | `Joint of t ]
  val intersect : t -> t -> t option
  val before : t -> t -> bool
  val after : t -> t -> bool
  val strict_before : t -> t -> bool
  val strict_after : t -> t -> bool
  val compare_positional : t -> t -> int option
  val subset : t -> t -> bool
  val superset : t -> t -> bool
  val strict_subset : t -> t -> bool
  val strict_superset : t -> t -> bool
  val compare_containment : t -> t -> int option
  val any_overlap : t list -> bool
  val all_positional : t list -> bool
  val max_gap_of_positional : t list -> int
  val find_min_range :
    ?init_direction:string -> t -> (t -> bool) -> int -> t option
  val expand_assoc_list : (t * 'a) list -> (int * 'a list) list
  val find_regions : ?max_gap:int -> ('-> bool) -> (t * 'a) list -> t list
  val make_random : t -> t
  val t_of_sexp : Sexplib.Sexp.t -> t
  val sexp_of_t : t -> Sexplib.Sexp.t
  val compare : t -> t -> int
end