sig
  type 'a counter_ex = { instance : 'a; shrink_steps : int; }
  type 'a failed_state = 'QCheck.TestResult.counter_ex list
  type 'a state =
      Success
    | Failed of 'QCheck.TestResult.failed_state
    | Error of 'QCheck.TestResult.counter_ex * exn
  type 'a t = {
    mutable state : 'QCheck.TestResult.state;
    mutable count : int;
    mutable count_gen : int;
    collect_tbl : (string, int) Hashtbl.t lazy_t;
  }
end