functor (Key : Set.OrderedType->
  sig
    type k = Key.t
    type 'a t
    val empty : 'a t
    val set_default : 'a t -> 'a option -> 'a t
    val insert : 'a t -> k * '-> 'a t
    val insert_opt : 'a t -> k option * '-> 'a t
    val apply : 'a t -> k -> 'a option
    val apply_opt : 'a t -> k option -> 'a option
    val remove : 'a t -> k -> 'a t
    val in_dom : k -> 'a t -> bool
  end