sig
  type ('a, 'b) t
  val empty : ('a, 'b) Package.Map.t
  val add :
    'a Package.Name.t ->
    'b -> ('a, 'b) Package.Map.t -> ('a, 'b) Package.Map.t
  val find : 'a Package.Name.t -> ('a, 'b) Package.Map.t -> 'b
  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 update_default :
    'a ->
    ('a -> 'a) ->
    'b Package.Name.t -> ('b, 'a) Package.Map.t -> ('b, 'a) Package.Map.t
end