sig
  type 'a key
  type ('key, 'a) t
  val create : '-> ('key, 'a) Stmap.S.t
  val compare_key : 'Stmap.S.key -> 'Stmap.S.key -> int
  val get : ('key, 'a) Stmap.S.t -> 'key Stmap.S.key -> 'a
  val add :
    ('key, 'a) Stmap.S.t -> '-> 'key Stmap.S.key * ('key, 'a) Stmap.S.t
  val fold :
    ('key Stmap.S.key -> '-> '-> 'b) -> ('key, 'a) Stmap.S.t -> '-> 'b
  val find : ('key, 'a) Stmap.S.t -> ('-> bool) -> 'key Stmap.S.key
  val int : 'key Stmap.S.key -> int
  val iter : ('key Stmap.S.key -> '-> unit) -> ('key, 'a) Stmap.S.t -> unit
  val remove :
    ('key, 'a) Stmap.S.t -> 'key Stmap.S.key -> ('key, 'a) Stmap.S.t
  val modify :
    ('key, 'a) Stmap.S.t -> 'key Stmap.S.key -> '-> ('key, 'a) Stmap.S.t
  val card : ('key, 'a) Stmap.S.t -> int
end