sig   type 'a key   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   val load : B0.Fpath.t -> (t * decode_error list) B0.result   val save : t -> B0.Fpath.t -> encode_error list B0.result   type 'a value   val const : '-> 'B0.Conf.value   val discover :     ?store:bool ->     (B0.Env.t -> B0.Env.build_aim -> 'a key -> t -> 'B0.result) ->     'B0.Conf.value   val value :     B0.Env.t ->     B0.Env.build_aim -> 'a key -> t -> 'B0.Conf.value -> 'B0.result   val value_const : 'B0.Conf.value -> 'a option   val value_store : 'B0.Conf.value -> bool   val pp_value : 'B0.Fmt.t -> 'B0.Conf.value B0.Fmt.t   module rec Group :     sig       type t       val v : ?loc:B0.Def.loc -> ?doc:string -> string -> B0.Conf.Group.t       val none : B0.Conf.Group.t       val keys : B0.Conf.Group.t -> B0.Conf.Key.t list       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   and Key :     sig       type 'a typed = 'a key       type 'a info       type t = V : 'a typed -> t       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       val v :         ?loc:B0.Def.loc ->         ?doc:string ->         ?group:B0.Conf.Group.t ->         string -> 'B0.Conv.t -> default:'B0.Conf.value -> 'a typed       val default : 'a typed -> 'B0.Conf.value       val group : t -> B0.Conf.Group.t     end   val key :     ?loc:B0.Def.loc ->     ?doc:string ->     ?group:B0.Conf.Group.t ->     string -> 'B0.Conv.t -> default:'B0.Conf.value -> 'a key   val get_default :     B0.Env.t -> B0.Env.build_aim -> 'a key -> t -> 'B0.result   val get_effective :     B0.Env.t ->     B0.Env.build_aim ->     'a key -> t -> ([ `Conf | `Default | `Env ] * 'a) B0.result   val keys : t -> B0.Conf.Key.t list   module Preset :     sig       type conf = t       val const : '-> 'B0.Conf.value       val discover :         ?store:bool ->         (B0.Env.t -> B0.Env.build_aim -> 'a key -> t -> 'B0.result) ->         'B0.Conf.value       type def       val def :         ?doc:string -> 'a key -> 'B0.Conf.value -> B0.Conf.Preset.def       val def_key : B0.Conf.Preset.def -> B0.Conf.Key.t       val def_doc : B0.Conf.Preset.def -> string       type binding = B : 'a key * 'B0.Conf.value -> B0.Conf.Preset.binding       val def_binding : B0.Conf.Preset.def -> B0.Conf.Preset.binding       type t       val v :         ?loc:B0.Def.loc ->         ?doc:string -> string -> B0.Conf.Preset.def list -> B0.Conf.Preset.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       val defs : B0.Conf.Preset.t -> B0.Conf.Preset.def list       val find_def : string -> B0.Conf.Preset.t -> B0.Conf.Preset.def option       val get_or_suggest_def :         string ->         B0.Conf.Preset.t ->         (B0.Conf.Preset.def, string list) Pervasives.result       val keys : B0.Conf.Preset.t -> B0.Conf.Key.t list       type def_error = string * [ `Msg of string ]       val add :         B0.Env.t ->         B0.Env.build_aim ->         B0.Conf.Preset.t ->         B0.Conf.Preset.conf ->         B0.Conf.Preset.conf * B0.Conf.Preset.def_error list       val rem :         B0.Conf.Preset.t -> B0.Conf.Preset.conf -> B0.Conf.Preset.conf     end   val of_preset :     B0.Env.t ->     B0.Env.build_aim -> B0.Conf.Preset.t -> t * B0.Conf.Preset.def_error list end