sig
  type 'a cell
  val make_cell :
    ?if_assumptions_fail:[ `Fatal | `Warning ] * float ->
    ?count:int ->
    ?long_factor:int ->
    ?negative:bool ->
    ?max_gen:int ->
    ?max_fail:int ->
    ?retries:int ->
    ?name:string ->
    ?print:'QCheck2.Print.t ->
    ?collect:('-> string) ->
    ?stats:'QCheck2.stat list ->
    'QCheck2.Gen.t -> ('-> bool) -> 'QCheck2.Test.cell
  val make_cell_from_QCheck1 :
    ?if_assumptions_fail:[ `Fatal | `Warning ] * float ->
    ?count:int ->
    ?long_factor:int ->
    ?negative:bool ->
    ?max_gen:int ->
    ?max_fail:int ->
    ?retries:int ->
    ?name:string ->
    gen:(Stdlib.Random.State.t -> 'a) ->
    ?shrink:('-> ('-> unit) -> unit) ->
    ?print:('-> string) ->
    ?collect:('-> string) ->
    stats:'QCheck2.stat list -> ('-> bool) -> 'QCheck2.Test.cell
  val get_law : 'QCheck2.Test.cell -> '-> bool
  val get_name : 'QCheck2.Test.cell -> string
  val get_gen : 'QCheck2.Test.cell -> 'QCheck2.Gen.t
  val get_print_opt : 'QCheck2.Test.cell -> 'QCheck2.Print.t option
  val get_collect_opt : 'QCheck2.Test.cell -> ('-> string) option
  val get_stats : 'QCheck2.Test.cell -> 'QCheck2.stat list
  val set_name : 'QCheck2.Test.cell -> string -> unit
  val get_count : 'QCheck2.Test.cell -> int
  val get_long_factor : 'QCheck2.Test.cell -> int
  val get_positive : 'QCheck2.Test.cell -> bool
  type t = Test : 'QCheck2.Test.cell -> QCheck2.Test.t
  val make :
    ?if_assumptions_fail:[ `Fatal | `Warning ] * float ->
    ?count:int ->
    ?long_factor:int ->
    ?max_gen:int ->
    ?max_fail:int ->
    ?retries:int ->
    ?name:string ->
    ?print:'QCheck2.Print.t ->
    ?collect:('-> string) ->
    ?stats:'QCheck2.stat list ->
    'QCheck2.Gen.t -> ('-> bool) -> QCheck2.Test.t
  val make_neg :
    ?if_assumptions_fail:[ `Fatal | `Warning ] * float ->
    ?count:int ->
    ?long_factor:int ->
    ?max_gen:int ->
    ?max_fail:int ->
    ?retries:int ->
    ?name:string ->
    ?print:'QCheck2.Print.t ->
    ?collect:('-> string) ->
    ?stats:'QCheck2.stat list ->
    'QCheck2.Gen.t -> ('-> bool) -> QCheck2.Test.t
  val test_get_count : QCheck2.Test.t -> int
  val test_get_long_factor : QCheck2.Test.t -> int
  val fail_report : string -> 'a
  val fail_reportf :
    ('a, Stdlib.Format.formatter, unit, 'b) Stdlib.format4 -> 'a
  exception Test_fail of string * string list
  exception Test_error of string * string * exn * string
  val print_instance : 'QCheck2.Test.cell -> '-> string
  val print_c_ex :
    'QCheck2.Test.cell -> 'QCheck2.TestResult.counter_ex -> string
  val print_fail :
    'QCheck2.Test.cell ->
    string -> 'QCheck2.TestResult.counter_ex list -> string
  val print_fail_other : string -> msg:string -> string
  val print_expected_failure :
    'QCheck2.Test.cell -> 'QCheck2.TestResult.counter_ex list -> string
  val print_error :
    ?st:string ->
    'QCheck2.Test.cell ->
    string -> 'QCheck2.TestResult.counter_ex * exn -> string
  val print_test_fail : string -> string list -> string
  val print_test_error : string -> string -> exn -> string -> string
  val print_collect : (string, int) Stdlib.Hashtbl.t -> string
  val print_stat : 'QCheck2.stat * (int, int) Stdlib.Hashtbl.t -> string
  val check_result : 'QCheck2.Test.cell -> 'QCheck2.TestResult.t -> unit
  type res = Success | Failure | FalseAssumption | Error of exn * string
  type 'a event =
      Generating
    | Collecting of 'a
    | Testing of 'a
    | Shrunk of int * 'a
    | Shrinking of int * int * 'a
  type 'a handler =
      string -> 'QCheck2.Test.cell -> 'QCheck2.Test.event -> unit
  type 'a step =
      string -> 'QCheck2.Test.cell -> '-> QCheck2.Test.res -> unit
  type 'a callback =
      string -> 'QCheck2.Test.cell -> 'QCheck2.TestResult.t -> unit
  val check_cell :
    ?long:bool ->
    ?call:'QCheck2.Test.callback ->
    ?step:'QCheck2.Test.step ->
    ?handler:'QCheck2.Test.handler ->
    ?rand:Stdlib.Random.State.t ->
    'QCheck2.Test.cell -> 'QCheck2.TestResult.t
  val check_cell_exn :
    ?long:bool ->
    ?call:'QCheck2.Test.callback ->
    ?step:'QCheck2.Test.step ->
    ?handler:'QCheck2.Test.handler ->
    ?rand:Stdlib.Random.State.t -> 'QCheck2.Test.cell -> unit
  val check_exn :
    ?long:bool -> ?rand:Stdlib.Random.State.t -> QCheck2.Test.t -> unit
end