sig
  module Test :
    sig
      type t = Bench.Test.t
      val create : name:string -> (unit -> unit) -> t
      val create_indexed :
        name:string ->
        args:int list -> (int -> (unit -> unit) Core.Std.Staged.t) -> t
    end
  module Column :
    sig
      type t =
          [ `Allocated
          | `Confidence
          | `Cycles
          | `GC
          | `Name
          | `Nanos
          | `Percentage
          | `Samples
          | `Speedup ]
      val t_of_sexp : Sexplib.Sexp.t -> t
      val __t_of_sexp__ : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
    end
  module Variable :
    sig
      type t =
          [ `Compactions
          | `Cycles
          | `Major_allocated
          | `Major_collections
          | `Minor_allocated
          | `Minor_collections
          | `Nanos
          | `One
          | `Promoted
          | `Runs ]
      val t_of_sexp : Sexplib.Sexp.t -> t
      val __t_of_sexp__ : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
    end
  val bench :
    ?limit_width_to:int ->
    ?columns:[ `Allocated
             | `Confidence
             | `Cycles
             | `GC
             | `If_not_empty of Column.t
             | `Name
             | `Nanos
             | `Percentage
             | `Samples
             | `Speedup ] list ->
    ?display:Textutils.Ascii_table.Display.t ->
    ?ascii_table:bool ->
    ?ci_absolute:bool ->
    ?verbosity:[ `High | `Low ] ->
    ?no_compactions:bool ->
    ?save_sample_data:bool ->
    ?time_quota:Core.Std.Time.Span.t ->
    ?sampling_type:[ `Geometric of float | `Linear of int ] ->
    ?stabilize_gc_between_runs:bool ->
    ?predictors:Variable.t list ->
    ?fork_each_benchmark:bool -> Test.t list -> unit
  val make_command : Test.t list -> Core.Std.Command.t
end