sig
  type 'a option_class
  type 'a option_record
  type options_file
  val create_options_file : string -> Options.options_file
  val set_options_file : Options.options_file -> string -> unit
  val prune_file : Options.options_file -> unit
  val load : Options.options_file -> unit
  val append : Options.options_file -> string -> unit
  val save : Options.options_file -> unit
  val save_with_help : Options.options_file -> unit
  val define_option :
    Options.options_file ->
    string list ->
    string -> 'Options.option_class -> '-> 'Options.option_record
  val option_hook : 'Options.option_record -> (unit -> unit) -> unit
  val string_option : string Options.option_class
  val color_option : string Options.option_class
  val font_option : string Options.option_class
  val int_option : int Options.option_class
  val bool_option : bool Options.option_class
  val float_option : float Options.option_class
  val string2_option : (string * string) Options.option_class
  val list_option : 'Options.option_class -> 'a list Options.option_class
  val smalllist_option :
    'Options.option_class -> 'a list Options.option_class
  val sum_option : (string * 'a) list -> 'Options.option_class
  val tuple2_option :
    'Options.option_class * 'Options.option_class ->
    ('a * 'b) Options.option_class
  val tuple3_option :
    'Options.option_class * 'Options.option_class *
    'Options.option_class -> ('a * 'b * 'c) Options.option_class
  val tuple4_option :
    'Options.option_class * 'Options.option_class *
    'Options.option_class * 'Options.option_class ->
    ('a * 'b * 'c * 'd) Options.option_class
  val ( !! ) : 'Options.option_record -> 'a
  val ( =:= ) : 'Options.option_record -> '-> unit
  val shortname : 'Options.option_record -> string
  val get_help : 'Options.option_record -> string
  val get_class : 'Options.option_record -> 'Options.option_class
  val class_hook :
    'Options.option_class -> ('Options.option_record -> unit) -> unit
  type option_value =
      Module of Options.option_module
    | StringValue of string
    | IntValue of int
    | FloatValue of float
    | List of Options.option_value list
    | SmallList of Options.option_value list
  and option_module = (string * Options.option_value) list
  val define_option_class :
    string ->
    (Options.option_value -> 'a) ->
    ('-> Options.option_value) -> 'Options.option_class
  val to_value : 'Options.option_class -> '-> Options.option_value
  val from_value : 'Options.option_class -> Options.option_value -> 'a
  val value_to_string : Options.option_value -> string
  val string_to_value : string -> Options.option_value
  val value_to_int : Options.option_value -> int
  val int_to_value : int -> Options.option_value
  val bool_of_string : string -> bool
  val value_to_bool : Options.option_value -> bool
  val bool_to_value : bool -> Options.option_value
  val value_to_float : Options.option_value -> float
  val float_to_value : float -> Options.option_value
  val value_to_string2 : Options.option_value -> string * string
  val string2_to_value : string * string -> Options.option_value
  val value_to_list :
    (Options.option_value -> 'a) -> Options.option_value -> 'a list
  val list_to_value :
    ('-> Options.option_value) -> 'a list -> Options.option_value
  val smalllist_to_value :
    ('-> Options.option_value) -> 'a list -> Options.option_value
  val set_simple_option : Options.options_file -> string -> string -> unit
  val simple_options : Options.options_file -> (string * string) list
  val get_simple_option : Options.options_file -> string -> string
  val set_option_hook :
    Options.options_file -> string -> (unit -> unit) -> unit
  val set_string_wrappers :
    'Options.option_record -> ('-> string) -> (string -> 'a) -> unit
  val simple_args : Options.options_file -> (string * Arg.spec * string) list
end