sig
  module Id : Core.Std.Unique_id.Id
  module Basic_test :
    sig
      type t = {
        test_id : Id.t;
        name : string;
        key : int;
        arg : int option;
        group_key : int option;
        f : unit -> unit;
      }
      val test_id : Test.Basic_test.t -> Id.t
      val name : Test.Basic_test.t -> string
      val key : Test.Basic_test.t -> int
      val arg : Test.Basic_test.t -> int option
      val group_key : Test.Basic_test.t -> int option
      val f : Test.Basic_test.t -> unit -> unit
      val create :
        name:string ->
        ?group_key:int option ->
        ?arg:int option -> key:int -> (unit -> unit) -> Test.Basic_test.t
      val make_filename : Test.Basic_test.t -> string
    end
  type t
  val name : Test.t -> string
  val tests : Test.t -> Test.Basic_test.t list
  val expand : Test.t list -> Test.Basic_test.t list
  val create : name:string -> ?key:int -> (unit -> unit) -> Test.t
  val create_indexed :
    name:string ->
    args:int list ->
    ?key:int -> (int -> (unit -> unit) Core.Std.Staged.t) -> Test.t
  val create_group : name:string -> Test.t list -> Test.t
end