    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 :
        (string * Arg.spec * string) list -> (string -> unit) -> string -> unit
      exception Bad of string
      val usage : (string * Arg.spec * string) list -> string -> unit
      val current : int Pervasives.ref
    end