sig
  val names : string list
  val minor_collections :
    ([< `Read | `Set_and_create ], Test_metrics.t, int)
    Fieldslib.Field.t_with_perm
  val major_collections :
    ([< `Read | `Set_and_create ], Test_metrics.t, int)
    Fieldslib.Field.t_with_perm
  val promoted :
    ([< `Read | `Set_and_create ], Test_metrics.t, int)
    Fieldslib.Field.t_with_perm
  val major_allocated :
    ([< `Read | `Set_and_create ], Test_metrics.t, int)
    Fieldslib.Field.t_with_perm
  val minor_allocated :
    ([< `Read | `Set_and_create ], Test_metrics.t, int)
    Fieldslib.Field.t_with_perm
  val compactions :
    ([< `Read | `Set_and_create ], Test_metrics.t, int)
    Fieldslib.Field.t_with_perm
  val nanos :
    ([< `Read | `Set_and_create ], Test_metrics.t, int)
    Fieldslib.Field.t_with_perm
  val cycles :
    ([< `Read | `Set_and_create ], Test_metrics.t, int)
    Fieldslib.Field.t_with_perm
  val runs :
    ([< `Read | `Set_and_create ], Test_metrics.t, int)
    Fieldslib.Field.t_with_perm
  val make_creator :
    runs:(([< `Read | `Set_and_create ], Test_metrics.t, int)
          Fieldslib.Field.t_with_perm -> '-> ('-> int) * 'c) ->
    cycles:(([< `Read | `Set_and_create ], Test_metrics.t, int)
            Fieldslib.Field.t_with_perm -> '-> ('-> int) * 'd) ->
    nanos:(([< `Read | `Set_and_create ], Test_metrics.t, int)
           Fieldslib.Field.t_with_perm -> '-> ('-> int) * 'e) ->
    compactions:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                 Fieldslib.Field.t_with_perm -> '-> ('-> int) * 'f) ->
    minor_allocated:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                     Fieldslib.Field.t_with_perm -> '-> ('-> int) * 'g) ->
    major_allocated:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                     Fieldslib.Field.t_with_perm -> '-> ('-> int) * 'h) ->
    promoted:(([< `Read | `Set_and_create ], Test_metrics.t, int)
              Fieldslib.Field.t_with_perm -> '-> ('-> int) * 'i) ->
    major_collections:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                       Fieldslib.Field.t_with_perm -> '-> ('-> int) * 'j) ->
    minor_collections:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                       Fieldslib.Field.t_with_perm -> '-> ('-> int) * 'k) ->
    '-> ('-> Test_metrics.t) * 'k
  val create :
    runs:int ->
    cycles:int ->
    nanos:int ->
    compactions:int ->
    minor_allocated:int ->
    major_allocated:int ->
    promoted:int ->
    major_collections:int -> minor_collections:int -> Test_metrics.t
  val map :
    runs:(([< `Read | `Set_and_create ], Test_metrics.t, int)
          Fieldslib.Field.t_with_perm -> int) ->
    cycles:(([< `Read | `Set_and_create ], Test_metrics.t, int)
            Fieldslib.Field.t_with_perm -> int) ->
    nanos:(([< `Read | `Set_and_create ], Test_metrics.t, int)
           Fieldslib.Field.t_with_perm -> int) ->
    compactions:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                 Fieldslib.Field.t_with_perm -> int) ->
    minor_allocated:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                     Fieldslib.Field.t_with_perm -> int) ->
    major_allocated:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                     Fieldslib.Field.t_with_perm -> int) ->
    promoted:(([< `Read | `Set_and_create ], Test_metrics.t, int)
              Fieldslib.Field.t_with_perm -> int) ->
    major_collections:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                       Fieldslib.Field.t_with_perm -> int) ->
    minor_collections:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                       Fieldslib.Field.t_with_perm -> int) ->
    Test_metrics.t
  val iter :
    runs:(([< `Read | `Set_and_create ], Test_metrics.t, int)
          Fieldslib.Field.t_with_perm -> 'a) ->
    cycles:(([< `Read | `Set_and_create ], Test_metrics.t, int)
            Fieldslib.Field.t_with_perm -> 'b) ->
    nanos:(([< `Read | `Set_and_create ], Test_metrics.t, int)
           Fieldslib.Field.t_with_perm -> 'c) ->
    compactions:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                 Fieldslib.Field.t_with_perm -> 'd) ->
    minor_allocated:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                     Fieldslib.Field.t_with_perm -> 'e) ->
    major_allocated:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                     Fieldslib.Field.t_with_perm -> 'f) ->
    promoted:(([< `Read | `Set_and_create ], Test_metrics.t, int)
              Fieldslib.Field.t_with_perm -> 'g) ->
    major_collections:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                       Fieldslib.Field.t_with_perm -> 'h) ->
    minor_collections:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                       Fieldslib.Field.t_with_perm -> 'i) ->
    'i
  val fold :
    init:'->
    runs:('->
          ([< `Read | `Set_and_create ], Test_metrics.t, int)
          Fieldslib.Field.t_with_perm -> 'b) ->
    cycles:('->
            ([< `Read | `Set_and_create ], Test_metrics.t, int)
            Fieldslib.Field.t_with_perm -> 'c) ->
    nanos:('->
           ([< `Read | `Set_and_create ], Test_metrics.t, int)
           Fieldslib.Field.t_with_perm -> 'd) ->
    compactions:('->
                 ([< `Read | `Set_and_create ], Test_metrics.t, int)
                 Fieldslib.Field.t_with_perm -> 'e) ->
    minor_allocated:('->
                     ([< `Read | `Set_and_create ], Test_metrics.t, int)
                     Fieldslib.Field.t_with_perm -> 'f) ->
    major_allocated:('->
                     ([< `Read | `Set_and_create ], Test_metrics.t, int)
                     Fieldslib.Field.t_with_perm -> 'g) ->
    promoted:('->
              ([< `Read | `Set_and_create ], Test_metrics.t, int)
              Fieldslib.Field.t_with_perm -> 'h) ->
    major_collections:('->
                       ([< `Read | `Set_and_create ], Test_metrics.t, int)
                       Fieldslib.Field.t_with_perm -> 'i) ->
    minor_collections:('->
                       ([< `Read | `Set_and_create ], Test_metrics.t, int)
                       Fieldslib.Field.t_with_perm -> 'j) ->
    'j
  val map_poly :
    ([< `Read | `Set_and_create ], Test_metrics.t, 'a) Fieldslib.Field.user ->
    'a list
  val for_all :
    runs:(([< `Read | `Set_and_create ], Test_metrics.t, int)
          Fieldslib.Field.t_with_perm -> bool) ->
    cycles:(([< `Read | `Set_and_create ], Test_metrics.t, int)
            Fieldslib.Field.t_with_perm -> bool) ->
    nanos:(([< `Read | `Set_and_create ], Test_metrics.t, int)
           Fieldslib.Field.t_with_perm -> bool) ->
    compactions:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                 Fieldslib.Field.t_with_perm -> bool) ->
    minor_allocated:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                     Fieldslib.Field.t_with_perm -> bool) ->
    major_allocated:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                     Fieldslib.Field.t_with_perm -> bool) ->
    promoted:(([< `Read | `Set_and_create ], Test_metrics.t, int)
              Fieldslib.Field.t_with_perm -> bool) ->
    major_collections:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                       Fieldslib.Field.t_with_perm -> bool) ->
    minor_collections:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                       Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val exists :
    runs:(([< `Read | `Set_and_create ], Test_metrics.t, int)
          Fieldslib.Field.t_with_perm -> bool) ->
    cycles:(([< `Read | `Set_and_create ], Test_metrics.t, int)
            Fieldslib.Field.t_with_perm -> bool) ->
    nanos:(([< `Read | `Set_and_create ], Test_metrics.t, int)
           Fieldslib.Field.t_with_perm -> bool) ->
    compactions:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                 Fieldslib.Field.t_with_perm -> bool) ->
    minor_allocated:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                     Fieldslib.Field.t_with_perm -> bool) ->
    major_allocated:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                     Fieldslib.Field.t_with_perm -> bool) ->
    promoted:(([< `Read | `Set_and_create ], Test_metrics.t, int)
              Fieldslib.Field.t_with_perm -> bool) ->
    major_collections:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                       Fieldslib.Field.t_with_perm -> bool) ->
    minor_collections:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                       Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val to_list :
    runs:(([< `Read | `Set_and_create ], Test_metrics.t, int)
          Fieldslib.Field.t_with_perm -> 'a) ->
    cycles:(([< `Read | `Set_and_create ], Test_metrics.t, int)
            Fieldslib.Field.t_with_perm -> 'a) ->
    nanos:(([< `Read | `Set_and_create ], Test_metrics.t, int)
           Fieldslib.Field.t_with_perm -> 'a) ->
    compactions:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                 Fieldslib.Field.t_with_perm -> 'a) ->
    minor_allocated:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                     Fieldslib.Field.t_with_perm -> 'a) ->
    major_allocated:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                     Fieldslib.Field.t_with_perm -> 'a) ->
    promoted:(([< `Read | `Set_and_create ], Test_metrics.t, int)
              Fieldslib.Field.t_with_perm -> 'a) ->
    major_collections:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                       Fieldslib.Field.t_with_perm -> 'a) ->
    minor_collections:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                       Fieldslib.Field.t_with_perm -> 'a) ->
    'a list
  module Direct :
    sig
      val iter :
        Test_metrics.t ->
        runs:(([< `Read | `Set_and_create ], Test_metrics.t, int)
              Fieldslib.Field.t_with_perm -> Test_metrics.t -> int -> 'a) ->
        cycles:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                Fieldslib.Field.t_with_perm -> Test_metrics.t -> int -> 'b) ->
        nanos:(([< `Read | `Set_and_create ], Test_metrics.t, int)
               Fieldslib.Field.t_with_perm -> Test_metrics.t -> int -> 'c) ->
        compactions:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                     Fieldslib.Field.t_with_perm ->
                     Test_metrics.t -> int -> 'd) ->
        minor_allocated:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                         Fieldslib.Field.t_with_perm ->
                         Test_metrics.t -> int -> 'e) ->
        major_allocated:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                         Fieldslib.Field.t_with_perm ->
                         Test_metrics.t -> int -> 'f) ->
        promoted:(([< `Read | `Set_and_create ], Test_metrics.t, int)
                  Fieldslib.Field.t_with_perm -> Test_metrics.t -> int -> 'g) ->
        major_collections:(([< `Read | `Set_and_create ], Test_metrics.t,
                            int)
                           Fieldslib.Field.t_with_perm ->
                           Test_metrics.t -> int -> 'h) ->
        minor_collections:(([< `Read | `Set_and_create ], Test_metrics.t,
                            int)
                           Fieldslib.Field.t_with_perm ->
                           Test_metrics.t -> int -> 'i) ->
        'i
      val fold :
        Test_metrics.t ->
        init:'->
        runs:('->
              ([< `Read | `Set_and_create ], Test_metrics.t, int)
              Fieldslib.Field.t_with_perm -> Test_metrics.t -> int -> 'b) ->
        cycles:('->
                ([< `Read | `Set_and_create ], Test_metrics.t, int)
                Fieldslib.Field.t_with_perm -> Test_metrics.t -> int -> 'c) ->
        nanos:('->
               ([< `Read | `Set_and_create ], Test_metrics.t, int)
               Fieldslib.Field.t_with_perm -> Test_metrics.t -> int -> 'd) ->
        compactions:('->
                     ([< `Read | `Set_and_create ], Test_metrics.t, int)
                     Fieldslib.Field.t_with_perm ->
                     Test_metrics.t -> int -> 'e) ->
        minor_allocated:('->
                         ([< `Read | `Set_and_create ], Test_metrics.t, int)
                         Fieldslib.Field.t_with_perm ->
                         Test_metrics.t -> int -> 'f) ->
        major_allocated:('->
                         ([< `Read | `Set_and_create ], Test_metrics.t, int)
                         Fieldslib.Field.t_with_perm ->
                         Test_metrics.t -> int -> 'g) ->
        promoted:('->
                  ([< `Read | `Set_and_create ], Test_metrics.t, int)
                  Fieldslib.Field.t_with_perm -> Test_metrics.t -> int -> 'h) ->
        major_collections:('->
                           ([< `Read | `Set_and_create ], Test_metrics.t,
                            int)
                           Fieldslib.Field.t_with_perm ->
                           Test_metrics.t -> int -> 'i) ->
        minor_collections:('->
                           ([< `Read | `Set_and_create ], Test_metrics.t,
                            int)
                           Fieldslib.Field.t_with_perm ->
                           Test_metrics.t -> int -> 'j) ->
        'j
    end
end