sig
  type error =
      Duplicate_parameter of ParameterName.t
    | Invalid_value of string
    | Invalid_type of string * string
    | Unknown_parameter of ParameterName.t
  exception Exception of Parameter.error
  type 'a t
  type 'a predicate = '-> bool
  type 'a desc = ParameterName.t * string * 'a * 'Parameter.predicate
  val bool : bool Parameter.desc -> bool Parameter.t
  val int : int Parameter.desc -> int Parameter.t
  val string : string Parameter.desc -> string Parameter.t
  val symbol : string Parameter.desc -> string Parameter.t
  val symbol_list : string list Parameter.desc -> string list Parameter.t
  type map
  val empty_map : Parameter.map
  val size : Parameter.map -> int
  val add_desc : 'Parameter.t -> Parameter.map -> Parameter.map
  val set_bool : ParameterName.t -> bool -> Parameter.map -> Parameter.map
  val set_int : ParameterName.t -> int -> Parameter.map -> Parameter.map
  val set_string :
    ParameterName.t -> string -> Parameter.map -> Parameter.map
  val set_symbol :
    ParameterName.t -> string -> Parameter.map -> Parameter.map
  val set_symbol_list :
    ParameterName.t -> string list -> Parameter.map -> Parameter.map
  val get_bool : ParameterName.t -> Parameter.map -> bool
  val get_int : ParameterName.t -> Parameter.map -> int
  val get_string : ParameterName.t -> Parameter.map -> string
  val get_symbol : ParameterName.t -> Parameter.map -> string
  val get_symbol_list : ParameterName.t -> Parameter.map -> string list
  val iter :
    (ParameterName.t -> string -> string -> string -> unit) ->
    Parameter.map -> unit
  val make1 : 'Parameter.t -> Parameter.map * (Parameter.map -> 'a)
  val make2 :
    'Parameter.t ->
    'Parameter.t ->
    Parameter.map * (Parameter.map -> 'a) * (Parameter.map -> 'b)
  val make3 :
    'Parameter.t ->
    'Parameter.t ->
    'Parameter.t ->
    Parameter.map * (Parameter.map -> 'a) * (Parameter.map -> 'b) *
    (Parameter.map -> 'c)
  val make4 :
    'Parameter.t ->
    'Parameter.t ->
    'Parameter.t ->
    'Parameter.t ->
    Parameter.map * (Parameter.map -> 'a) * (Parameter.map -> 'b) *
    (Parameter.map -> 'c) * (Parameter.map -> 'd)
  val any : 'Parameter.predicate
  val positive : int Parameter.predicate
  val strictly_positive : int Parameter.predicate
  val non_empty_string : string Parameter.predicate
  val level_symbol : string Parameter.predicate
end