sig
  type spec =
      Unit of (unit -> unit)
    | Set of bool Pervasives.ref
    | Clear of bool Pervasives.ref
    | String of (string -> unit)
    | Int of (int -> unit)
    | Float of (float -> unit)
    | Rest of (string -> unit)
  val parse :
    keywords:(string * Arg.spec * string) list ->
    others:(string -> unit) -> errmsg:string -> unit
  exception Bad of string
  val usage :
    keywords:(string * Arg.spec * string) list -> errmsg:string -> unit
  val current : int Pervasives.ref
end