sig
  type 'a t
  val empty : 'IntMap.t
  val is_empty : 'IntMap.t -> bool
  val size : 'IntMap.t -> int
  val has_key : 'IntMap.t -> int -> bool
  val max_key : 'IntMap.t -> int
  val get : 'IntMap.t -> int -> 'a
  val get_default : 'IntMap.t -> int -> '-> 'a
  val add : 'IntMap.t -> int -> '-> 'IntMap.t
  val remove : 'IntMap.t -> int -> 'IntMap.t
  val update : ('-> 'a) -> 'IntMap.t -> int -> 'IntMap.t
  val fold : ('-> int -> '-> 'a) -> 'IntMap.t -> '-> 'a
  val iter : (int -> '-> unit) -> 'IntMap.t -> unit
  val map : (int -> '-> 'b) -> 'IntMap.t -> 'IntMap.t
  val find : (int -> '-> bool) -> 'IntMap.t -> int * 'a
  val for_all : (int -> '-> bool) -> 'IntMap.t -> bool
  val output :
    (Pervasives.out_channel -> '-> unit) ->
    Pervasives.out_channel -> 'IntMap.t -> unit
  val print : (Pervasives.out_channel -> '-> unit) -> 'IntMap.t -> unit
  val dump : (Pervasives.out_channel -> '-> unit) -> 'IntMap.t -> unit
end