sig   module Key :     sig       type 'a typed       type 'a info = unit       type t = V : 'a typed -> t       val v :         ?loc:Def.loc ->         ?doc:string -> string -> 'Conv.t -> 'a info -> 'a typed       val conv : 'a typed -> 'Conv.t       val info : 'a typed -> 'a info       val of_typed : 'a typed -> t       val value_kind : string       val name : t -> string       val loc : t -> Def.loc       val doc : t -> string       val equal : t -> t -> bool       val compare : t -> t -> int       val compare_by_name : t -> t -> int       val find : string -> t option       val get : string -> t       val get_or_suggest : string -> (t, string list) result       val list : unit -> t list       val pp_name_str : string Fmt.t       val pp_name : t Fmt.t       val pp_synopsis : t Fmt.t       val pp_info : t Fmt.t       val pp_info_ext : t Fmt.t -> t Fmt.t     end   type 'a key = 'Key.typed   type t   val empty : t   val is_empty : t -> bool   val mem : 'a key -> t -> bool   val add : 'a key -> '-> t -> t   val add_tag : bool key -> t -> t   val singleton : 'a key -> '-> t   val rem : 'a key -> t -> t   val find : 'a key -> t -> 'a option   val get : 'a key -> t -> 'a   val get_or_suggest : 'a key -> t -> ('a, string list) result   val flag : ?absent:bool -> bool key -> t -> bool   type binding = B : 'a key * '-> binding   val iter : (binding -> unit) -> t -> unit   val fold : (binding -> '-> 'a) -> t -> '-> 'a   val for_all : (binding -> bool) -> t -> bool   val exists : (binding -> bool) -> t -> bool   val filter : (binding -> bool) -> t -> t   val cardinal : t -> int   val any_binding : t -> binding option   val get_any_binding : t -> binding   val pp : t Fmt.t   type encode_error = string * [ `Msg of string ]   val encode : t -> (string * string) list * encode_error list   type decode_error = string * [ `Msg of string | `Unknown ]   val decode : (string * string) list -> t * decode_error list end