sig
  type ('a, 'b) t
  val empty : ('a, 'b) Package.Map.t
  val is_empty : ('a, 'b) Package.Map.t -> bool
  val add :
    'a Package.Name.t ->
    'b -> ('a, 'b) Package.Map.t -> ('a, 'b) Package.Map.t
  val remove :
    'a Package.Name.t -> ('a, 'b) Package.Map.t -> ('a, 'b) Package.Map.t
  val find : 'a Package.Name.t -> ('a, 'b) Package.Map.t -> 'b
  val find_opt : 'a Package.Name.t -> ('a, 'b) Package.Map.t -> 'b option
  val iter :
    ('a Package.Name.t -> 'b -> unit) -> ('a, 'b) Package.Map.t -> unit
  val mapi :
    ('a Package.Name.t -> 'b -> 'c) ->
    ('a, 'b) Package.Map.t -> ('a, 'c) Package.Map.t
  val fold :
    ('a Package.Name.t -> 'b -> 'c -> 'c) ->
    ('a, 'b) Package.Map.t -> 'c -> 'c
  val bindings : ('a, 'b) Package.Map.t -> ('a Package.Name.t * 'b) list
  val update_default :
    'b ->
    ('b -> 'b) ->
    'a Package.Name.t -> ('a, 'b) Package.Map.t -> ('a, 'b) Package.Map.t
  val mem : 'a Package.Name.t -> ('a, 'b) Package.Map.t -> bool
end