sig
  type 'a t = private {
    decls : (string * 'a) array;
    finder : int Mods.StringMap.t;
  }
  val create :
    ?forbidden:Mods.StringSet.t ->
    (string Locality.annot * 'a) array -> 'a NamedDecls.t
  val size : 'a NamedDecls.t -> int
  val elt_name : 'a NamedDecls.t -> int -> string
  val elt_id :
    ?kind:string -> 'a NamedDecls.t -> string Locality.annot -> int
  val fold : (int -> string -> 'a -> 'b -> 'a) -> 'a -> 'b NamedDecls.t -> 'a
  val mapi :
    (int -> string -> 'a -> 'b) -> 'a NamedDecls.t -> 'b NamedDecls.t
  val print :
    sep:(Format.formatter -> unit) ->
    (int -> string -> Format.formatter -> 'a -> unit) ->
    Format.formatter -> 'a NamedDecls.t -> unit
  val debug_print :
    (Format.formatter -> 'a -> unit) ->
    Format.formatter -> 'a NamedDecls.t -> unit
  val to_json :
    ('a -> Yojson.Basic.json) -> 'a NamedDecls.t -> Yojson.Basic.json
  val of_json :
    (Yojson.Basic.json -> 'a) -> Yojson.Basic.json -> 'a NamedDecls.t
end