New Upstream Release - ocaml-qcheck

Ready changes

Summary

Merged new upstream version: 0.21.1 (was: 0.20).

Diff

diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index f0eef32..dea1dee 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -2,10 +2,10 @@ name: build
 on:
   push:
     branches:
-      - master
+      - main
   pull_request:
     branches:
-      - master
+      - main
 jobs:
   run:
     name: Build
@@ -18,10 +18,11 @@ jobs:
         ocaml-compiler:
           - 4.08.x
           - 4.12.x
-          - ocaml-base-compiler.5.0.0~beta1
+          - 4.14.x
+          - ocaml-base-compiler.5.0.0
         exclude:
           - os: windows-latest
-            ocaml-compiler: ocaml-base-compiler.5.0.0~beta1
+            ocaml-compiler: ocaml-base-compiler.5.0.0
     runs-on: ${{ matrix.os }}
     steps:
     - uses: actions/checkout@v2
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 73d809a..2649579 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,22 @@
 # Changes
 
+## 0.21.1
+
+- Roll back the `Shrink.list_spine` fix, as it was utilizing polymorphic
+  equality that can raise an exception on function comparison.
+
+## 0.21
+
+- make `Test.check_result`, `Test.check_cell_exn`, and
+  `Test.check_exn` honor test polarity by raising
+  `Test_unexpected_success` when a negative test (expected to have a
+  counter example), unexpectedly succeeds.
+- fix issue with `ppx_deriving_qcheck` deriving a generator with unbound
+  `gen` for recursive types [#269](https://github.com/c-cube/qcheck/issues/269)
+  and a related issue when deriving a generator for a record type
+- fix #241 causing `QCheck.Shrink.int*` to emit duplicates, also affecting `QCheck.Shrink.{char,string}`
+- fix a cornercase where `Shrink.list_spine` would emit duplicates
+
 ## 0.20
 
 - add several new `bytes` combinators:
@@ -10,7 +27,7 @@
 - add new `string` combinators and aliases:
   - `{QCheck,QCheck2}.Gen.{string_small,string_small_of}`
   - `QCheck.{string_small,string_small_of,string_of,string_printable,string_printable_of_size,string_small_printable,string_numeral,string_numeral_of_size}`
-- `QCheck2.small_string` character generator argument is no more optional
+- (`QCheck2.small_string` character generator argument is no more optional - reverted again due to backwards incompatibility)
 - add an optional argument with conservative default to `Shrink.string`
 - fix shrinkers in `QCheck.{printable_string,printable_string_of_size,small_printable_string,numeral_string,numeral_string_of_size}` [#257](https://github.com/c-cube/qcheck/issues/257)
 - add `QCheck2.Gen.set_shrink` to modify the generator's shrinker
diff --git a/debian/changelog b/debian/changelog
index 94f5a02..6d75a65 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+ocaml-qcheck (0.21.1-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Thu, 13 Jul 2023 06:38:50 -0000
+
 ocaml-qcheck (0.20-2) unstable; urgency=medium
 
   [ Stéphane Glondu ]
diff --git a/example/output.txt.expected.32 b/example/QCheck_runner_test.expected.ocaml4.32
similarity index 100%
rename from example/output.txt.expected.32
rename to example/QCheck_runner_test.expected.ocaml4.32
diff --git a/example/output.txt.expected.64 b/example/QCheck_runner_test.expected.ocaml4.64
similarity index 100%
rename from example/output.txt.expected.64
rename to example/QCheck_runner_test.expected.ocaml4.64
diff --git a/example/QCheck_runner_test.expected.ocaml5.32 b/example/QCheck_runner_test.expected.ocaml5.32
new file mode 100644
index 0000000..4a96b67
--- /dev/null
+++ b/example/QCheck_runner_test.expected.ocaml5.32
@@ -0,0 +1,333 @@
+random seed: 1234
+
+--- Failure --------------------------------------------------------------------
+
+Test should_fail_sort_id failed (10 shrink steps):
+
+[1; 0]
+
+=== Error ======================================================================
+
+Test should_error_raise_exn errored on (30 shrink steps):
+
+0
+
+exception Dune__exe__QCheck_runner_test.Error
+
+
++++ Collect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Collect results for test collect_results:
+
+4: 24 cases
+3: 20 cases
+2: 18 cases
+1: 21 cases
+0: 17 cases
+
++++ Stats for with_stats ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats mod4:
+  num: 100, avg: 1.56, stddev: 1.18, median 2, min 0, max 3
+  0: #################################################                27
+  1: ####################################                             20
+  2: ##########################################                       23
+  3: #######################################################          30
+
+stats num:
+  num: 100, avg: 62.24, stddev: 33.15, median 62, min 2, max 120
+    2..  7: #########                                                         2
+    8.. 13: ################################                                  7
+   14.. 19: ###########################                                       6
+   20.. 25: #############                                                     3
+   26.. 31: ######################                                            5
+   32.. 37: ##################                                                4
+   38.. 43: #############                                                     3
+   44.. 49: ################################                                  7
+   50.. 55: ################################                                  7
+   56.. 61: ######################                                            5
+   62.. 67: ####################################                              8
+   68.. 73: #########                                                         2
+   74.. 79: ######################                                            5
+   80.. 85: #########                                                         2
+   86.. 91: #######################################################          12
+   92.. 97: ######################                                            5
+   98..103: ##################                                                4
+  104..109: ##################                                                4
+  110..115: #############                                                     3
+  116..121: ###########################                                       6
+
+--- Failure --------------------------------------------------------------------
+
+Test neg test unexpected success failed:
+
+Negative test neg test unexpected success succeeded but was expected to fail
+
+=== Error ======================================================================
+
+Test neg fail with error errored on (7 shrink steps):
+
+0
+
+exception Dune__exe__QCheck_runner_test.Error
+
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_pred_map_commute failed (47 shrink steps):
+
+([1], {_ -> 0}, {1 -> true; _ -> false})
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_fun2_pred_strings failed (1 shrink steps):
+
+{some other string -> false; _ -> true}
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left fold_right failed (21 shrink steps):
+
+(0, [1], {(0, 1) -> 1; _ -> 0})
+
++++ Messages ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Messages for test fold_left fold_right:
+
+l=[1], fold_left=0, fold_right=1
+
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left fold_right uncurried failed (41 shrink steps):
+
+({(0, 4) -> 1; _ -> 0}, 0, [4])
+
+--- Failure --------------------------------------------------------------------
+
+Test long_shrink failed (86 shrink steps):
+
+([0], [-1])
+
+--- Failure --------------------------------------------------------------------
+
+Test mod3_should_fail failed (26 shrink steps):
+
+2061
+
++++ Stats for stats_neg ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 5000, avg: 0.43, stddev: 28.63, median 0, min -99, max 99
+  -99..-90: #                                                                45
+  -89..-80: #                                                                57
+  -79..-70: #                                                                68
+  -69..-60: #                                                                58
+  -59..-50: #                                                                76
+  -49..-40: #                                                                67
+  -39..-30: #                                                                52
+  -29..-20: #                                                                54
+  -19..-10: #                                                                47
+   -9..  0: #######################################################        2205
+    1.. 10: ##########################################                     1697
+   11.. 20: #                                                                57
+   21.. 30: #                                                                70
+   31.. 40: #                                                                60
+   41.. 50: #                                                                66
+   51.. 60: #                                                                75
+   61.. 70: #                                                                68
+   71.. 80: #                                                                63
+   81.. 90: #                                                                66
+   91..100: #                                                                49
+
+!!! Warning !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+Warning for test WARN_unlikely_precond:
+
+WARNING: only 0.5% tests (of 2000) passed precondition for "WARN_unlikely_precond"
+
+NOTE: it is likely that the precondition is too strong, or that the generator is buggy.
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_unlikely_precond failed:
+
+ERROR: only 0.5% tests (of 2000) passed precondition for "FAIL_unlikely_precond"
+
+NOTE: it is likely that the precondition is too strong, or that the generator is buggy.
+
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_#99_1 failed:
+
+ERROR: uncaught exception in generator for test FAIL_#99_1 after 100 steps:
+Exception: QCheck.No_example_found("<example>")
+Backtrace: 
+
++++ Stats for stat_display_test_1 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: 0.86, stddev: 29.11, median 0, min -97, max 99
+  -97..-88: #                                                                12
+  -87..-78: #                                                                12
+  -77..-68: #                                                                13
+  -67..-58: #                                                                12
+  -57..-48: #                                                                 9
+  -47..-38: ##                                                               17
+  -37..-28: #                                                                13
+  -27..-18: #                                                                 8
+  -17.. -8: #########                                                        76
+   -7..  2: #######################################################         437
+    3.. 12: ##################################                              276
+   13.. 22: ##                                                               16
+   23.. 32: #                                                                11
+   33.. 42: ##                                                               16
+   43.. 52: #                                                                 9
+   53.. 62: #                                                                12
+   63.. 72: #                                                                14
+   73.. 82: #                                                                12
+   83.. 92: #                                                                13
+   93..102: #                                                                12
+
++++ Stats for stat_display_test_2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: 15.86, stddev: 24.57, median 6, min 0, max 99
+    0..  4: ######################################################          387
+    5..  9: #######################################################         390
+   10.. 14: #                                                                11
+   15.. 19: #                                                                 8
+   20.. 24: #                                                                11
+   25.. 29: ##                                                               15
+   30.. 34: #                                                                 9
+   35.. 39: #                                                                11
+   40.. 44: #                                                                11
+   45.. 49: ##                                                               19
+   50.. 54: #                                                                10
+   55.. 59: ##                                                               19
+   60.. 64: #                                                                 9
+   65.. 69: #                                                                 9
+   70.. 74: ##                                                               19
+   75.. 79: #                                                                13
+   80.. 84: #                                                                11
+   85.. 89: ##                                                               16
+   90.. 94: #                                                                 9
+   95.. 99: #                                                                13
+
++++ Stats for stat_display_test_3 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: 193479.13, stddev: 136696.70, median 189823, min -43164, max 434961
+  -43164..-19258: ###################################                              42
+  -19257..  4649: ##############################################                   56
+    4650.. 28556: #############################################                    55
+   28557.. 52463: ###############################################                  57
+   52464.. 76370: #########################################                        50
+   76371..100277: #############################                                    35
+  100278..124184: ###############################################                  57
+  124185..148091: ####################################                             44
+  148092..171998: ##############################################                   56
+  171999..195905: #######################################################          66
+  195906..219812: ###########################################                      52
+  219813..243719: ########################################                         49
+  243720..267626: ################################                                 39
+  267627..291533: #####################################                            45
+  291534..315440: #####################################                            45
+  315441..339347: #################################################                59
+  339348..363254: ##################################################               60
+  363255..387161: #################################                                40
+  387162..411068: ##########################################                       51
+  411069..434975: ###################################                              42
+
++++ Stats for stat_display_test_4 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: -591.06, stddev: 23026.79, median -911, min -39911, max 39959
+  -39911..-35918: #######################################                          45
+  -35917..-31924: ####################################################             59
+  -31923..-27930: ###########################################                      49
+  -27929..-23936: ##########################################                       48
+  -23935..-19942: #######################################################          62
+  -19941..-15948: #############################################                    51
+  -15947..-11954: #########################################                        47
+  -11953.. -7960: #################################################                56
+   -7959.. -3966: ###################################                              40
+   -3965..    28: ###################################################              58
+      29..  4022: ###########################################                      49
+    4023..  8016: ###############################################                  53
+    8017.. 12010: ############################################                     50
+   12011.. 16004: ###################################                              40
+   16005.. 19998: #######################################                          44
+   19999.. 23992: #######################################################          62
+   23993.. 27986: #####################################                            42
+   27987.. 31980: #########################################                        47
+   31981.. 35974: ##########################################                       48
+   35975.. 39968: ############################################                     50
+
++++ Stats for stat_display_test_5 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: -0.12, stddev: 2.52, median 0, min -4, max 4
+  -4: ##########################################                      116
+  -3: ######################################                          103
+  -2: ##############################################                  125
+  -1: ##########################################                      115
+   0: #######################################                         106
+   1: #######################################################         149
+   2: #################################                                92
+   3: #################################                                92
+   4: #####################################                           102
+
++++ Stats for stat_display_test_6 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: 6.42, stddev: 6.43, median 6, min -4, max 17
+  -4..-3: ###########################################                      89
+  -2..-1: #################################################               101
+   0.. 1: ##############################################                   95
+   2.. 3: ###########################################                      89
+   4.. 5: ##############################################                   95
+   6.. 7: #####################################                            78
+   8.. 9: #######################################                          81
+  10..11: ########################################                         84
+  12..13: #######################################################         113
+  14..15: ########################################                         84
+  16..17: ############################################                     91
+  18..19:                                                                   0
+  20..21:                                                                   0
+  22..23:                                                                   0
+  24..25:                                                                   0
+  26..27:                                                                   0
+  28..29:                                                                   0
+  30..31:                                                                   0
+  32..33:                                                                   0
+  34..35:                                                                   0
+
++++ Stats for stat_display_test_7 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 100000, avg: -2481754.31, stddev: 618398387.27, median -5669677, min -1073719962, max 1073717275
+  -1073719962.. -966348101: #####################################################          4978
+   -966348100.. -858976239: #####################################################          5008
+   -858976238.. -751604377: ####################################################           4907
+   -751604376.. -644232515: ######################################################         5037
+   -644232514.. -536860653: ######################################################         5069
+   -536860652.. -429488791: ######################################################         5052
+   -429488790.. -322116929: ######################################################         5035
+   -322116928.. -214745067: #######################################################        5128
+   -214745066.. -107373205: #####################################################          5017
+   -107373204..      -1343: #####################################################          5021
+        -1342..  107370519: #####################################################          5010
+    107370520..  214742381: #####################################################          4964
+    214742382..  322114243: #####################################################          4957
+    322114244..  429486105: #####################################################          4994
+    429486106..  536857967: #####################################################          5025
+    536857968..  644229829: ######################################################         5047
+    644229830..  751601691: #####################################################          4988
+    751601692..  858973553: ####################################################           4924
+    858973554..  966345415: ####################################################           4852
+    966345416.. 1073717277: #####################################################          4987
+================================================================================
+1 warning(s)
+failure (10 tests failed, 2 tests errored, ran 28 tests)
diff --git a/example/output.txt.expected.ocaml5 b/example/QCheck_runner_test.expected.ocaml5.64
similarity index 100%
rename from example/output.txt.expected.ocaml5
rename to example/QCheck_runner_test.expected.ocaml5.64
diff --git a/example/alcotest/output.txt.expected.32 b/example/alcotest/QCheck_alcotest_test.expected.ocaml4.32
similarity index 97%
rename from example/alcotest/output.txt.expected.32
rename to example/alcotest/QCheck_alcotest_test.expected.ocaml4.32
index 634312a..d6f2301 100644
--- a/example/alcotest/output.txt.expected.32
+++ b/example/alcotest/QCheck_alcotest_test.expected.ocaml4.32
@@ -29,8 +29,7 @@ on `0 (after 31 shrink steps)`
 │ [FAIL]        suite              4   neg test unexpected success.            │
 └──────────────────────────────────────────────────────────────────────────────┘
 negative test 'neg test unexpected success' succeeded unexpectedly
-ASSERT negative test 'neg test unexpected success' succeeded unexpectedly
-FAIL negative test 'neg test unexpected success' succeeded unexpectedly
+[exception] negative test `neg test unexpected success` succeeded unexpectedly
  ──────────────────────────────────────────────────────────────────────────────
 ┌──────────────────────────────────────────────────────────────────────────────┐
 │ [FAIL]        suite              5   neg fail with error.                    │
diff --git a/example/alcotest/output.txt.expected.64 b/example/alcotest/QCheck_alcotest_test.expected.ocaml4.64
similarity index 97%
rename from example/alcotest/output.txt.expected.64
rename to example/alcotest/QCheck_alcotest_test.expected.ocaml4.64
index ea706c7..5ab8c71 100644
--- a/example/alcotest/output.txt.expected.64
+++ b/example/alcotest/QCheck_alcotest_test.expected.ocaml4.64
@@ -29,8 +29,7 @@ on `0 (after 63 shrink steps)`
 │ [FAIL]        suite              4   neg test unexpected success.            │
 └──────────────────────────────────────────────────────────────────────────────┘
 negative test 'neg test unexpected success' succeeded unexpectedly
-ASSERT negative test 'neg test unexpected success' succeeded unexpectedly
-FAIL negative test 'neg test unexpected success' succeeded unexpectedly
+[exception] negative test `neg test unexpected success` succeeded unexpectedly
  ──────────────────────────────────────────────────────────────────────────────
 ┌──────────────────────────────────────────────────────────────────────────────┐
 │ [FAIL]        suite              5   neg fail with error.                    │
diff --git a/example/alcotest/QCheck_alcotest_test.expected.ocaml5.32 b/example/alcotest/QCheck_alcotest_test.expected.ocaml5.32
new file mode 100644
index 0000000..a50cc8e
--- /dev/null
+++ b/example/alcotest/QCheck_alcotest_test.expected.ocaml5.32
@@ -0,0 +1,82 @@
+qcheck random seed: 1234
+Testing `my test'.
+  [OK]          suite              0   list_rev_is_involutive.
+  [FAIL]        suite              1   fail_sort_id.
+  [FAIL]        suite              2   error_raise_exn.
+  [OK]          suite              3   neg test pass (failing as expected).
+  [FAIL]        suite              4   neg test unexpected success.
+  [FAIL]        suite              5   neg fail with error.
+  [FAIL]        suite              6   fail_check_err_message.
+  [OK]          suite              7   tree_rev_is_involutive.
+  [FAIL]        shrinking          0   debug_shrink.
+┌──────────────────────────────────────────────────────────────────────────────┐
+│ [FAIL]        suite              1   fail_sort_id.                           │
+└──────────────────────────────────────────────────────────────────────────────┘
+test `fail_sort_id` failed on ≥ 1 cases: [1; 0] (after 16 shrink steps)
+[exception] test `fail_sort_id` failed on ≥ 1 cases: [1; 0] (after 16 shrink steps)
+ ──────────────────────────────────────────────────────────────────────────────
+┌──────────────────────────────────────────────────────────────────────────────┐
+│ [FAIL]        suite              2   error_raise_exn.                        │
+└──────────────────────────────────────────────────────────────────────────────┘
+test `error_raise_exn`
+raised exception `Error`
+on `0 (after 30 shrink steps)`
+[exception] test `error_raise_exn`
+raised exception `Error`
+on `0 (after 30 shrink steps)`
+ ──────────────────────────────────────────────────────────────────────────────
+┌──────────────────────────────────────────────────────────────────────────────┐
+│ [FAIL]        suite              4   neg test unexpected success.            │
+└──────────────────────────────────────────────────────────────────────────────┘
+negative test 'neg test unexpected success' succeeded unexpectedly
+[exception] negative test `neg test unexpected success` succeeded unexpectedly
+ ──────────────────────────────────────────────────────────────────────────────
+┌──────────────────────────────────────────────────────────────────────────────┐
+│ [FAIL]        suite              5   neg fail with error.                    │
+└──────────────────────────────────────────────────────────────────────────────┘
+test `neg fail with error`
+raised exception `Error`
+on `0 (after 7 shrink steps)`
+[exception] test `neg fail with error`
+raised exception `Error`
+on `0 (after 7 shrink steps)`
+ ──────────────────────────────────────────────────────────────────────────────
+┌──────────────────────────────────────────────────────────────────────────────┐
+│ [FAIL]        suite              6   fail_check_err_message.                 │
+└──────────────────────────────────────────────────────────────────────────────┘
+test `fail_check_err_message` failed on ≥ 1 cases:
+0 (after 7 shrink steps)
+this
+will
+always
+fail
+[exception] test `fail_check_err_message` failed on ≥ 1 cases:
+0 (after 7 shrink steps)
+this
+will
+always
+fail
+ ──────────────────────────────────────────────────────────────────────────────
+┌──────────────────────────────────────────────────────────────────────────────┐
+│ [FAIL]        shrinking          0   debug_shrink.                           │
+└──────────────────────────────────────────────────────────────────────────────┘
+~~~ Shrink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Test debug_shrink successfully shrunk counter example (step 0) to:
+(2, 3)
+~~~ Shrink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Test debug_shrink successfully shrunk counter example (step 1) to:
+(1, 3)
+~~~ Shrink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Test debug_shrink successfully shrunk counter example (step 2) to:
+(0, 3)
+~~~ Shrink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Test debug_shrink successfully shrunk counter example (step 3) to:
+(0, 2)
+~~~ Shrink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Test debug_shrink successfully shrunk counter example (step 4) to:
+(0, 1)
+law debug_shrink: 1 relevant cases (1 total)
+test `debug_shrink` failed on ≥ 1 cases: (0, 1) (after 4 shrink steps)
+[exception] test `debug_shrink` failed on ≥ 1 cases: (0, 1) (after 4 shrink steps)
+ ──────────────────────────────────────────────────────────────────────────────
+6 failures! 9 tests run.
diff --git a/example/alcotest/output.txt.expected.ocaml5 b/example/alcotest/QCheck_alcotest_test.expected.ocaml5.64
similarity index 98%
rename from example/alcotest/output.txt.expected.ocaml5
rename to example/alcotest/QCheck_alcotest_test.expected.ocaml5.64
index 23401ac..aaf5db1 100644
--- a/example/alcotest/output.txt.expected.ocaml5
+++ b/example/alcotest/QCheck_alcotest_test.expected.ocaml5.64
@@ -29,8 +29,7 @@ on `0 (after 62 shrink steps)`
 │ [FAIL]        suite              4   neg test unexpected success.            │
 └──────────────────────────────────────────────────────────────────────────────┘
 negative test 'neg test unexpected success' succeeded unexpectedly
-ASSERT negative test 'neg test unexpected success' succeeded unexpectedly
-FAIL negative test 'neg test unexpected success' succeeded unexpectedly
+[exception] negative test `neg test unexpected success` succeeded unexpectedly
  ──────────────────────────────────────────────────────────────────────────────
 ┌──────────────────────────────────────────────────────────────────────────────┐
 │ [FAIL]        suite              5   neg fail with error.                    │
diff --git a/example/alcotest/dune b/example/alcotest/dune
index a9114f6..449789f 100644
--- a/example/alcotest/dune
+++ b/example/alcotest/dune
@@ -1,36 +1,36 @@
-(* -*- tuareg -*- *)
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} true) (>= %{ocaml_version} 5)))
+ (action (copy QCheck_alcotest_test.expected.ocaml5.64 QCheck_alcotest_test.expected)))
 
-let suffix =
-  try
-    let major_version = List.hd (String.split_on_char '.' Sys.ocaml_version) in
-    if int_of_string major_version < 5 then string_of_int Sys.word_size else "ocaml5"
-  with _ -> failwith ("Unknown OCaml version format: " ^ Sys.ocaml_version)
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} false) (>= %{ocaml_version} 5)))
+ (action (copy QCheck_alcotest_test.expected.ocaml5.32 QCheck_alcotest_test.expected)))
 
-let dune = Printf.sprintf {|
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} true) (< %{ocaml_version} 5)))
+ (action (copy QCheck_alcotest_test.expected.ocaml4.64 QCheck_alcotest_test.expected)))
+
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} false) (< %{ocaml_version} 5)))
+ (action (copy QCheck_alcotest_test.expected.ocaml4.32 QCheck_alcotest_test.expected)))
 
 (executable
-  (name QCheck_alcotest_test)
-  (libraries qcheck-core qcheck-alcotest alcotest))
+ (name QCheck_alcotest_test)
+ (libraries qcheck-core qcheck-alcotest alcotest))
 
 (rule
-  (targets output.txt)
-  (deps ./QCheck_alcotest_test.exe)
-  (enabled_if (= %%{os_type} "Unix"))
-  (action
-    (with-accepted-exit-codes
-      1
-      (setenv
-        QCHECK_SEED 1234
-        (with-stdout-to
-          %%{targets}
-          (run ./run_alcotest.sh --color=never))))))
+ (targets QCheck_alcotest_test.output)
+ (deps ./QCheck_alcotest_test.exe)
+ (enabled_if (= %{os_type} "Unix"))
+ (action
+  (with-accepted-exit-codes 1
+   (setenv CI false ; Don't run tests as if Alcotest was run in CI
+    (setenv QCHECK_SEED 1234
+     (with-stdout-to %{targets}
+      (run ./run_alcotest.sh --color=never)))))))
 
 (rule
-  (alias runtest)
-  (package qcheck-alcotest)
-  (enabled_if (= %%{os_type} "Unix"))
-  (action (diff output.txt.expected.%s output.txt)))
-
-|} suffix
-
-let () = Jbuild_plugin.V1.send dune
+ (alias runtest)
+ (package qcheck-alcotest)
+ (enabled_if (= %{os_type} "Unix"))
+ (action (diff QCheck_alcotest_test.expected QCheck_alcotest_test.output)))
diff --git a/example/dune b/example/dune
index cb411f4..2c05f77 100644
--- a/example/dune
+++ b/example/dune
@@ -1,34 +1,24 @@
-(* -*- tuareg -*- *)
-
-let suffix =
-  try
-    let major_version = List.hd (String.split_on_char '.' Sys.ocaml_version) in
-    if int_of_string major_version < 5 then string_of_int Sys.word_size else "ocaml5"
-  with _ -> failwith ("Unknown OCaml version format: " ^ Sys.ocaml_version)
-
-let dune = Printf.sprintf {|
-
-(executables
-  (names QCheck_runner_test)
-  (libraries qcheck))
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} true) (>= %{ocaml_version} 5)))
+ (action (copy QCheck_runner_test.expected.ocaml5.64 QCheck_runner_test.expected)))
 
 (rule
-  (targets output.txt)
-  (deps ./QCheck_runner_test.exe)
-  (enabled_if (= %%{os_type} "Unix"))
-  (action
-    (with-accepted-exit-codes
-      1
-      (with-stdout-to
-        %%{targets}
-        (run ./QCheck_runner_test.exe --no-colors -s 1234)))))
+ (enabled_if (and (= %{arch_sixtyfour} false) (>= %{ocaml_version} 5)))
+ (action (copy QCheck_runner_test.expected.ocaml5.32 QCheck_runner_test.expected)))
 
 (rule
-  (alias runtest)
-  (enabled_if (= %%{os_type} "Unix"))
-  (package qcheck)
-  (action (diff output.txt.expected.%s output.txt)))
+ (enabled_if (and (= %{arch_sixtyfour} true) (< %{ocaml_version} 5)))
+ (action (copy QCheck_runner_test.expected.ocaml4.64 QCheck_runner_test.expected)))
 
-|} suffix
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} false) (< %{ocaml_version} 5)))
+ (action (copy QCheck_runner_test.expected.ocaml4.32 QCheck_runner_test.expected)))
 
-let () = Jbuild_plugin.V1.send dune
+;; implicitly compared against QCheck_runner_test.expected
+(test
+ (enabled_if (= %{os_type} "Unix"))
+ (name QCheck_runner_test)
+ (modules QCheck_runner_test)
+ (package qcheck)
+ (libraries qcheck)
+ (action (with-accepted-exit-codes 1 (run ./%{test} --no-colors -s 1234))))
diff --git a/example/ounit/output.txt.expected.32 b/example/ounit/QCheck_ounit_test.expected.ocaml4.32
similarity index 92%
rename from example/ounit/output.txt.expected.32
rename to example/ounit/QCheck_ounit_test.expected.ocaml4.32
index 0ead3a2..815be7c 100644
--- a/example/ounit/output.txt.expected.32
+++ b/example/ounit/QCheck_ounit_test.expected.ocaml4.32
@@ -25,7 +25,6 @@ Error: tests:6:fail_check_err_message.
 
 Error: tests:6:fail_check_err_message (in the log).
 
-Error: tests:6:fail_check_err_message (in the code).
 
 
 test `fail_check_err_message` failed on ≥ 1 cases:
@@ -43,7 +42,6 @@ Error: tests:4:neg test unexpected success.
 
 Error: tests:4:neg test unexpected success (in the log).
 
-Error: tests:4:neg test unexpected success (in the code).
 
 
 negative test 'neg test unexpected success' succeeded unexpectedly
@@ -54,7 +52,6 @@ Error: tests:1:fail_sort_id.
 
 Error: tests:1:fail_sort_id (in the log).
 
-Error: tests:1:fail_sort_id (in the code).
 
 
 test `fail_sort_id` failed on ≥ 1 cases: [1; 0] (after 11 shrink steps)
diff --git a/example/ounit/output.txt.expected.64 b/example/ounit/QCheck_ounit_test.expected.ocaml4.64
similarity index 92%
rename from example/ounit/output.txt.expected.64
rename to example/ounit/QCheck_ounit_test.expected.ocaml4.64
index 874cd52..a038e26 100644
--- a/example/ounit/output.txt.expected.64
+++ b/example/ounit/QCheck_ounit_test.expected.ocaml4.64
@@ -25,7 +25,6 @@ Error: tests:6:fail_check_err_message.
 
 Error: tests:6:fail_check_err_message (in the log).
 
-Error: tests:6:fail_check_err_message (in the code).
 
 
 test `fail_check_err_message` failed on ≥ 1 cases:
@@ -43,7 +42,6 @@ Error: tests:4:neg test unexpected success.
 
 Error: tests:4:neg test unexpected success (in the log).
 
-Error: tests:4:neg test unexpected success (in the code).
 
 
 negative test 'neg test unexpected success' succeeded unexpectedly
@@ -54,7 +52,6 @@ Error: tests:1:fail_sort_id.
 
 Error: tests:1:fail_sort_id (in the log).
 
-Error: tests:1:fail_sort_id (in the code).
 
 
 test `fail_sort_id` failed on ≥ 1 cases: [1; 0] (after 11 shrink steps)
diff --git a/example/ounit/QCheck_ounit_test.expected.ocaml5.32 b/example/ounit/QCheck_ounit_test.expected.ocaml5.32
new file mode 100644
index 0000000..3c8260a
--- /dev/null
+++ b/example/ounit/QCheck_ounit_test.expected.ocaml5.32
@@ -0,0 +1,62 @@
+.FE.FEF.
+==============================================================================
+Error: tests:5:neg fail with error.
+
+Error: tests:5:neg fail with error (in the log).
+
+
+test `neg fail with error`
+raised exception `Dune__exe__QCheck_ounit_test.Error`
+on `0 (after 7 shrink steps)`
+
+------------------------------------------------------------------------------
+==============================================================================
+Error: tests:2:error_raise_exn.
+
+Error: tests:2:error_raise_exn (in the log).
+
+
+test `error_raise_exn` raised exception `Dune__exe__QCheck_ounit_test.Error`
+on `0 (after 30 shrink steps)`
+
+------------------------------------------------------------------------------
+==============================================================================
+Error: tests:6:fail_check_err_message.
+
+Error: tests:6:fail_check_err_message (in the log).
+
+
+
+test `fail_check_err_message` failed on ≥ 1 cases:
+0 (after 7 shrink steps)
+this
+will
+always
+fail
+
+
+
+------------------------------------------------------------------------------
+==============================================================================
+Error: tests:4:neg test unexpected success.
+
+Error: tests:4:neg test unexpected success (in the log).
+
+
+
+negative test 'neg test unexpected success' succeeded unexpectedly
+
+------------------------------------------------------------------------------
+==============================================================================
+Error: tests:1:fail_sort_id.
+
+Error: tests:1:fail_sort_id (in the log).
+
+
+
+test `fail_sort_id` failed on ≥ 1 cases: [1; 0] (after 16 shrink steps)
+                                           
+
+------------------------------------------------------------------------------
+Ran: 8 tests in: <nondet> seconds.
+FAILED: Cases: 8 Tried: 8 Errors: 2 Failures: 3 Skip:  0 Todo: 0 Timeouts: 0.
diff --git a/example/ounit/output.txt.expected.ocaml5 b/example/ounit/QCheck_ounit_test.expected.ocaml5.64
similarity index 92%
rename from example/ounit/output.txt.expected.ocaml5
rename to example/ounit/QCheck_ounit_test.expected.ocaml5.64
index 2294b90..a95398e 100644
--- a/example/ounit/output.txt.expected.ocaml5
+++ b/example/ounit/QCheck_ounit_test.expected.ocaml5.64
@@ -25,7 +25,6 @@ Error: tests:6:fail_check_err_message.
 
 Error: tests:6:fail_check_err_message (in the log).
 
-Error: tests:6:fail_check_err_message (in the code).
 
 
 test `fail_check_err_message` failed on ≥ 1 cases:
@@ -43,7 +42,6 @@ Error: tests:4:neg test unexpected success.
 
 Error: tests:4:neg test unexpected success (in the log).
 
-Error: tests:4:neg test unexpected success (in the code).
 
 
 negative test 'neg test unexpected success' succeeded unexpectedly
@@ -54,7 +52,6 @@ Error: tests:1:fail_sort_id.
 
 Error: tests:1:fail_sort_id (in the log).
 
-Error: tests:1:fail_sort_id (in the code).
 
 
 test `fail_sort_id` failed on ≥ 1 cases: [1; 0] (after 16 shrink steps)
diff --git a/example/ounit/dune b/example/ounit/dune
index fae1b11..6fdbdef 100644
--- a/example/ounit/dune
+++ b/example/ounit/dune
@@ -1,34 +1,34 @@
-(* -*- tuareg -*- *)
-
-let suffix =
-  try
-    let major_version = List.hd (String.split_on_char '.' Sys.ocaml_version) in
-    if int_of_string major_version < 5 then string_of_int Sys.word_size else "ocaml5"
-  with _ -> failwith ("Unknown OCaml version format: " ^ Sys.ocaml_version)
+(executables
+ (names QCheck_ounit_test QCheck_test)
+ (libraries ounit2 qcheck-ounit))
 
-let dune = Printf.sprintf {|
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} true) (>= %{ocaml_version} 5)))
+ (action (copy QCheck_ounit_test.expected.ocaml5.64 QCheck_ounit_test.expected)))
 
-(executables
-  (names QCheck_ounit_test QCheck_test)
-  (libraries ounit2 qcheck-ounit))
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} false) (>= %{ocaml_version} 5)))
+ (action (copy QCheck_ounit_test.expected.ocaml5.32 QCheck_ounit_test.expected)))
 
 (rule
-  (targets output.txt)
-  (deps ./QCheck_ounit_test.exe)
-  (enabled_if (= %%{os_type} "Unix"))
-  (action
-    (with-accepted-exit-codes
-      1
-      (with-stdout-to
-        %%{targets}
-        (run ./run_ounit.sh -runner=sequential -seed 1234)))))
+ (enabled_if (and (= %{arch_sixtyfour} true) (< %{ocaml_version} 5)))
+ (action (copy QCheck_ounit_test.expected.ocaml4.64 QCheck_ounit_test.expected)))
 
 (rule
-  (alias runtest)
-  (package qcheck-ounit)
-  (enabled_if (= %%{os_type} "Unix"))
-  (action (diff output.txt.expected.%s output.txt)))
+ (enabled_if (and (= %{arch_sixtyfour} false) (< %{ocaml_version} 5)))
+ (action (copy QCheck_ounit_test.expected.ocaml4.32 QCheck_ounit_test.expected)))
 
-|} suffix
+(rule
+ (targets QCheck_ounit_test.output)
+ (deps ./QCheck_ounit_test.exe)
+ (enabled_if (= %{os_type} "Unix"))
+ (action
+  (with-accepted-exit-codes 1
+   (with-stdout-to %{targets}
+    (run ./run_ounit.sh -runner=sequential -seed 1234)))))
 
-let () = Jbuild_plugin.V1.send dune
+(rule
+ (alias runtest)
+ (package qcheck-ounit)
+ (enabled_if (= %{os_type} "Unix"))
+ (action (diff QCheck_ounit_test.expected QCheck_ounit_test.output)))
diff --git a/example/ounit/run_ounit.sh b/example/ounit/run_ounit.sh
index 40edc9a..1e99ff9 100755
--- a/example/ounit/run_ounit.sh
+++ b/example/ounit/run_ounit.sh
@@ -10,5 +10,6 @@ echo "$OUT" \
   | grep -v 'File .*, line .*' \
   | grep -v 'Called from ' \
   | grep -v 'Raised at ' \
+  | grep -v '(in the code)' \
   | sed 's/in: .*seconds/in: <nondet> seconds/'
 exit $CODE
diff --git a/ppx_deriving_qcheck.opam b/ppx_deriving_qcheck.opam
index 699597e..c03d4e7 100644
--- a/ppx_deriving_qcheck.opam
+++ b/ppx_deriving_qcheck.opam
@@ -1,6 +1,6 @@
 opam-version: "2.0"
 name: "ppx_deriving_qcheck"
-version: "0.3.0"
+version: "0.4.0"
 license: "BSD-2-Clause"
 synopsis: "PPX Deriver for QCheck"
 
diff --git a/qcheck-alcotest.opam b/qcheck-alcotest.opam
index ad1a06b..b388e26 100644
--- a/qcheck-alcotest.opam
+++ b/qcheck-alcotest.opam
@@ -5,7 +5,7 @@ homepage: "https://github.com/c-cube/qcheck/"
 license: "BSD-2-Clause"
 synopsis: "Alcotest backend for qcheck"
 doc: ["http://c-cube.github.io/qcheck/"]
-version: "0.20"
+version: "0.21.1"
 tags: [
   "test"
   "quickcheck"
@@ -18,7 +18,7 @@ build: [
   ["dune" "runtest" "-p" name "-j" jobs] {with-test}
 ]
 depends: [
-  "dune" { >= "2.2" }
+  "dune" { >= "2.8.0" }
   "base-bytes"
   "base-unix"
   "qcheck-core" { = version }
diff --git a/qcheck-core.opam b/qcheck-core.opam
index 0bb4212..1b103ca 100644
--- a/qcheck-core.opam
+++ b/qcheck-core.opam
@@ -5,7 +5,7 @@ homepage: "https://github.com/c-cube/qcheck/"
 license: "BSD-2-Clause"
 synopsis: "Core qcheck library"
 doc: ["http://c-cube.github.io/qcheck/"]
-version: "0.20"
+version: "0.21.1"
 tags: [
   "test"
   "property"
@@ -17,7 +17,7 @@ build: [
   ["dune" "runtest" "-p" name "-j" jobs] {with-test}
 ]
 depends: [
-  "dune" { >= "2.2" }
+  "dune" { >= "2.8.0" }
   "base-bytes"
   "base-unix"
   "alcotest" {with-test}
diff --git a/qcheck-ounit.opam b/qcheck-ounit.opam
index 4b9242d..b8131bf 100644
--- a/qcheck-ounit.opam
+++ b/qcheck-ounit.opam
@@ -5,7 +5,7 @@ license: "BSD-2-Clause"
 homepage: "https://github.com/c-cube/qcheck/"
 doc: ["http://c-cube.github.io/qcheck/"]
 synopsis: "OUnit backend for qcheck"
-version: "0.20"
+version: "0.21.1"
 tags: [
   "qcheck"
   "quickcheck"
@@ -17,7 +17,7 @@ build: [
   ["dune" "runtest" "-p" name "-j" jobs] {with-test}
 ]
 depends: [
-  "dune" { >= "2.2" }
+  "dune" { >= "2.8.0" }
   "base-bytes"
   "base-unix"
   "qcheck-core" { = version }
diff --git a/qcheck.opam b/qcheck.opam
index 3c72f47..0367563 100644
--- a/qcheck.opam
+++ b/qcheck.opam
@@ -5,7 +5,7 @@ synopsis: "Compatibility package for qcheck"
 homepage: "https://github.com/c-cube/qcheck/"
 license: "BSD-2-Clause"
 doc: ["http://c-cube.github.io/qcheck/"]
-version: "0.20"
+version: "0.21.1"
 tags: [
   "test"
   "property"
@@ -17,7 +17,7 @@ build: [
   ["dune" "runtest" "-p" name "-j" jobs] {with-test}
 ]
 depends: [
-  "dune" { >= "2.2" }
+  "dune" { >= "2.8.0" }
   "base-bytes"
   "base-unix"
   "qcheck-core" { = version }
diff --git a/src/alcotest/QCheck_alcotest.ml b/src/alcotest/QCheck_alcotest.ml
index 0baffa4..d2f2615 100644
--- a/src/alcotest/QCheck_alcotest.ml
+++ b/src/alcotest/QCheck_alcotest.ml
@@ -54,14 +54,6 @@ let to_alcotest
   let name = T.get_name cell in
   let run () =
     let call = Raw.callback ~colors ~verbose ~print_res:true ~print in
-    if T.get_positive cell
-    then
-      T.check_cell_exn ~long ~call ~handler ~rand cell
-    else
-      try
-        T.check_cell_exn ~long ~call ~handler ~rand cell;
-        Alcotest.failf "negative test '%s' succeeded unexpectedly" name
-      with
-        T.Test_fail (_name,_l) -> ()
+    T.check_cell_exn ~long ~call ~handler ~rand cell
   in
   ((name, `Slow, run) : unit Alcotest.test_case)
diff --git a/src/core/QCheck.ml b/src/core/QCheck.ml
index aca834e..2809e6e 100644
--- a/src/core/QCheck.ml
+++ b/src/core/QCheck.ml
@@ -677,8 +677,8 @@ module Shrink = struct
     let y = ref x in
     (* try some divisors *)
     while !y < -2 || !y >2 do y := !y / 2; yield (x - !y); done; (* fast path *)
-    if x>0 then yield (x-1);
-    if x<0 then yield (x+1);
+    if x = 1 || (x>0 && !y <> 1) then yield (x-1);
+    if x = -1 || (x<0 && !y <> -1) then yield (x+1);
     ()
 
   let int32 x yield =
@@ -686,8 +686,8 @@ module Shrink = struct
     let y = ref x in
     (* try some divisors *)
     while !y < -2l || !y > 2l do y := div !y 2l; yield (sub x !y); done; (* fast path *)
-    if x>0l then yield (pred x);
-    if x<0l then yield (succ x);
+    if x = 1l || (x>0l && !y <> 1l) then yield (pred x);
+    if x = -1l || (x<0l && !y <> -1l) then yield (succ x);
     ()
 
   let int64 x yield =
@@ -695,8 +695,8 @@ module Shrink = struct
     let y = ref x in
     (* try some divisors *)
     while !y < -2L || !y > 2L do y := div !y 2L; yield (sub x !y); done; (* fast path *)
-    if x>0L then yield (pred x);
-    if x<0L then yield (succ x);
+    if x = 1L || (x>0L && !y <> 1L) then yield (pred x);
+    if x = -1L || (x<0L && !y <> -1L) then yield (succ x);
     ()
 
   (* aggressive shrinker for integers,
diff --git a/src/core/QCheck.mli b/src/core/QCheck.mli
index 7e8d4b4..92d31a3 100644
--- a/src/core/QCheck.mli
+++ b/src/core/QCheck.mli
@@ -1137,13 +1137,16 @@ module Test : sig
     ?long:bool -> ?call:'a callback ->
     ?step:'a step -> ?handler:'a handler ->
     ?rand:Random.State.t -> 'a cell -> 'a TestResult.t
+  (** See {!QCheck2.Test.check_cell}. *)
 
   val check_cell_exn :
     ?long:bool -> ?call:'a callback ->
     ?step:'a step -> ?handler:'a handler ->
     ?rand:Random.State.t -> 'a cell -> unit
+  (** See {!QCheck2.Test.check_cell_exn}. *)
 
   val check_exn : ?long:bool -> ?rand:Random.State.t -> t -> unit
+  (** See {!QCheck2.Test.check_exn}. *)
 end
 
 (** {2 Sub-tests} *)
diff --git a/src/core/QCheck2.ml b/src/core/QCheck2.ml
index 58cb171..a0cc4e7 100644
--- a/src/core/QCheck2.ml
+++ b/src/core/QCheck2.ml
@@ -1406,6 +1406,7 @@ module Test_exceptions = struct
 
   exception Test_fail of string * string list
   exception Test_error of string * string * exn * string
+  exception Test_unexpected_success of string
 end
 
 module Test = struct
@@ -1882,6 +1883,8 @@ module Test = struct
 
   let print_test_fail name l = asprintf "@[%a@]@?" (pp_print_test_fail name) l
 
+  let print_unexpected_success name = Format.sprintf "@[negative test `%s`@ succeeded unexpectedly@]" name
+
   let print_test_error name i e stack =
     Format.sprintf "@[test `%s`@ raised exception `%s`@ on `%s`@,%s@]"
       name (Printexc.to_string e) i stack
@@ -1982,6 +1985,7 @@ module Test = struct
       (function
         | Test_fail (name,l) -> Some (print_test_fail name l)
         | Test_error (name,i,e,st) -> Some (print_test_error name i e st)
+        | Test_unexpected_success name -> Some (print_unexpected_success name)
         | User_fail s -> Some ("qcheck: user fail:\n" ^ s)
         | _ -> None)
 
@@ -1998,14 +2002,17 @@ module Test = struct
   let print_error ?(st="") arb name (i,e) =
     print_test_error name (print_c_ex arb i) e st
 
-  let check_result cell res = match res.R.state with
-    | R.Success -> ()
-    | R.Error {instance; exn; backtrace} ->
+  let check_result cell res = match res.R.state, cell.positive with
+    | R.Success, true -> ()
+    | R.Success, false ->
+      raise (Test_unexpected_success cell.name)
+    | R.Error {instance; exn; backtrace}, _ ->
       raise (Test_error (cell.name, print_c_ex cell instance, exn, backtrace))
-    | R.Failed {instances=l} ->
+    | R.Failed {instances=l}, true ->
       let l = List.map (print_c_ex cell) l in
       raise (Test_fail (cell.name, l))
-    | R.Failed_other {msg} ->
+    | R.Failed _, false -> ()
+    | R.Failed_other {msg}, _ ->
       raise (Test_fail (cell.name, [msg]))
 
   let check_cell_exn ?long ?call ?step ?handler ?rand cell =
diff --git a/src/core/QCheck2.mli b/src/core/QCheck2.mli
index e5392b4..75f68ce 100644
--- a/src/core/QCheck2.mli
+++ b/src/core/QCheck2.mli
@@ -1649,6 +1649,11 @@ module Test_exceptions : sig
       [Test_error (name, i, e, st)]
       means [name] failed on [i] with exception [e], and [st] is the
       stacktrace (if enabled) or an empty string. *)
+
+  exception Test_unexpected_success of string
+  (** Exception raised when a negative test failed.
+      [Test_unexpected_success name] means test [name] failed to find an
+      expected counter example. *)
 end
 
 (** A test is a pair of a generator and a property that all generated values must satisfy. *)
@@ -1801,9 +1806,11 @@ module Test : sig
       @since 0.6 *)
 
   val check_result : 'a cell -> 'a TestResult.t -> unit
-  (** [check_result cell res] checks that [res] is [Ok _], and returns unit.
+  (** For a positive test [check_result cell res] checks that [res] is [Ok _], and returns unit.
+      For a negative test [check_result cell res] checks that [res] is [Failed _], and returns unit.
       Otherwise, it raises some exception.
-      @raise Test_fail  if [res = Failed _]
+      @raise Test_fail  if the test is positive and [res = Failed _]
+      @raise Test_unexpected_success  if the test is negative and [res = Ok _]
       @raise Test_error if [res = Error _] *)
 
   type res =
@@ -1840,6 +1847,10 @@ module Test : sig
       predicate [law] is called on them and if it returns [false] or raises an
       exception then we have a counter-example for the [law].
 
+      Note: [check_cell] ignores a test's polarity, acting as
+      described above regardless of whether the tested cell is a
+      positive or negative test.
+
       @param long if [true] then multiply the number of instances to generate
         by the cell's long_factor.
       @param call function called on each test case, with the result.
@@ -1852,13 +1863,19 @@ module Test : sig
     ?step:'a step -> ?handler:'a handler ->
     ?rand:Random.State.t -> 'a cell -> unit
   (** Same as {!check_cell} but calls  {!check_result} on the result.
-      @raise Test_fail  if [res = Failed _]
+      [check_cell test] honors test polarity and thus expects positive tests to succeed
+      without finding a counterexample and expects negative tests to fail by finding one.
+      @raise Test_fail  if the test is positive and [res = Failed _]
+      @raise Test_unexpected_success  if the test is negative and [res = Success _]
       @raise Test_error if [res = Error _] *)
 
   val check_exn : ?long:bool -> ?rand:Random.State.t -> t -> unit
   (** Checks the property against some test cases, and calls {!check_result},
       which might raise an exception in case of failure.
-      @raise Test_fail  if [res = Failed _]
+      [check_exn test] honors test polarity and thus expects positive tests to succeed
+      without finding a counterexample and expects negative tests to fail by finding one.
+      @raise Test_fail  if the test is positive and [res = Failed _]
+      @raise Test_unexpected_success  if the test is negative and [res = Success _]
       @raise Test_error if [res = Error _] *)
 end
 
diff --git a/src/ounit/QCheck_ounit.ml b/src/ounit/QCheck_ounit.ml
index b6b2e66..eec329d 100644
--- a/src/ounit/QCheck_ounit.ml
+++ b/src/ounit/QCheck_ounit.ml
@@ -72,16 +72,8 @@ let to_ounit2_test ?(rand =default_rand()) (QCheck2.Test.Test cell) =
         fail = (fun fmt -> Printf.ksprintf assert_failure fmt);
         err = (fun fmt -> logf ctxt `Error fmt);
       } in
-      if QCheck2.Test.get_positive cell
-      then
-        T.check_cell_exn cell
-          ~long ~rand ~call:(Raw.callback ~colors:false ~verbose ~print_res:true ~print)
-      else
-        try
-          T.check_cell_exn cell
-            ~long ~rand ~call:(Raw.callback ~colors:false ~verbose ~print_res:true ~print);
-          ()
-        with T.Test_fail (_,_) -> ())
+      T.check_cell_exn cell
+        ~long ~rand ~call:(Raw.callback ~colors:false ~verbose ~print_res:true ~print))
 
 let to_ounit2_test_list ?rand lst =
   List.rev (List.rev_map (to_ounit2_test ?rand) lst)
@@ -93,18 +85,12 @@ let to_ounit_test_cell ?(verbose=verbose()) ?(long=long_tests())
   let module T = QCheck2.Test in
   let name = T.get_name cell in
   let run () =
-
-    let res =
-      try
-        T.check_cell_exn cell ~long ~rand
-          ~call:(Raw.callback ~colors:false ~verbose ~print_res:verbose ~print:Raw.print_std);
-        true
-      with T.Test_fail _ ->
-        false
-    in
-    if QCheck2.Test.get_positive cell
-    then res
-    else not res
+    try
+      T.check_cell_exn cell ~long ~rand
+        ~call:(Raw.callback ~colors:false ~verbose ~print_res:verbose ~print:Raw.print_std);
+      true
+    with T.Test_fail _ ->
+      false
   in
   name >:: (fun () -> assert_bool name (run ()))
 
diff --git a/src/ppx_deriving_qcheck/ppx_deriving_qcheck.ml b/src/ppx_deriving_qcheck/ppx_deriving_qcheck.ml
index 8c26eef..e501e54 100644
--- a/src/ppx_deriving_qcheck/ppx_deriving_qcheck.ml
+++ b/src/ppx_deriving_qcheck/ppx_deriving_qcheck.ml
@@ -111,8 +111,9 @@ let rec longident_to_str = function
       Printf.sprintf "%s %s" (longident_to_str lg1) (longident_to_str lg2)
 
 let rec is_rec_typ env = function
-  | { ptyp_desc = Ptyp_constr ({ txt = x; _ }, _); _ } ->
-     List.exists (fun typ_name -> longident_to_str x = typ_name) env.Env.curr_types
+  | { ptyp_desc = Ptyp_constr ({ txt = x; _ }, args); _ } ->
+     List.exists (fun typ_name -> longident_to_str x = typ_name) env.Env.curr_types ||
+     List.exists (is_rec_typ env) args
   | { ptyp_desc = Ptyp_tuple xs; _ } -> List.exists (is_rec_typ env) xs
   | { ptyp_desc = Ptyp_variant (rws, _, _); _ } ->
      List.exists (is_rec_row_field env) rws
@@ -128,7 +129,7 @@ and is_rec_row_field env rw =
 let is_rec_constr_decl env cd =
   match cd.pcd_args with
   | Pcstr_tuple cts -> List.exists (is_rec_typ env) cts
-  | _ -> false
+  | Pcstr_record ldcls -> List.exists (fun ldcl -> is_rec_typ env ldcl.pld_type) ldcls
 
 (** [is_rec_type_decl env typ] looks for elements of [env.curr_types]
     recursively in [typ]. *)
diff --git a/test/core/QCheck2_expect_test.expected.32 b/test/core/QCheck2_expect_test.expected.ocaml4.32
similarity index 99%
rename from test/core/QCheck2_expect_test.expected.32
rename to test/core/QCheck2_expect_test.expected.ocaml4.32
index 597728f..126bcd4 100644
--- a/test/core/QCheck2_expect_test.expected.32
+++ b/test/core/QCheck2_expect_test.expected.ocaml4.32
@@ -270,7 +270,7 @@ Test char never produces 'abcdef' failed (1 shrink steps):
 
 --- Failure --------------------------------------------------------------------
 
-Test printable never produces '!"#$%&'' failed (1 shrink steps):
+Test printable never produces '!"#$%&' failed (1 shrink steps):
 
 '!'
 
diff --git a/test/core/QCheck2_expect_test.expected.64 b/test/core/QCheck2_expect_test.expected.ocaml4.64
similarity index 99%
rename from test/core/QCheck2_expect_test.expected.64
rename to test/core/QCheck2_expect_test.expected.ocaml4.64
index 9854be8..b1d73a6 100644
--- a/test/core/QCheck2_expect_test.expected.64
+++ b/test/core/QCheck2_expect_test.expected.ocaml4.64
@@ -334,7 +334,7 @@ Test char never produces 'abcdef' failed (1 shrink steps):
 
 --- Failure --------------------------------------------------------------------
 
-Test printable never produces '!"#$%&'' failed (1 shrink steps):
+Test printable never produces '!"#$%&' failed (1 shrink steps):
 
 '!'
 
diff --git a/test/core/QCheck2_expect_test.expected.ocaml5.32 b/test/core/QCheck2_expect_test.expected.ocaml5.32
new file mode 100644
index 0000000..4526d5f
--- /dev/null
+++ b/test/core/QCheck2_expect_test.expected.ocaml5.32
@@ -0,0 +1,1428 @@
+random seed: 1234
+45 4 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 (8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+-466273346
+409792091
+0
+204896045
+0
+102448022
+0
+51224011
+0
+25612005
+0
+12806002
+0
+6403001
+0
+3201500
+0
+1600750
+0
+800375
+0
+400187
+0
+200093
+0
+100046
+0
+50023
+0
+25011
+0
+12505
+0
+6252
+0
+3126
+0
+1563
+0
+781
+0
+390
+0
+195
+0
+97
+0
+48
+0
+24
+0
+12
+0
+6
+0
+3
+0
+1
+0
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99; 8; 6; 0; 7; 9; 7; 1; 55; 30; 25; 3; 4; 7; 1; 6; 80; 8; 0; 4; 21; 3; 5; 9; 27; 10; 60; 47; 54; 6; 5; 8; 1; 5; 9; 65; 9; 5; 7; 7; 6; 48; 9; 5; 6; 4; 9; 7; 1; 2; 71; 6; 9; 2; 7; 8; 14; 59; 71; 30; 7; 3; 5; 4; 6; 7; 3; 6; 9; 8; 2; 38; 6; 6; 7; 1; 5; 2; 43; 5; 2; 9; 3; 0; 3; 2; 7; 71; 26; 3; 9; 11; 5; 1; 5; 2; 53; 46; 4; 6; 7; 67; 1; 0; 34; 0; 48; 5; 5; 0; 7; 49; 92; 8; 3; 0; 67; 1; 5; 2; 9; 5; 9; 3; 1; 4; 8; 0; 3; 6; 46; 58; 1; 54; 77; 0; 96; 1; 6; 2; 8; 22; 3; 9; 2; 6; 25; 49; 9; 6; 3; 8; 5; 9; 54; 1; 7; 5; 6; 5; 1; 7; 8; 23; 4; 6; 4; 2; 5; 8; 4; 7; 4]
+[]
+[7; 79; 86; 1; 70; 98; 1; 4; 7; 9; 5; 8; 0; 1; 2; 0; 6; 0; 37; 6; 8; 26; 6; 8; 8; 98; 6; 8; 1; 6; 2; 4; 4; 7; 26; 1; 77; 2; 9; 9; 81; 8; 9; 4; 0; 86; 9; 3; 7; 0; 54; 2; 4; 1; 6; 4; 55; 5; 0; 9; 2; 1; 3; 8; 7; 1; 1; 3; 92; 1; 3; 4; 5; 2; 8; 51; 2; 94; 6; 82; 0; 11; 86; 1; 36; 31; 3; 2; 3; 8; 2; 8; 14; 26; 89; 1; 6; 0; 9; 5; 6; 7; 1; 6; 1; 6; 4; 7; 8; 8; 4; 1; 6; 3; 1; 5; 0; 6; 0; 5; 0; 4; 3; 49; 5; 8; 37; 8; 38; 0; 1; 8; 59; 5; 0; 7; 37; 87; 9; 3; 1; 5; 59; 8; 7; 6; 26; 4; 8; 8; 8; 9; 3; 2; 6; 64; 6; 7; 2; 8; 5; 2; 94; 26; 98; 3; 29; 2; 1; 72; 2; 49]
+[]
+[8; 13; 1; 18; 0; 69; 15; 2; 5; 78; 7; 32; 8; 36; 7; 3; 0; 9; 1; 1; 1; 29; 3; 8; 7; 2; 1; 8; 7; 8; 22; 5; 49; 5; 0; 1; 8; 5; 6; 7; 5; 1; 9; 73; 55; 2; 4; 7; 3; 4; 2; 27; 0; 6; 9; 1; 7; 8; 5; 12; 5; 8; 9; 1; 95; 1; 0; 1; 4; 8; 6; 7; 0; 8; 2; 3; 7; 3; 9; 0; 86; 96; 72; 3; 4; 25]
+[]
+[4; 3; 6; 5; 0; 0; 9; 7; 0; 6; 5; 3; 0; 24; 5; 6; 86; 9; 9; 0; 7; 2; 6; 6; 3; 45; 6; 1; 17; 1; 2; 2; 3; 0; 4; 1; 8; 2; 6; 9; 5; 0; 2]
+[]
+[9; 7; 62; 0; 73; 0; 8; 94; 0; 6; 50; 9; 83; 0; 5; 40; 6; 1; 6; 6; 6]
+[]
+[6; 5; 2; 54; 33; 9; 1; 1; 1; 61]
+[]
+[5; 7; 0; 65; 0]
+[]
+[2; 7]
+[]
+[6]
+[]
+[0]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99; 8; 6; 0; 7; 9; 7; 1; 55; 30; 25; 3; 4; 7; 1; 6; 80; 8; 0; 4; 21; 3; 5; 9; 27; 10; 60; 47; 54; 6; 5; 8; 1; 5; 9; 65; 9; 5; 7; 7; 6; 48; 9; 5; 6; 4; 9; 7; 1; 2; 71; 6; 9; 2; 7; 8; 14; 59; 71; 30; 7; 3; 5; 4; 6; 7; 3; 6; 9; 8; 2; 38; 6; 6; 7; 1; 5; 2; 43; 5; 2; 9; 3; 0; 3; 2; 7; 71; 26; 3; 9; 11; 5; 1; 5; 2; 53; 46; 4; 6; 7; 67; 1; 0; 34; 0; 48; 5; 5; 0; 7; 49; 92; 8; 3; 0; 67; 1; 5; 2; 9; 5; 9; 3; 1; 4; 8; 0; 3; 6; 46; 58; 1; 54; 77; 0; 96; 1; 6; 2; 8; 22; 3; 9; 2; 6; 25; 49; 9; 6; 3; 8; 5; 9; 54; 1; 7; 5; 6; 5; 1; 7; 8; 23; 4; 6; 4; 2; 5; 8; 4; 7; 4]
+[]
+[7; 79; 86; 1; 70; 98; 1; 4; 7; 9; 5; 8; 0; 1; 2; 0; 6; 0; 37; 6; 8; 26; 6; 8; 8; 98; 6; 8; 1; 6; 2; 4; 4; 7; 26; 1; 77; 2; 9; 9; 81; 8; 9; 4; 0; 86; 9; 3; 7; 0; 54; 2; 4; 1; 6; 4; 55; 5; 0; 9; 2; 1; 3; 8; 7; 1; 1; 3; 92; 1; 3; 4; 5; 2; 8; 51; 2; 94; 6; 82; 0; 11; 86; 1; 36; 31; 3; 2; 3; 8; 2; 8; 14; 26; 89; 1; 6; 0; 9; 5; 6; 7; 1; 6; 1; 6; 4; 7; 8; 8; 4; 1; 6; 3; 1; 5; 0; 6; 0; 5; 0; 4; 3; 49; 5; 8; 37; 8; 38; 0; 1; 8; 59; 5; 0; 7; 37; 87; 9; 3; 1; 5; 59; 8; 7; 6; 26; 4; 8; 8; 8; 9; 3; 2; 6; 64; 6; 7; 2; 8; 5; 2; 94; 26; 98; 3; 29; 2; 1; 72; 2; 49]
+[]
+[8; 13; 1; 18; 0; 69; 15; 2; 5; 78; 7; 32; 8; 36; 7; 3; 0; 9; 1; 1; 1; 29; 3; 8; 7; 2; 1; 8; 7; 8; 22; 5; 49; 5; 0; 1; 8; 5; 6; 7; 5; 1; 9; 73; 55; 2; 4; 7; 3; 4; 2; 27; 0; 6; 9; 1; 7; 8; 5; 12; 5; 8; 9; 1; 95; 1; 0; 1; 4; 8; 6; 7; 0; 8; 2; 3; 7; 3; 9; 0; 86; 96; 72; 3; 4; 25]
+[]
+[4; 3; 6; 5; 0; 0; 9; 7; 0; 6; 5; 3; 0; 24; 5; 6; 86; 9; 9; 0; 7; 2; 6; 6; 3; 45; 6; 1; 17; 1; 2; 2; 3; 0; 4; 1; 8; 2; 6; 9; 5; 0; 2]
+[]
+[9; 7; 62; 0; 73; 0; 8; 94; 0; 6; 50; 9; 83; 0; 5; 40; 6; 1; 6; 6; 6]
+[]
+[6; 5; 2; 54; 33; 9; 1; 1; 1; 61]
+[]
+[5; 7; 0; 65; 0]
+[]
+[2; 7]
+[4; 6; 6]
+[]
+[7]
+[6; 41]
+[0; 6; 6]
+[0; 0; 6]
+[0; 0; 0]
+
+--- Failure --------------------------------------------------------------------
+
+Test should_fail_sort_id failed (11 shrink steps):
+
+[1; 0]
+
+=== Error ======================================================================
+
+Test should_error_raise_exn errored on (2 shrink steps):
+
+0
+
+exception QCheck2_tests.Overall.Error
+
+
++++ Collect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Collect results for test collect_results:
+
+4: 24 cases
+3: 20 cases
+2: 18 cases
+1: 21 cases
+0: 17 cases
+
++++ Stats for with_stats ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats mod4:
+  num: 100, avg: 1.56, stddev: 1.18, median 2, min 0, max 3
+  0: #################################################                27
+  1: ####################################                             20
+  2: ##########################################                       23
+  3: #######################################################          30
+
+stats num:
+  num: 100, avg: 62.24, stddev: 33.15, median 62, min 2, max 120
+    2..  7: #########                                                         2
+    8.. 13: ################################                                  7
+   14.. 19: ###########################                                       6
+   20.. 25: #############                                                     3
+   26.. 31: ######################                                            5
+   32.. 37: ##################                                                4
+   38.. 43: #############                                                     3
+   44.. 49: ################################                                  7
+   50.. 55: ################################                                  7
+   56.. 61: ######################                                            5
+   62.. 67: ####################################                              8
+   68.. 73: #########                                                         2
+   74.. 79: ######################                                            5
+   80.. 85: #########                                                         2
+   86.. 91: #######################################################          12
+   92.. 97: ######################                                            5
+   98..103: ##################                                                4
+  104..109: ##################                                                4
+  110..115: #############                                                     3
+  116..121: ###########################                                       6
+
+--- Failure --------------------------------------------------------------------
+
+Test with shrinking retries failed (0 shrink steps):
+
+4
+
+!!! Warning !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+Warning for test WARN_unlikely_precond:
+
+WARNING: only 0.5% tests (of 2000) passed precondition for "WARN_unlikely_precond"
+
+NOTE: it is likely that the precondition is too strong, or that the generator is buggy.
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_unlikely_precond failed:
+
+ERROR: only 0.5% tests (of 2000) passed precondition for "FAIL_unlikely_precond"
+
+NOTE: it is likely that the precondition is too strong, or that the generator is buggy.
+
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_bad_gen failed:
+
+ERROR: uncaught exception in generator for test FAIL_bad_gen after 100 steps:
+Exception: Invalid_argument("Gen.int_bound")
+Backtrace: 
+
+--- Failure --------------------------------------------------------------------
+
+Test int double failed:
+
+Negative test int double succeeded but was expected to fail
+
+=== Error ======================================================================
+
+Test pos fail with error errored on (1 shrink steps):
+
+0
+
+exception QCheck2_tests.Overall.Error
+
+
+=== Error ======================================================================
+
+Test neg fail with error errored on (1 shrink steps):
+
+0
+
+exception QCheck2_tests.Overall.Error
+
+
+--- Failure --------------------------------------------------------------------
+
+Test char never produces '\255' failed (0 shrink steps):
+
+'\255'
+
+--- Failure --------------------------------------------------------------------
+
+Test big bound issue59 failed (0 shrink steps):
+
+1073741823
+
+--- Failure --------------------------------------------------------------------
+
+Test long_shrink failed (3038 shrink steps):
+
+([0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0], [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 1])
+
+--- Failure --------------------------------------------------------------------
+
+Test ints arent 0 mod 3 failed (1 shrink steps):
+
+0
+
+--- Failure --------------------------------------------------------------------
+
+Test ints are 0 failed (29 shrink steps):
+
+1
+
+--- Failure --------------------------------------------------------------------
+
+Test ints < 209609 failed (0 shrink steps):
+
+1073741823
+
+--- Failure --------------------------------------------------------------------
+
+Test nat < 5001 failed (6 shrink steps):
+
+5001
+
+--- Failure --------------------------------------------------------------------
+
+Test char never produces 'abcdef' failed (1 shrink steps):
+
+'a'
+
+--- Failure --------------------------------------------------------------------
+
+Test printable never produces '!"#$%&' failed (1 shrink steps):
+
+'!'
+
+--- Failure --------------------------------------------------------------------
+
+Test printable never produces less than '5 failed (0 shrink steps):
+
+'0'
+
+--- Failure --------------------------------------------------------------------
+
+Test bytes are empty failed (9 shrink steps):
+
+a
+
+--- Failure --------------------------------------------------------------------
+
+Test bytes never has a \000 char failed (55 shrink steps):
+
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+--- Failure --------------------------------------------------------------------
+
+Test bytes never has a \255 char failed (75 shrink steps):
+
+aaaaaaa�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+--- Failure --------------------------------------------------------------------
+
+Test bytes have unique chars failed (14 shrink steps):
+
+aaaaaaa
+
+--- Failure --------------------------------------------------------------------
+
+Test strings are empty failed (9 shrink steps):
+
+"a"
+
+--- Failure --------------------------------------------------------------------
+
+Test string never has a \000 char failed (55 shrink steps):
+
+"aaaaaaaaaaaaaaa\000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+
+--- Failure --------------------------------------------------------------------
+
+Test string never has a \255 char failed (75 shrink steps):
+
+"aaaaaaa\255aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+
+--- Failure --------------------------------------------------------------------
+
+Test strings have unique chars failed (14 shrink steps):
+
+"aaaaaaa"
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs have different components failed (0 shrink steps):
+
+(6, 6)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs have same components failed (29 shrink steps):
+
+(0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs have a zero component failed (57 shrink steps):
+
+(1, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs are (0,0) failed (29 shrink steps):
+
+(0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs are ordered failed (42 shrink steps):
+
+(1, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs are ordered reversely failed (30 shrink steps):
+
+(0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs sum to less than 128 failed (27 shrink steps):
+
+(0, 128)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs lists rev concat failed (38 shrink steps):
+
+([0], [1])
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs lists no overlap failed (22 shrink steps):
+
+([0], [0; 0; 0; 0; 0; 0; 0; 0])
+
+--- Failure --------------------------------------------------------------------
+
+Test triples have pair-wise different components failed (3 shrink steps):
+
+(0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test triples have same components failed (32 shrink steps):
+
+(0, 1, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test triples are ordered failed (4 shrink steps):
+
+(0, 0, -1)
+
+--- Failure --------------------------------------------------------------------
+
+Test triples are ordered reversely failed (32 shrink steps):
+
+(0, 0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test quadruples have pair-wise different components failed (3 shrink steps):
+
+(0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test quadruples have same components failed (59 shrink steps):
+
+(0, 1, 0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test quadruples are ordered failed (5 shrink steps):
+
+(0, 0, 0, -1)
+
+--- Failure --------------------------------------------------------------------
+
+Test quadruples are ordered reversely failed (33 shrink steps):
+
+(0, 0, 0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b) in nat: a < b failed (3 shrink steps):
+
+(0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c) in nat: a < b < c failed (5 shrink steps):
+
+(0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d) in nat: a < b < c < d failed (4 shrink steps):
+
+(0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e) in nat: a < b < c < d < e failed (5 shrink steps):
+
+(0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e, f) in nat: a < b < c < d < e < f failed (6 shrink steps):
+
+(0, 0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e, f, g) in nat: a < b < c < d < e < f < g failed (7 shrink steps):
+
+(0, 0, 0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e, f, g, h) in nat: a < b < c < d < e < f < g < h failed (8 shrink steps):
+
+(0, 0, 0, 0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e, f, g, h, i) in nat: a < b < c < d < e < f < g < h < i failed (9 shrink steps):
+
+(0, 0, 0, 0, 0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test bind ordered pairs failed (1 shrink steps):
+
+(0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test bind list_size constant failed (12 shrink steps):
+
+(4, [0; 0; 0; 0])
+
+--- Failure --------------------------------------------------------------------
+
+Test lists are empty failed (9 shrink steps):
+
+[0]
+
+--- Failure --------------------------------------------------------------------
+
+Test lists shorter than 10 failed (15 shrink steps):
+
+[0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
+
+--- Failure --------------------------------------------------------------------
+
+Test lists shorter than 432 failed (413 shrink steps):
+
+[...] list length: 432
+
+--- Failure --------------------------------------------------------------------
+
+Test lists shorter than 4332 failed (4002 shrink steps):
+
+[...] list length: 4332
+
+--- Failure --------------------------------------------------------------------
+
+Test lists have unique elems failed (10 shrink steps):
+
+[0; 0; 0]
+
+--- Failure --------------------------------------------------------------------
+
+Test tree contains only 42 failed (2 shrink steps):
+
+Leaf 0
+
+--- Failure --------------------------------------------------------------------
+
+Test sum list = 0 failed (0 shrink steps):
+
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99; 8; 6; 0; 7; 9; 7; 1; 55; 30; 25; 3; 4; 7; 1; 6; 80; 8; 0; 4; 21; 3; 5; 9; 27; 10; 60; 47; 54; 6; 5; 8; 1; 5; 9; 65; 9; 5; 7; 7; 6; 48; 9; 5; 6; 4; 9; 7; 1; 2; 71; 6; 9; 2; 7; 8; 14; 59; 71; 30; 7; 3; 5; 4; 6; 7; 3; 6; 9; 8; 2; 38; 6; 6; 7; 1; 5; 2; 43; 5; 2; 9; 3; 0; 3; 2; 7; 71; 26; 3; 9; 11; 5; 1; 5; 2; 53; 46; 4; 6; 7; 67; 1; 0; 34; 0; 48; 5; 5; 0; 7; 49; 92; 8; 3; 0; 67; 1; 5; 2; 9; 5; 9; 3; 1; 4; 8; 0; 3; 6; 46; 58; 1; 54; 77; 0; 96; 1; 6; 2; 8; 22; 3; 9; 2; 6; 25; 49; 9; 6; 3; 8; 5; 9; 54; 1; 7; 5; 6; 5; 1; 7; 8; 23; 4; 6; 4; 2; 5; 8; 4; 7; 4]
+
+--- Failure --------------------------------------------------------------------
+
+Test fail_pred_map_commute failed (69 shrink steps):
+
+([0; 0; 0], {0 -> 1; 1 -> 0; 3 -> 0; 5 -> 0; 6 -> 0; 54 -> 0; 7 -> 0; 8 -> 0; 9 -> 0; _ -> 0}, {1 -> true; 54 -> false; _ -> false})
+
+--- Failure --------------------------------------------------------------------
+
+Test fail_pred_strings failed (2 shrink steps):
+
+{"some random string" -> true; _ -> false}
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left fold_right failed (32 shrink steps):
+
+(0, [1], {(5, 5) -> 0; (3, 8) -> 0; (1, 0) -> 1; (3, 0) -> 0; (8, 0) -> 0; (6, 4) -> 0; (9, 2) -> 0; (5, 0) -> 0; (0, 2) -> 0; (2, 0) -> 0; (2, 1) -> 0; (8, 6) -> 0; (0, 3) -> 0; (0, 23) -> 0; (1, 8) -> 0; (0, 4) -> 0; (4, 0) -> 0; (7, 2) -> 0; (2, 5) -> 0; (0, 8) -> 0; (23, 6) -> 0; (0, 0) -> 0; (4, 80) -> 0; _ -> 0})
+
++++ Messages ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Messages for test fold_left fold_right:
+
+l=[1], fold_left=1, fold_right=0
+
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left fold_right uncurried failed (434 shrink steps):
+
+({(5, 2) -> 0; (0, 2) -> 0; (2, 80) -> 0; (8, 6) -> 0; (76, 6) -> 0; (3, 8) -> 0; (75, 57) -> 0; (7, 2) -> 0; (43, 1) -> 0; (2, 7) -> 0; (7, 1) -> 0; (76, 3) -> 0; (4, 50) -> 0; (70, 5) -> 0; (49, 46) -> 0; (71, 31) -> 0; (67, 0) -> 0; (32, 96) -> 0; (9, 1) -> 0; (8, 8) -> 0; (53, 8) -> 0; (76, 5) -> 0; (2, 5) -> 0; (5, 4) -> 0; (9, 3) -> 0; (6, 65) -> 0; (75, 2) -> 0; (35, 96) -> 0; (3, 2) -> 0; (24, 1) -> 0; (75, 4) -> 0; (48, 8) -> 0; (0, 16) -> 0; (26, 73) -> 0; (2, 88) -> 0; (76, 7) -> 0; (6, 9) -> 0; (71, 59) -> 0; (4, 7) -> 0; (1, 1) -> 0; (4, 22) -> 0; (0, 5) -> 0; (1, 5) -> 0; (1, 4) -> 0; (8, 45) -> 0; (2, 47) -> 0; (0, 1) -> 0; (6, 10) -> 0; (73, 0) -> 0; (27, 3) -> 0; (88, 7) -> 0; (5, 1) -> 0; (3, 6) -> 0; (77, 8) -> 0; (2, 1) -> 0; (1, 2) -> 0; (4, 1) -> 0; (47, 6) -> 0; (76, 9) -> 0; (6, 5) -> 0; (7, 3) -> 0; (9, 87) -> 0; (3, 7) -> 0; (17, 0) -> 0; (43, 55) -> 0; (4, 2) -> 0; (12, 7) -> 0; (7, 79) -> 0; (2, 56) -> 0; (52, 0) -> 0; (9, 2) -> 0; (49, 0) -> 0; (7, 9) -> 0; (2, 75) -> 0; (75, 5) -> 0; (2, 2) -> 0; (6, 4) -> 0; (1, 3) -> 0; (19, 6) -> 0; (4, 55) -> 0; (1, 6) -> 0; (6, 7) -> 0; (6, 24) -> 0; (0, 6) -> 0; (86, 6) -> 0; (3, 1) -> 0; (4, 5) -> 0; (82, 4) -> 0; (5, 70) -> 0; (5, 9) -> 0; (37, 2) -> 0; (45, 1) -> 0; (7, 4) -> 0; (0, 4) -> 1; (6, 95) -> 0; (6, 2) -> 0; (1, 0) -> 0; (8, 4) -> 0; (1, 22) -> 0; (67, 7) -> 0; (92, 7) -> 0; (7, 5) -> 0; (4, 4) -> 0; (9, 8) -> 0; (49, 5) -> 0; (1, 9) -> 0; _ -> 0}, 0, [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 4])
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left fold_right uncurried fun last failed (37 shrink steps):
+
+(0, [0; 0; 0; 0], {(9, 5) -> 0; (0, 2) -> 0; (56, 0) -> 0; (4, 1) -> 0; (8, 5) -> 0; (5, 9) -> 0; (8, 6) -> 0; (3, 8) -> 0; (8, 0) -> 0; (84, 8) -> 0; (23, 4) -> 0; (4, 0) -> 0; (0, 7) -> 0; (7, 8) -> 0; (0, 5) -> 0; (0, 4) -> 0; (1, 5) -> 0; (80, 8) -> 0; (5, 7) -> 0; (2, 2) -> 0; (6, 4) -> 0; (0, 0) -> 56; (0, 23) -> 0; (0, 56) -> 1; (1, 3) -> 0; (0, 1) -> 0; (56, 2) -> 0; (89, 8) -> 0; (7, 7) -> 0; (2, 5) -> 0; (4, 3) -> 0; _ -> 0})
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left test, fun first failed (925 shrink steps):
+
+({("\167$\000\199\169\156V\241\027\212\178d3\196\136\249\1941_=#\216\196\226\186\220\153\150Z)\000\255\184\132`\225\239&uS\235]\212\231\021\028\204\020\t,", 9) -> ""; ("\156\031\194\253\204B\188\154 \167\012\253\2322;", 8) -> ""; ("{\182\172t", 5) -> ""; ("\169\240\228A#\212U\193\172\019\150\238\236\133\209\188\240\135\225\191\241\181\179\243\139\\.\"\190m\204&9\209?\001\171\247\160T\2049\153\0028\184\014;X", 13) -> ""; ("\003\212\207\236\178\162\182m\147\190\b>W\141\242\195\206j\201\202\166B\145k\229\211J\015\139(\224\143\149\190\196(_\017\170\138", 4) -> ""; ("\130\229\219\227\133\160\213\236\2221\245\129-\183\141r\146sXj\000\2210\200\1576\209\1396s '\026\172\251\236\166X\220\200\176$Z0\024\190", 2) -> ""; ("a\0171\198^,5\170C\139\157\\h\001\026\199", 8) -> ""; ("\189\221\014\254\188\175\205JF", 5) -> ""; ("", 2) -> "a"; ("\165\233\214\166\195\197", 5) -> ""; ("&\169\2415\201", 2) -> ""; ("S\194irBA", 37) -> ""; ("\224\2280\186", 1) -> ""; ("!\209\194\238\0266s\001!\233\234(7\127\228C\136n$\21162^^\012\014\199\178`\148\141\228\18599\205\136\136\189\213\134\019|\197\005\235\151\003\197D%\172\144\238\173[\228\191\235p\177I\180\237\189y\247\250w\143z~\016\003\142\149\157\142\234\\3P\140\030\000\028\205K\188&\202w\1519`\188\015", 2) -> ""; ("\128]\190\164\164\151)\214", 22) -> ""; ("u\251\19988\194\165\242J", 7) -> ""; ("}\129\237\213\203\137\197(W\172Q\171\188\140\205\014\143k~\163\187\140o\130\146r", 0) -> ""; ("\133+\142\011\209\135", 1) -> ""; ("E\212\169=n", 9) -> ""; ("l\022\133\005\016D\026\230\156", 18) -> ""; ("\031\131g\029\215", 31) -> ""; ("/*j", 6) -> ""; ("h\031\226a\226\148\128", 9) -> ""; ("\151", 1) -> ""; ("\221\184V\247\225\254\209iW;_d\144\t\179>2\252\221pO<\134F\005\252\151\163\138\007\219z\136\215\237]92G\000A\135\139\166\214\186\232\199\236\000\132_\006\241\169Gz\"\155\183\215-\233\249", 1) -> ""; ("z\211oC\210\198\155", 8) -> ""; ("}P8\147\167\142j9u\187\007\128\213Y\181E'\130\r\242ng\2088\198\004\136GJ\179-\197Iw\017\197\223\173\250\229D\160\171\t\222\223>6\219\201@^X\221(s\029\127\005-F+\232\213B\170\150\188\018f+>\215\240k\135\023\214P\157", 9) -> ""; ("~f-L\151\011", 2) -> ""; ("!\178\019\016\134%\026", 2) -> ""; ("\255U\t4f*\254\237\181S\020\181\130\184\230\017C\185\200\187:Q\002\210\028\152G\228O\026\012\003\234\011\148z\177\166&\024\178F\188\213u\128R~\\\171\194\r~v\020\160\221(\157wa!a\bAf\127^\169\241;\246\011B\b+\249\179\193\230\137\232\147\247\251\180ey\166q<\150_\158", 6) -> ""; ("\005\140\184\232$", 78) -> ""; (".NF\153", 6) -> ""; ("\180\130\236\011(\210M9", 9) -> ""; ("I\219\224\171\142\155\209\027\011\237\020;\245\176\141(\202\248\023\174\216\156\173+\028\209\193?\154t\196\146\147\181\252#\229\128jz\199\212\194\2302\185\162\208UXq>\024F&\241i\182\165\214I\249*?\136_\142f\163\230\167\210U`W \150X\157=\235pe\200\019\208\138j", 1) -> ""; ("\196\210\239\158\131\198\1516\208\165\163\011\251B\219\161\001\237\224\194T\t\148\158\197\031\145\025\192\148\210t1\235\159\015\176\197.\248a\028'\222r\200= \208w", 36) -> ""; ("\228x[", 91) -> ""; ("\001\143", 7) -> ""; ("\136u\1473\235\255\232\211\129\129\172\n\012\004\\O2.a\228(\218\205\223\011\"\n<\181$\245v\002\016s]\161\170\000q\205\161wM\230\223\143%\t\232\175\171j\129x\022\159\215\182\019\240\002\014}\0052\234\202\226\157,\148-\147\200\158\181\189\196\143f", 38) -> ""; ("@\192\163\234", 72) -> ""; ("\131\158Y\139\199\014\149d$", 9) -> ""; ("-\152", 9) -> ""; _ -> ""}, "", [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 2], [0])
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_#99_1 failed:
+
+ERROR: uncaught exception in generator for test FAIL_#99_1 after 100 steps:
+Exception: QCheck2.No_example_found("<example>")
+Backtrace: 
+
++++ Collect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Collect results for test bool dist:
+
+true: 250511 cases
+false: 249489 cases
+
++++ Stats for char code dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats char code:
+  num: 500000, avg: 127.68, stddev: 73.87, median 128, min 0, max 255
+    0.. 12: #####################################################         25272
+   13.. 25: ######################################################        25326
+   26.. 38: #####################################################         25194
+   39.. 51: ######################################################        25359
+   52.. 64: ######################################################        25338
+   65.. 77: ######################################################        25349
+   78.. 90: ######################################################        25397
+   91..103: #####################################################         25243
+  104..116: ######################################################        25420
+  117..129: ######################################################        25438
+  130..142: ######################################################        25346
+  143..155: #####################################################         25177
+  156..168: #######################################################       25755
+  169..181: ######################################################        25408
+  182..194: ######################################################        25633
+  195..207: ######################################################        25613
+  208..220: ######################################################        25459
+  221..233: ######################################################        25322
+  234..246: #####################################################         25229
+  247..259: #####################################                         17722
+
++++ Stats for printable char code dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats char code:
+  num: 500000, avg: 78.23, stddev: 28.13, median 78, min 10, max 126
+   10.. 15: #########                                                      5167
+   16.. 21:                                                                   0
+   22.. 27:                                                                   0
+   28.. 33: ##################                                            10338
+   34.. 39: ######################################################        31469
+   40.. 45: ######################################################        30994
+   46.. 51: ######################################################        31366
+   52.. 57: ######################################################        31369
+   58.. 63: #######################################################       31531
+   64.. 69: ######################################################        31208
+   70.. 75: ######################################################        31228
+   76.. 81: ######################################################        31514
+   82.. 87: ######################################################        31209
+   88.. 93: ######################################################        31207
+   94.. 99: ######################################################        31342
+  100..105: ######################################################        31273
+  106..111: ######################################################        31116
+  112..117: ######################################################        31022
+  118..123: #####################################################         30911
+  124..129: ###########################                                   15736
+
++++ Stats for numeral char code dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats char code:
+  num: 500000, avg: 52.50, stddev: 2.87, median 53, min 48, max 57
+  48: ######################################################        49848
+  49: ######################################################        50118
+  50: ######################################################        49837
+  51: ######################################################        50252
+  52: ######################################################        49765
+  53: #######################################################       50369
+  54: ######################################################        50270
+  55: ######################################################        49885
+  56: ######################################################        49821
+  57: ######################################################        49835
+
++++ Stats for tree's depth ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats depth:
+  num: 1000, avg: 4.13, stddev: 3.52, median 3, min 1, max 15
+   1: #######################################################         339
+   2: ################                                                104
+   3: ###############                                                  98
+   4: #####################                                           133
+   5: #########                                                        60
+   6: ####                                                             29
+   7: ########                                                         54
+   8: #######                                                          48
+   9: ##                                                               16
+  10: ###                                                              21
+  11: ###########                                                      68
+  12:                                                                   1
+  13: #                                                                 8
+  14: ##                                                               16
+  15:                                                                   5
+
++++ Stats for bytes_size len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 7.51, stddev: 1.69, median 8, min 5, max 10
+   5: ##################################################              817
+   6: #################################################               797
+   7: #######################################################         885
+   8: ###################################################             834
+   9: ######################################################          877
+  10: #################################################               790
+
++++ Stats for bytes len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 370.05, stddev: 1282.91, median 9, min 0, max 9947
+     0.. 497: #######################################################        4270
+   498.. 995: ######                                                          497
+   996..1493:                                                                  17
+  1494..1991:                                                                   9
+  1992..2489:                                                                  13
+  2490..2987:                                                                  13
+  2988..3485:                                                                   9
+  3486..3983:                                                                  14
+  3984..4481:                                                                  14
+  4482..4979:                                                                  17
+  4980..5477:                                                                   9
+  5478..5975:                                                                  10
+  5976..6473:                                                                  15
+  6474..6971:                                                                  16
+  6972..7469:                                                                  16
+  7470..7967:                                                                   9
+  7968..8465:                                                                  12
+  8466..8963:                                                                  15
+  8964..9461:                                                                   9
+  9462..9959:                                                                  16
+
++++ Stats for bytes_of len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 359.22, stddev: 1249.46, median 9, min 0, max 9958
+     0.. 497: #######################################################        4275
+   498.. 995: ######                                                          479
+   996..1493:                                                                  22
+  1494..1991:                                                                  12
+  1992..2489:                                                                  21
+  2490..2987:                                                                  16
+  2988..3485:                                                                  13
+  3486..3983:                                                                  17
+  3984..4481:                                                                  14
+  4482..4979:                                                                  14
+  4980..5477:                                                                   8
+  5478..5975:                                                                  14
+  5976..6473:                                                                  13
+  6474..6971:                                                                   9
+  6972..7469:                                                                   7
+  7470..7967:                                                                  17
+  7968..8465:                                                                  13
+  8466..8963:                                                                  15
+  8964..9461:                                                                  10
+  9462..9959:                                                                  11
+
++++ Stats for bytes_printable len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 370.05, stddev: 1282.91, median 9, min 0, max 9947
+     0.. 497: #######################################################        4270
+   498.. 995: ######                                                          497
+   996..1493:                                                                  17
+  1494..1991:                                                                   9
+  1992..2489:                                                                  13
+  2490..2987:                                                                  13
+  2988..3485:                                                                   9
+  3486..3983:                                                                  14
+  3984..4481:                                                                  14
+  4482..4979:                                                                  17
+  4980..5477:                                                                   9
+  5478..5975:                                                                  10
+  5976..6473:                                                                  15
+  6474..6971:                                                                  16
+  6972..7469:                                                                  16
+  7470..7967:                                                                   9
+  7968..8465:                                                                  12
+  8466..8963:                                                                  15
+  8964..9461:                                                                   9
+  9462..9959:                                                                  16
+
++++ Stats for bytes_small len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 15.99, stddev: 24.58, median 6, min 0, max 99
+    0..  4: ######################################################         1920
+    5..  9: #######################################################        1929
+   10.. 14: #                                                                69
+   15.. 19: #                                                                62
+   20.. 24: #                                                                63
+   25.. 29: #                                                                59
+   30.. 34: #                                                                68
+   35.. 39: #                                                                62
+   40.. 44: #                                                                57
+   45.. 49: ##                                                               83
+   50.. 54: #                                                                59
+   55.. 59: ##                                                               80
+   60.. 64: #                                                                48
+   65.. 69: #                                                                53
+   70.. 74: #                                                                61
+   75.. 79: #                                                                66
+   80.. 84: #                                                                61
+   85.. 89: ##                                                               72
+   90.. 94: #                                                                66
+   95.. 99: #                                                                62
+
++++ Stats for string_size len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 7.51, stddev: 1.69, median 8, min 5, max 10
+   5: ##################################################              817
+   6: #################################################               797
+   7: #######################################################         885
+   8: ###################################################             834
+   9: ######################################################          877
+  10: #################################################               790
+
++++ Stats for string len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 370.05, stddev: 1282.91, median 9, min 0, max 9947
+     0.. 497: #######################################################        4270
+   498.. 995: ######                                                          497
+   996..1493:                                                                  17
+  1494..1991:                                                                   9
+  1992..2489:                                                                  13
+  2490..2987:                                                                  13
+  2988..3485:                                                                   9
+  3486..3983:                                                                  14
+  3984..4481:                                                                  14
+  4482..4979:                                                                  17
+  4980..5477:                                                                   9
+  5478..5975:                                                                  10
+  5976..6473:                                                                  15
+  6474..6971:                                                                  16
+  6972..7469:                                                                  16
+  7470..7967:                                                                   9
+  7968..8465:                                                                  12
+  8466..8963:                                                                  15
+  8964..9461:                                                                   9
+  9462..9959:                                                                  16
+
++++ Stats for string_of len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 359.22, stddev: 1249.46, median 9, min 0, max 9958
+     0.. 497: #######################################################        4275
+   498.. 995: ######                                                          479
+   996..1493:                                                                  22
+  1494..1991:                                                                  12
+  1992..2489:                                                                  21
+  2490..2987:                                                                  16
+  2988..3485:                                                                  13
+  3486..3983:                                                                  17
+  3984..4481:                                                                  14
+  4482..4979:                                                                  14
+  4980..5477:                                                                   8
+  5478..5975:                                                                  14
+  5976..6473:                                                                  13
+  6474..6971:                                                                   9
+  6972..7469:                                                                   7
+  7470..7967:                                                                  17
+  7968..8465:                                                                  13
+  8466..8963:                                                                  15
+  8964..9461:                                                                  10
+  9462..9959:                                                                  11
+
++++ Stats for string_printable len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 370.05, stddev: 1282.91, median 9, min 0, max 9947
+     0.. 497: #######################################################        4270
+   498.. 995: ######                                                          497
+   996..1493:                                                                  17
+  1494..1991:                                                                   9
+  1992..2489:                                                                  13
+  2490..2987:                                                                  13
+  2988..3485:                                                                   9
+  3486..3983:                                                                  14
+  3984..4481:                                                                  14
+  4482..4979:                                                                  17
+  4980..5477:                                                                   9
+  5478..5975:                                                                  10
+  5976..6473:                                                                  15
+  6474..6971:                                                                  16
+  6972..7469:                                                                  16
+  7470..7967:                                                                   9
+  7968..8465:                                                                  12
+  8466..8963:                                                                  15
+  8964..9461:                                                                   9
+  9462..9959:                                                                  16
+
++++ Stats for small_string len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 15.99, stddev: 24.58, median 6, min 0, max 99
+    0..  4: ######################################################         1920
+    5..  9: #######################################################        1929
+   10.. 14: #                                                                69
+   15.. 19: #                                                                62
+   20.. 24: #                                                                63
+   25.. 29: #                                                                59
+   30.. 34: #                                                                68
+   35.. 39: #                                                                62
+   40.. 44: #                                                                57
+   45.. 49: ##                                                               83
+   50.. 54: #                                                                59
+   55.. 59: ##                                                               80
+   60.. 64: #                                                                48
+   65.. 69: #                                                                53
+   70.. 74: #                                                                61
+   75.. 79: #                                                                66
+   80.. 84: #                                                                61
+   85.. 89: ##                                                               72
+   90.. 94: #                                                                66
+   95.. 99: #                                                                62
+
++++ Stats for pair dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats pair sum:
+  num: 500000, avg: 100.05, stddev: 41.29, median 100, min 0, max 200
+    0..  9: ###                                                            2618
+   10.. 19: ########                                                       7630
+   20.. 29: ##############                                                12505
+   30.. 39: ####################                                          17451
+   40.. 49: ##########################                                    22280
+   50.. 59: ###############################                               27307
+   60.. 69: #####################################                         32151
+   70.. 79: ###########################################                   37199
+   80.. 89: #################################################             41901
+   90.. 99: ######################################################        46313
+  100..109: #######################################################       46965
+  110..119: #################################################             42462
+  120..129: ###########################################                   37348
+  130..139: ######################################                        32613
+  140..149: ################################                              27606
+  150..159: ###########################                                   23221
+  160..169: #####################                                         18125
+  170..179: ###############                                               12890
+  180..189: #########                                                      8059
+  190..199: ###                                                            3297
+  200..209:                                                                  59
+
++++ Stats for triple dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats triple sum:
+  num: 500000, avg: 150.04, stddev: 50.53, median 150, min 1, max 300
+    1.. 15:                                                                 360
+   16.. 30: ##                                                             2261
+   31.. 45: #####                                                          5712
+   46.. 60: ##########                                                    10854
+   61.. 75: #################                                             17760
+   76.. 90: ##########################                                    26151
+   91..105: ###################################                           36079
+  106..120: #############################################                 45498
+  121..135: ###################################################           51977
+  136..150: #######################################################       55179
+  151..165: ######################################################        54821
+  166..180: ###################################################           51709
+  181..195: #############################################                 45166
+  196..210: ###################################                           35354
+  211..225: #########################                                     25436
+  226..240: #################                                             17179
+  241..255: ##########                                                    10652
+  256..270: #####                                                          5447
+  271..285: ##                                                             2065
+  286..300:                                                                 340
+
++++ Stats for quad dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats quad sum:
+  num: 500000, avg: 200.06, stddev: 58.39, median 200, min 2, max 394
+    2.. 21:                                                                  61
+   22.. 41:                                                                 658
+   42.. 61: ##                                                             2534
+   62.. 81: #####                                                          6444
+   82..101: ###########                                                   13334
+  102..121: ###################                                           23279
+  122..141: ##############################                                35888
+  142..161: #########################################                     48824
+  162..181: ##################################################            59008
+  182..201: #######################################################       64896
+  202..221: ######################################################        64051
+  222..241: #################################################             57864
+  242..261: #######################################                       46793
+  262..281: ############################                                  33955
+  282..301: ##################                                            21775
+  302..321: ##########                                                    12187
+  322..341: ####                                                           5645
+  342..361: #                                                              2244
+  362..381:                                                                 529
+  382..401:                                                                  31
+
++++ Stats for bind dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats ordered pair difference:
+  num: 1000000, avg: 25.01, stddev: 22.38, median 19, min 0, max 100
+    0..  4: #######################################################      193610
+    5..  9: ####################################                         130051
+   10.. 14: #############################                                104209
+   15.. 19: ########################                                      86993
+   20.. 24: #####################                                         74295
+   25.. 29: ##################                                            64874
+   30.. 34: ################                                              56447
+   35.. 39: ##############                                                49416
+   40.. 44: ############                                                  43051
+   45.. 49: ##########                                                    37580
+   50.. 54: #########                                                     32378
+   55.. 59: ########                                                      28558
+   60.. 64: ######                                                        23971
+   65.. 69: #####                                                         20146
+   70.. 74: ####                                                          16446
+   75.. 79: ###                                                           13215
+   80.. 84: ##                                                            10294
+   85.. 89: ##                                                             7639
+   90.. 94: #                                                              4698
+   95.. 99:                                                                2041
+  100..104:                                                                  88
+
+stats ordered pair sum:
+  num: 1000000, avg: 74.97, stddev: 46.86, median 72, min 0, max 200
+    0..  9: #######################################################       70320
+   10.. 19: #####################################################         68731
+   20.. 29: #####################################################         68374
+   30.. 39: #####################################################         68544
+   40.. 49: #####################################################         68756
+   50.. 59: #####################################################         68837
+   60.. 69: #####################################################         68759
+   70.. 79: #####################################################         68517
+   80.. 89: #####################################################         68692
+   90.. 99: ######################################################        69123
+  100..109: ##################################################            64777
+  110..119: ###########################################                   55288
+  120..129: ####################################                          47156
+  130..139: ###############################                               39635
+  140..149: #########################                                     32590
+  150..159: ####################                                          25685
+  160..169: ###############                                               19842
+  170..179: ##########                                                    14038
+  180..189: ######                                                         8631
+  190..199: ##                                                             3580
+  200..209:                                                                 125
+
++++ Stats for list len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 374.46, stddev: 1320.15, median 9, min 0, max 9984
+      0..  499: #######################################################        4269
+    500..  999: ######                                                          503
+   1000.. 1499:                                                                  13
+   1500.. 1999:                                                                   6
+   2000.. 2499:                                                                  22
+   2500.. 2999:                                                                  13
+   3000.. 3499:                                                                  10
+   3500.. 3999:                                                                   5
+   4000.. 4499:                                                                  15
+   4500.. 4999:                                                                  10
+   5000.. 5499:                                                                  15
+   5500.. 5999:                                                                  12
+   6000.. 6499:                                                                   6
+   6500.. 6999:                                                                  12
+   7000.. 7499:                                                                  11
+   7500.. 7999:                                                                  15
+   8000.. 8499:                                                                  21
+   8500.. 8999:                                                                  11
+   9000.. 9499:                                                                  15
+   9500.. 9999:                                                                  16
+
++++ Stats for small_list len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 15.36, stddev: 23.76, median 6, min 0, max 99
+    0..  4: ######################################################         1933
+    5..  9: #######################################################        1962
+   10.. 14: #                                                                69
+   15.. 19: #                                                                57
+   20.. 24: #                                                                51
+   25.. 29: #                                                                62
+   30.. 34: #                                                                63
+   35.. 39: #                                                                65
+   40.. 44: ##                                                               77
+   45.. 49: #                                                                71
+   50.. 54: #                                                                56
+   55.. 59: #                                                                60
+   60.. 64: #                                                                66
+   65.. 69: #                                                                65
+   70.. 74: #                                                                69
+   75.. 79: #                                                                48
+   80.. 84: #                                                                53
+   85.. 89: #                                                                58
+   90.. 94: #                                                                64
+   95.. 99: #                                                                51
+
++++ Stats for list_size len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 7.50, stddev: 1.71, median 8, min 5, max 10
+   5: ######################################################          853
+   6: ####################################################            819
+   7: ####################################################            820
+   8: ####################################################            825
+   9: #######################################################         857
+  10: #####################################################           826
+
++++ Stats for list_repeat len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 42.00, stddev: 0.00, median 42, min 42, max 42
+  42: #######################################################        5000
+
++++ Stats for array len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 374.46, stddev: 1320.15, median 9, min 0, max 9984
+      0..  499: #######################################################        4269
+    500..  999: ######                                                          503
+   1000.. 1499:                                                                  13
+   1500.. 1999:                                                                   6
+   2000.. 2499:                                                                  22
+   2500.. 2999:                                                                  13
+   3000.. 3499:                                                                  10
+   3500.. 3999:                                                                   5
+   4000.. 4499:                                                                  15
+   4500.. 4999:                                                                  10
+   5000.. 5499:                                                                  15
+   5500.. 5999:                                                                  12
+   6000.. 6499:                                                                   6
+   6500.. 6999:                                                                  12
+   7000.. 7499:                                                                  11
+   7500.. 7999:                                                                  15
+   8000.. 8499:                                                                  21
+   8500.. 8999:                                                                  11
+   9000.. 9499:                                                                  15
+   9500.. 9999:                                                                  16
+
++++ Stats for small_array len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 15.36, stddev: 23.76, median 6, min 0, max 99
+    0..  4: ######################################################         1933
+    5..  9: #######################################################        1962
+   10.. 14: #                                                                69
+   15.. 19: #                                                                57
+   20.. 24: #                                                                51
+   25.. 29: #                                                                62
+   30.. 34: #                                                                63
+   35.. 39: #                                                                65
+   40.. 44: ##                                                               77
+   45.. 49: #                                                                71
+   50.. 54: #                                                                56
+   55.. 59: #                                                                60
+   60.. 64: #                                                                66
+   65.. 69: #                                                                65
+   70.. 74: #                                                                69
+   75.. 79: #                                                                48
+   80.. 84: #                                                                53
+   85.. 89: #                                                                58
+   90.. 94: #                                                                64
+   95.. 99: #                                                                51
+
++++ Stats for array_size len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 7.50, stddev: 1.71, median 8, min 5, max 10
+   5: ######################################################          853
+   6: ####################################################            819
+   7: ####################################################            820
+   8: ####################################################            825
+   9: #######################################################         857
+  10: #####################################################           826
+
++++ Stats for array_repeat len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 42.00, stddev: 0.00, median 42, min 42, max 42
+  42: #######################################################        5000
+
++++ Stats for int_stats_neg ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 5000, avg: 0.43, stddev: 28.63, median 0, min -99, max 99
+  -99..-90: #                                                                45
+  -89..-80: #                                                                57
+  -79..-70: #                                                                68
+  -69..-60: #                                                                58
+  -59..-50: #                                                                76
+  -49..-40: #                                                                67
+  -39..-30: #                                                                52
+  -29..-20: #                                                                54
+  -19..-10: #                                                                47
+   -9..  0: #######################################################        2205
+    1.. 10: ##########################################                     1697
+   11.. 20: #                                                                57
+   21.. 30: #                                                                70
+   31.. 40: #                                                                60
+   41.. 50: #                                                                66
+   51.. 60: #                                                                75
+   61.. 70: #                                                                68
+   71.. 80: #                                                                63
+   81.. 90: #                                                                66
+   91..100: #                                                                49
+
++++ Stats for small_signed_int dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: 0.86, stddev: 29.11, median 0, min -97, max 99
+  -97..-88: #                                                                12
+  -87..-78: #                                                                12
+  -77..-68: #                                                                13
+  -67..-58: #                                                                12
+  -57..-48: #                                                                 9
+  -47..-38: ##                                                               17
+  -37..-28: #                                                                13
+  -27..-18: #                                                                 8
+  -17.. -8: #########                                                        76
+   -7..  2: #######################################################         437
+    3.. 12: ##################################                              276
+   13.. 22: ##                                                               16
+   23.. 32: #                                                                11
+   33.. 42: ##                                                               16
+   43.. 52: #                                                                 9
+   53.. 62: #                                                                12
+   63.. 72: #                                                                14
+   73.. 82: #                                                                12
+   83.. 92: #                                                                13
+   93..102: #                                                                12
+
++++ Stats for small_nat dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: 15.86, stddev: 24.57, median 6, min 0, max 99
+    0..  4: ######################################################          387
+    5..  9: #######################################################         390
+   10.. 14: #                                                                11
+   15.. 19: #                                                                 8
+   20.. 24: #                                                                11
+   25.. 29: ##                                                               15
+   30.. 34: #                                                                 9
+   35.. 39: #                                                                11
+   40.. 44: #                                                                11
+   45.. 49: ##                                                               19
+   50.. 54: #                                                                10
+   55.. 59: ##                                                               19
+   60.. 64: #                                                                 9
+   65.. 69: #                                                                 9
+   70.. 74: ##                                                               19
+   75.. 79: #                                                                13
+   80.. 84: #                                                                11
+   85.. 89: ##                                                               16
+   90.. 94: #                                                                 9
+   95.. 99: #                                                                13
+
++++ Stats for nat dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: 382.03, stddev: 1290.55, median 9, min 0, max 9890
+     0.. 494: #######################################################         850
+   495.. 989: ######                                                           93
+   990..1484:                                                                   8
+  1485..1979:                                                                   3
+  1980..2474:                                                                   7
+  2475..2969:                                                                   1
+  2970..3464:                                                                   3
+  3465..3959:                                                                   3
+  3960..4454:                                                                   3
+  4455..4949:                                                                   4
+  4950..5444:                                                                   3
+  5445..5939:                                                                   3
+  5940..6434:                                                                   3
+  6435..6929:                                                                   1
+  6930..7424:                                                                   2
+  7425..7919:                                                                   1
+  7920..8414:                                                                   1
+  8415..8909:                                                                   5
+  8910..9404:                                                                   3
+  9405..9899:                                                                   3
+
++++ Stats for int_range (-43643) 435434 dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: 193479.13, stddev: 136696.70, median 189823, min -43164, max 434961
+  -43164..-19258: ###################################                              42
+  -19257..  4649: ##############################################                   56
+    4650.. 28556: #############################################                    55
+   28557.. 52463: ###############################################                  57
+   52464.. 76370: #########################################                        50
+   76371..100277: #############################                                    35
+  100278..124184: ###############################################                  57
+  124185..148091: ####################################                             44
+  148092..171998: ##############################################                   56
+  171999..195905: #######################################################          66
+  195906..219812: ###########################################                      52
+  219813..243719: ########################################                         49
+  243720..267626: ################################                                 39
+  267627..291533: #####################################                            45
+  291534..315440: #####################################                            45
+  315441..339347: #################################################                59
+  339348..363254: ##################################################               60
+  363255..387161: #################################                                40
+  387162..411068: ##########################################                       51
+  411069..434975: ###################################                              42
+
++++ Stats for int_range (-40000) 40000 dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: -591.06, stddev: 23026.79, median -911, min -39911, max 39959
+  -39911..-35918: #######################################                          45
+  -35917..-31924: ####################################################             59
+  -31923..-27930: ###########################################                      49
+  -27929..-23936: ##########################################                       48
+  -23935..-19942: #######################################################          62
+  -19941..-15948: #############################################                    51
+  -15947..-11954: #########################################                        47
+  -11953.. -7960: #################################################                56
+   -7959.. -3966: ###################################                              40
+   -3965..    28: ###################################################              58
+      29..  4022: ###########################################                      49
+    4023..  8016: ###############################################                  53
+    8017.. 12010: ############################################                     50
+   12011.. 16004: ###################################                              40
+   16005.. 19998: #######################################                          44
+   19999.. 23992: #######################################################          62
+   23993.. 27986: #####################################                            42
+   27987.. 31980: #########################################                        47
+   31981.. 35974: ##########################################                       48
+   35975.. 39968: ############################################                     50
+
++++ Stats for int_range (-4) 4 dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: -0.12, stddev: 2.52, median 0, min -4, max 4
+  -4: ##########################################                      116
+  -3: ######################################                          103
+  -2: ##############################################                  125
+  -1: ##########################################                      115
+   0: #######################################                         106
+   1: #######################################################         149
+   2: #################################                                92
+   3: #################################                                92
+   4: #####################################                           102
+
++++ Stats for int_range (-4) 17 dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: 6.42, stddev: 6.43, median 6, min -4, max 17
+  -4..-3: ###########################################                      89
+  -2..-1: #################################################               101
+   0.. 1: ##############################################                   95
+   2.. 3: ###########################################                      89
+   4.. 5: ##############################################                   95
+   6.. 7: #####################################                            78
+   8.. 9: #######################################                          81
+  10..11: ########################################                         84
+  12..13: #######################################################         113
+  14..15: ########################################                         84
+  16..17: ############################################                     91
+  18..19:                                                                   0
+  20..21:                                                                   0
+  22..23:                                                                   0
+  24..25:                                                                   0
+  26..27:                                                                   0
+  28..29:                                                                   0
+  30..31:                                                                   0
+  32..33:                                                                   0
+  34..35:                                                                   0
+
++++ Stats for int dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 100000, avg: -2481754.31, stddev: 618398387.27, median -5669677, min -1073719962, max 1073717275
+  -1073719962.. -966348101: #####################################################          4978
+   -966348100.. -858976239: #####################################################          5008
+   -858976238.. -751604377: ####################################################           4907
+   -751604376.. -644232515: ######################################################         5037
+   -644232514.. -536860653: ######################################################         5069
+   -536860652.. -429488791: ######################################################         5052
+   -429488790.. -322116929: ######################################################         5035
+   -322116928.. -214745067: #######################################################        5128
+   -214745066.. -107373205: #####################################################          5017
+   -107373204..      -1343: #####################################################          5021
+        -1342..  107370519: #####################################################          5010
+    107370520..  214742381: #####################################################          4964
+    214742382..  322114243: #####################################################          4957
+    322114244..  429486105: #####################################################          4994
+    429486106..  536857967: #####################################################          5025
+    536857968..  644229829: ######################################################         5047
+    644229830..  751601691: #####################################################          4988
+    751601692..  858973553: ####################################################           4924
+    858973554..  966345415: ####################################################           4852
+    966345416.. 1073717277: #####################################################          4987
+
++++ Stats for oneof int dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: 1073741.60, stddev: 673131652.31, median 0, min -1073741824, max 1073741823
+  -1073741824.. -966367642: #################                                               198
+   -966367641.. -858993459:                                                                   0
+   -858993458.. -751619276:                                                                   0
+   -751619275.. -644245093:                                                                   0
+   -644245092.. -536870910:                                                                   0
+   -536870909.. -429496727:                                                                   0
+   -429496726.. -322122544:                                                                   0
+   -322122543.. -214748361:                                                                   0
+   -214748360.. -107374178:                                                                   0
+   -107374177..          5: #######################################################         607
+            6..  107374188:                                                                   0
+    107374189..  214748371:                                                                   0
+    214748372..  322122554:                                                                   0
+    322122555..  429496737:                                                                   0
+    429496738..  536870920:                                                                   0
+    536870921..  644245103:                                                                   0
+    644245104..  751619286:                                                                   0
+    751619287..  858993469:                                                                   0
+    858993470..  966367652:                                                                   0
+    966367653.. 1073741823: #################                                               195
+================================================================================
+1 warning(s)
+failure (64 tests failed, 3 tests errored, ran 141 tests)
+random seed: 153870556
+
++++ Stats for int_dist_empty_bucket ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: -20587725.59, stddev: 427231078.01, median 8, min -1072292884, max 1073741823
+  -1072292884.. -964991149: ##                                                               26
+   -964991148.. -857689413: ###                                                              31
+   -857689412.. -750387677: ##                                                               22
+   -750387676.. -643085941: ##                                                               22
+   -643085940.. -535784205: ##                                                               27
+   -535784204.. -428482469: ###                                                              30
+   -428482468.. -321180733: ##                                                               29
+   -321180732.. -213878997: ##                                                               20
+   -213878996.. -106577261: ##                                                               20
+   -106577260..     724475: #######################################################         543
+       724476..  108026211: ##                                                               22
+    108026212..  215327947: ##                                                               22
+    215327948..  322629683: ###                                                              32
+    322629684..  429931419: ##                                                               29
+    429931420..  537233155: ##                                                               20
+    537233156..  644534891: ##                                                               21
+    644534892..  751836627: ##                                                               20
+    751836628..  859138363: ##                                                               22
+    859138364..  966440099: ##                                                               24
+    966440100.. 1073741823: #                                                                18
+================================================================================
+success (ran 1 tests)
diff --git a/test/core/QCheck2_expect_test.expected.ocaml5 b/test/core/QCheck2_expect_test.expected.ocaml5.64
similarity index 99%
rename from test/core/QCheck2_expect_test.expected.ocaml5
rename to test/core/QCheck2_expect_test.expected.ocaml5.64
index 228b96e..bce5b4b 100644
--- a/test/core/QCheck2_expect_test.expected.ocaml5
+++ b/test/core/QCheck2_expect_test.expected.ocaml5.64
@@ -326,7 +326,7 @@ Test char never produces 'abcdef' failed (1 shrink steps):
 
 --- Failure --------------------------------------------------------------------
 
-Test printable never produces '!"#$%&'' failed (1 shrink steps):
+Test printable never produces '!"#$%&' failed (1 shrink steps):
 
 '!'
 
diff --git a/test/core/QCheck2_tests.ml b/test/core/QCheck2_tests.ml
index 87b843c..1da328a 100644
--- a/test/core/QCheck2_tests.ml
+++ b/test/core/QCheck2_tests.ml
@@ -389,8 +389,8 @@ module Shrink = struct
       Gen.char (fun c -> not (List.mem c ['a';'b';'c';'d';'e';'f']))
 
   let printable_is_never_sign = (* should shrink towards '!' with lowest ascii code 33 *)
-    Test.make ~name:"printable never produces '!\"#$%&''" ~count:1000 ~print:Print.char
-      Gen.printable (fun c -> not (List.mem c ['!';'@';'#';'$';'%']))
+    Test.make ~name:"printable never produces '!\"#$%&'" ~count:1000 ~print:Print.char
+      Gen.printable (fun c -> not (List.mem c ['!';'"';'#';'$';'%';'&']))
 
   let numeral_is_never_less_5 =
     Test.make ~name:"printable never produces less than '5" ~count:1000 ~print:Print.char
diff --git a/test/core/QCheck2_unit_tests.ml b/test/core/QCheck2_unit_tests.ml
index a982c5f..999bdc8 100644
--- a/test/core/QCheck2_unit_tests.ml
+++ b/test/core/QCheck2_unit_tests.ml
@@ -313,6 +313,20 @@ module Check_exn = struct
         then
           Alcotest.failf "%s: counter-example prefix. Received \"%s\"" name c_ex_str
 
+  let test_negative_trivial () =
+    let run_test () = check_exn QCheck2.(Test.make_neg Gen.int (fun _ -> false)) in
+    Alcotest.(check unit) "Success-negative-trivial" () @@ run_test ()
+
+  let test_negative_test_unexpected_success () =
+    let name = "negative-trivial-test" in
+    let run_test () = check_exn QCheck2.(Test.make_neg ~name Gen.int (fun _ -> true)) in
+    try
+      run_test ();
+      Alcotest.failf "Negative test didn't raise expected exception."
+    with
+      Test.Test_unexpected_success n ->
+        Alcotest.(check string) (Printf.sprintf "%s: name" name) n name
+
   let tests =
     ("Test.check_exn", Alcotest.[
          test_case "check_exn pass trivial" `Quick test_pass_trivial;
@@ -320,6 +334,8 @@ module Check_exn = struct
          test_case "check_exn fail always" `Quick test_fail_always;
          test_case "check_exn fail random" `Quick test_fail_random;
          test_case "check_exn Error" `Quick test_error;
+         test_case "check_exn negative pass trivial" `Quick test_negative_trivial;
+         test_case "check_exn Unexpected success" `Quick test_negative_test_unexpected_success;
        ])
 end
 
diff --git a/test/core/QCheck_expect_test.expected.32 b/test/core/QCheck_expect_test.expected.ocaml4.32
similarity index 98%
rename from test/core/QCheck_expect_test.expected.32
rename to test/core/QCheck_expect_test.expected.ocaml4.32
index 50d79b2..e5de618 100644
--- a/test/core/QCheck_expect_test.expected.32
+++ b/test/core/QCheck_expect_test.expected.ocaml4.32
@@ -498,6 +498,12 @@ Leaf 0
 
 --- Failure --------------------------------------------------------------------
 
+Test sum list = 0 failed (0 shrink steps):
+
+[7; 1; 42; 1; 8; 5; 3; 9; 5; 38; 3; 3; 0; 1; 98; 1; 4; 13; 9; 2; 6; 9; 47; 6; 5; 8; 8; 6; 0; 9; 7; 2; 8; 6; 62; 6; 4; 31; 19; 1; 41; 60; 6; 5; 8; 1; 1; 4; 7; 7; 0; 5; 5; 71; 14; 26; 47; 5; 1; 6; 34; 9; 4; 2; 37; 3; 8; 4; 31; 6; 2; 1; 0; 7; 5; 1; 0; 15; 6; 1; 8; 13; 0; 6; 2; 4; 2; 6; 6; 1; 4; 1; 9; 79; 0; 87; 6; 8; 8; 62; 1; 4; 62; 6; 31; 1; 5; 6; 5; 9; 3; 3; 1; 79; 4; 3; 2; 67; 5; 7; 12; 70; 8; 8; 6; 1; 3; 14; 15; 1; 61; 4; 1; 4; 1; 7; 4; 4; 4; 2; 8; 8; 7; 5; 4; 27; 0; 9; 80; 25; 1; 8; 1; 3; 7; 4; 3; 5; 5; 6; 5; 5; 31; 7; 0; 3; 3; 6; 71; 76; 28; 60; 6; 2; 6; 3; 0; 4; 1; 0; 5; 7; 0; 28; 86; 4; 7; 51; 36; 0; 5; 0; 1; 4; 3; 6; 0; 1; 1; 8; 18; 4; 2; 8; 8; 1; 4; 7; 1; 0; 93; 5; 3; 0; 80; 1; 7; 7; 8; 8; 5; 7; 8; 9; 24; 4; 25; 8; 8; 5; 4; 90; 4; 6; 8; 4; 4; 0; 60; 8; 9; 7; 44; 5; 1; 2; 9; 74; 7; 7]
+
+--- Failure --------------------------------------------------------------------
+
 Test fail_pred_map_commute failed (47 shrink steps):
 
 ([1], {_ -> 0}, {0 -> false; _ -> true})
@@ -1362,7 +1368,7 @@ stats dist:
     966367653.. 1073741823: #################                                               189
 ================================================================================
 1 warning(s)
-failure (63 tests failed, 3 tests errored, ran 148 tests)
+failure (64 tests failed, 3 tests errored, ran 149 tests)
 random seed: 153870556
 
 +++ Stats for int_dist_empty_bucket ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
diff --git a/test/core/QCheck_expect_test.expected.64 b/test/core/QCheck_expect_test.expected.ocaml4.64
similarity index 98%
rename from test/core/QCheck_expect_test.expected.64
rename to test/core/QCheck_expect_test.expected.ocaml4.64
index 26cb572..7accc9a 100644
--- a/test/core/QCheck_expect_test.expected.64
+++ b/test/core/QCheck_expect_test.expected.ocaml4.64
@@ -530,6 +530,12 @@ Leaf 0
 
 --- Failure --------------------------------------------------------------------
 
+Test sum list = 0 failed (0 shrink steps):
+
+[7; 1; 42; 1; 8; 5; 3; 9; 5; 38; 3; 3; 0; 1; 98; 1; 4; 13; 9; 2; 6; 9; 47; 6; 5; 8; 8; 6; 0; 9; 7; 2; 8; 6; 62; 6; 4; 31; 19; 1; 41; 60; 6; 5; 8; 1; 1; 4; 7; 7; 0; 5; 5; 71; 14; 26; 47; 5; 1; 6; 34; 9; 4; 2; 37; 3; 8; 4; 31; 6; 2; 1; 0; 7; 5; 1; 0; 15; 6; 1; 8; 13; 0; 6; 2; 4; 2; 6; 6; 1; 4; 1; 9; 79; 0; 87; 6; 8; 8; 62; 1; 4; 62; 6; 31; 1; 5; 6; 5; 9; 3; 3; 1; 79; 4; 3; 2; 67; 5; 7; 12; 70; 8; 8; 6; 1; 3; 14; 15; 1; 61; 4; 1; 4; 1; 7; 4; 4; 4; 2; 8; 8; 7; 5; 4; 27; 0; 9; 80; 25; 1; 8; 1; 3; 7; 4; 3; 5; 5; 6; 5; 5; 31; 7; 0; 3; 3; 6; 71; 76; 28; 60; 6; 2; 6; 3; 0; 4; 1; 0; 5; 7; 0; 28; 86; 4; 7; 51; 36; 0; 5; 0; 1; 4; 3; 6; 0; 1; 1; 8; 18; 4; 2; 8; 8; 1; 4; 7; 1; 0; 93; 5; 3; 0; 80; 1; 7; 7; 8; 8; 5; 7; 8; 9; 24; 4; 25; 8; 8; 5; 4; 90; 4; 6; 8; 4; 4; 0; 60; 8; 9; 7; 44; 5; 1; 2; 9; 74; 7; 7]
+
+--- Failure --------------------------------------------------------------------
+
 Test fail_pred_map_commute failed (77 shrink steps):
 
 ([1], {_ -> 0}, {1 -> true; _ -> false})
@@ -1394,7 +1400,7 @@ stats dist:
    4150517416584649600.. 4611686018427387903: #################                                               189
 ================================================================================
 1 warning(s)
-failure (63 tests failed, 3 tests errored, ran 148 tests)
+failure (64 tests failed, 3 tests errored, ran 149 tests)
 random seed: 153870556
 
 +++ Stats for int_dist_empty_bucket ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
diff --git a/test/core/QCheck_expect_test.expected.ocaml5.32 b/test/core/QCheck_expect_test.expected.ocaml5.32
new file mode 100644
index 0000000..f5ec356
--- /dev/null
+++ b/test/core/QCheck_expect_test.expected.ocaml5.32
@@ -0,0 +1,1409 @@
+random seed: 1234
+45 4 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 (8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+-466273346
+-233136673
+-116568337
+-58284169
+-29142085
+-14571043
+-7285522
+-3642761
+-1821381
+-910691
+-455346
+-227673
+-113837
+-56919
+-28460
+-14230
+-7115
+-3558
+-1779
+-890
+-445
+-223
+-112
+-56
+-28
+-14
+-7
+-4
+-2
+-1
+0
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99; 8; 6; 0; 7; 9; 7; 1; 55; 30; 25; 3; 4; 7; 1; 6; 80; 8; 0; 4; 21; 3; 5; 9; 27; 10; 60; 47; 54; 6; 5; 8; 1; 5; 9; 65; 9; 5; 7; 7; 6; 48; 9; 5; 6; 4; 9; 7; 1; 2; 71; 6; 9; 2; 7; 8; 14; 59; 71; 30; 7; 3; 5; 4; 6; 7; 3; 6; 9; 8; 2; 38; 6; 6; 7; 1; 5; 2; 43; 5; 2; 9; 3; 0; 3; 2; 7; 71; 26; 3; 9; 11; 5; 1; 5; 2; 53; 46; 4; 6; 7; 67; 1; 0; 34; 0; 48; 5; 5; 0; 7; 49; 92; 8; 3; 0; 67; 1; 5; 2; 9; 5; 9; 3; 1; 4; 8; 0; 3; 6; 46; 58; 1; 54; 77; 0; 96; 1; 6; 2; 8; 22; 3; 9; 2; 6; 25; 49; 9; 6; 3; 8; 5; 9; 54; 1; 7; 5; 6; 5; 1; 7; 8; 23; 4; 6; 4; 2; 5; 8; 4; 7; 4]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7]
+[46; 2; 22; 4; 4; 2]
+[46; 2; 22]
+[46; 2]
+[]
+[46]
+[]
+[23]
+[]
+[12]
+[]
+[6]
+[]
+[3]
+[]
+[2]
+[]
+[1]
+[]
+[0]
+[]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99; 8; 6; 0; 7; 9; 7; 1; 55; 30; 25; 3; 4; 7; 1; 6; 80; 8; 0; 4; 21; 3; 5; 9; 27; 10; 60; 47; 54; 6; 5; 8; 1; 5; 9; 65; 9; 5; 7; 7; 6; 48; 9; 5; 6; 4; 9; 7; 1; 2; 71; 6; 9; 2; 7; 8; 14; 59; 71; 30; 7; 3; 5; 4; 6; 7; 3; 6; 9; 8; 2; 38; 6; 6; 7; 1; 5; 2; 43; 5; 2; 9; 3; 0; 3; 2; 7; 71; 26; 3; 9; 11; 5; 1; 5; 2; 53; 46; 4; 6; 7; 67; 1; 0; 34; 0; 48; 5; 5; 0; 7; 49; 92; 8; 3; 0; 67; 1; 5; 2; 9; 5; 9; 3; 1; 4; 8; 0; 3; 6; 46; 58; 1; 54; 77; 0; 96; 1; 6; 2; 8; 22; 3; 9; 2; 6; 25; 49; 9; 6; 3; 8; 5; 9; 54; 1; 7; 5; 6; 5; 1; 7; 8; 23; 4; 6; 4; 2; 5; 8; 4; 7; 4]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7]
+[46; 2; 22; 4; 4; 2]
+[46; 2; 22]
+[46; 2; 4; 4; 2]
+[46; 2; 4]
+[46; 2; 4; 2]
+[46; 2]
+[4; 2]
+[46; 4; 2]
+[2; 4; 2]
+[2; 4]
+[2]
+[2; 2]
+[]
+[2]
+[2]
+[1; 2]
+[2; 1]
+
+--- Failure --------------------------------------------------------------------
+
+Test should_fail_sort_id failed (10 shrink steps):
+
+[1; 0]
+
+=== Error ======================================================================
+
+Test should_error_raise_exn errored on (30 shrink steps):
+
+0
+
+exception QCheck_tests.Overall.Error
+
+
++++ Collect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Collect results for test collect_results:
+
+4: 24 cases
+3: 20 cases
+2: 18 cases
+1: 21 cases
+0: 17 cases
+
++++ Stats for with_stats ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats mod4:
+  num: 100, avg: 1.56, stddev: 1.18, median 2, min 0, max 3
+  0: #################################################                27
+  1: ####################################                             20
+  2: ##########################################                       23
+  3: #######################################################          30
+
+stats num:
+  num: 100, avg: 62.24, stddev: 33.15, median 62, min 2, max 120
+    2..  7: #########                                                         2
+    8.. 13: ################################                                  7
+   14.. 19: ###########################                                       6
+   20.. 25: #############                                                     3
+   26.. 31: ######################                                            5
+   32.. 37: ##################                                                4
+   38.. 43: #############                                                     3
+   44.. 49: ################################                                  7
+   50.. 55: ################################                                  7
+   56.. 61: ######################                                            5
+   62.. 67: ####################################                              8
+   68.. 73: #########                                                         2
+   74.. 79: ######################                                            5
+   80.. 85: #########                                                         2
+   86.. 91: #######################################################          12
+   92.. 97: ######################                                            5
+   98..103: ##################                                                4
+  104..109: ##################                                                4
+  110..115: #############                                                     3
+  116..121: ###########################                                       6
+
+--- Failure --------------------------------------------------------------------
+
+Test with shrinking retries failed (0 shrink steps):
+
+4
+
+!!! Warning !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+Warning for test WARN_unlikely_precond:
+
+WARNING: only 0.5% tests (of 2000) passed precondition for "WARN_unlikely_precond"
+
+NOTE: it is likely that the precondition is too strong, or that the generator is buggy.
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_unlikely_precond failed:
+
+ERROR: only 0.5% tests (of 2000) passed precondition for "FAIL_unlikely_precond"
+
+NOTE: it is likely that the precondition is too strong, or that the generator is buggy.
+
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_bad_gen failed:
+
+ERROR: uncaught exception in generator for test FAIL_bad_gen after 100 steps:
+Exception: Invalid_argument("Gen.int_bound")
+Backtrace: 
+
+--- Failure --------------------------------------------------------------------
+
+Test int double failed:
+
+Negative test int double succeeded but was expected to fail
+
+=== Error ======================================================================
+
+Test pos fail with error errored on (7 shrink steps):
+
+0
+
+exception QCheck_tests.Overall.Error
+
+
+=== Error ======================================================================
+
+Test neg fail with error errored on (7 shrink steps):
+
+0
+
+exception QCheck_tests.Overall.Error
+
+
+--- Failure --------------------------------------------------------------------
+
+Test char never produces '\255' failed (0 shrink steps):
+
+'\255'
+
+--- Failure --------------------------------------------------------------------
+
+Test big bound issue59 failed (20 shrink steps):
+
+209609
+
+--- Failure --------------------------------------------------------------------
+
+Test long_shrink failed (86 shrink steps):
+
+([0], [-1])
+
+--- Failure --------------------------------------------------------------------
+
+Test ints arent 0 mod 3 failed (26 shrink steps):
+
+2061
+
+--- Failure --------------------------------------------------------------------
+
+Test ints are 0 failed (29 shrink steps):
+
+-1
+
+--- Failure --------------------------------------------------------------------
+
+Test ints < 209609 failed (20 shrink steps):
+
+209609
+
+--- Failure --------------------------------------------------------------------
+
+Test nat < 5001 failed (4 shrink steps):
+
+5001
+
+--- Failure --------------------------------------------------------------------
+
+Test char never produces 'abcdef' failed (2 shrink steps):
+
+'a'
+
+--- Failure --------------------------------------------------------------------
+
+Test printable never produces '!"#$%&' failed (1 shrink steps):
+
+'&'
+
+--- Failure --------------------------------------------------------------------
+
+Test printable never produces less than '5 failed (0 shrink steps):
+
+'0'
+
+--- Failure --------------------------------------------------------------------
+
+Test bytes are empty failed (13 shrink steps):
+
+a
+
+--- Failure --------------------------------------------------------------------
+
+Test bytes never has a \000 char failed (13 shrink steps):
+
+
+
+--- Failure --------------------------------------------------------------------
+
+Test bytes never has a \255 char failed (15 shrink steps):
+
+�
+
+--- Failure --------------------------------------------------------------------
+
+Test bytes have unique chars failed (14 shrink steps):
+
+��
+
+--- Failure --------------------------------------------------------------------
+
+Test strings are empty failed (13 shrink steps):
+
+"a"
+
+--- Failure --------------------------------------------------------------------
+
+Test string never has a \000 char failed (13 shrink steps):
+
+"\000"
+
+--- Failure --------------------------------------------------------------------
+
+Test string never has a \255 char failed (15 shrink steps):
+
+"\255"
+
+--- Failure --------------------------------------------------------------------
+
+Test strings have unique chars failed (14 shrink steps):
+
+"\232\232"
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs have different components failed (0 shrink steps):
+
+(6, 6)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs have same components failed (59 shrink steps):
+
+(0, -1)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs have a zero component failed (58 shrink steps):
+
+(-1, -1)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs are (0,0) failed (59 shrink steps):
+
+(0, -1)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs are ordered failed (169 shrink steps):
+
+(1, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs are ordered reversely failed (58 shrink steps):
+
+(0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs sum to less than 128 failed (54 shrink steps):
+
+(0, 128)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs lists rev concat failed (77 shrink steps):
+
+([0], [1])
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs lists no overlap failed (24 shrink steps):
+
+([0], [0])
+
+--- Failure --------------------------------------------------------------------
+
+Test triples have pair-wise different components failed (4 shrink steps):
+
+(6, 6, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test triples have same components failed (85 shrink steps):
+
+(0, -1, -2)
+
+--- Failure --------------------------------------------------------------------
+
+Test triples are ordered failed (87 shrink steps):
+
+(0, 0, -1)
+
+--- Failure --------------------------------------------------------------------
+
+Test triples are ordered reversely failed (89 shrink steps):
+
+(0, 0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test quadruples have pair-wise different components failed (7 shrink steps):
+
+(0, 5, 5, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test quadruples have same components failed (117 shrink steps):
+
+(0, 1, 0, -1)
+
+--- Failure --------------------------------------------------------------------
+
+Test quadruples are ordered failed (118 shrink steps):
+
+(0, 0, 0, -1)
+
+--- Failure --------------------------------------------------------------------
+
+Test quadruples are ordered reversely failed (120 shrink steps):
+
+(0, 0, 0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b) in nat: a < b failed (5 shrink steps):
+
+(0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c) in nat: a < b < c failed (14 shrink steps):
+
+(0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d) in nat: a < b < c < d failed (17 shrink steps):
+
+(0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e) in nat: a < b < c < d < e failed (21 shrink steps):
+
+(0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e, f) in nat: a < b < c < d < e < f failed (25 shrink steps):
+
+(0, 0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e, f, g) in nat: a < b < c < d < e < f < g failed (27 shrink steps):
+
+(0, 0, 0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e, f, g, h) in nat: a < b < c < d < e < f < g < h failed (30 shrink steps):
+
+(0, 0, 0, 0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e, f, g, h, i) in nat: a < b < c < d < e < f < g < h < i failed (34 shrink steps):
+
+(0, 0, 0, 0, 0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test bind ordered pairs failed (53 shrink steps):
+
+(0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test bind list_size constant failed (52 shrink steps):
+
+(4, [0; 0; 0; 0])
+
+--- Failure --------------------------------------------------------------------
+
+Test lists are empty failed (16 shrink steps):
+
+[0]
+
+--- Failure --------------------------------------------------------------------
+
+Test lists shorter than 10 failed (49 shrink steps):
+
+[0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
+
+--- Failure --------------------------------------------------------------------
+
+Test lists shorter than 432 failed (1738 shrink steps):
+
+[...] list length: 432
+
+--- Failure --------------------------------------------------------------------
+
+Test lists shorter than 4332 failed (11 shrink steps):
+
+[...] list length: 4332
+
+--- Failure --------------------------------------------------------------------
+
+Test lists have unique elems failed (10 shrink steps):
+
+[2; 2]
+
+--- Failure --------------------------------------------------------------------
+
+Test tree contains only 42 failed (9 shrink steps):
+
+Leaf 0
+
+--- Failure --------------------------------------------------------------------
+
+Test sum list = 0 failed (0 shrink steps):
+
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99; 8; 6; 0; 7; 9; 7; 1; 55; 30; 25; 3; 4; 7; 1; 6; 80; 8; 0; 4; 21; 3; 5; 9; 27; 10; 60; 47; 54; 6; 5; 8; 1; 5; 9; 65; 9; 5; 7; 7; 6; 48; 9; 5; 6; 4; 9; 7; 1; 2; 71; 6; 9; 2; 7; 8; 14; 59; 71; 30; 7; 3; 5; 4; 6; 7; 3; 6; 9; 8; 2; 38; 6; 6; 7; 1; 5; 2; 43; 5; 2; 9; 3; 0; 3; 2; 7; 71; 26; 3; 9; 11; 5; 1; 5; 2; 53; 46; 4; 6; 7; 67; 1; 0; 34; 0; 48; 5; 5; 0; 7; 49; 92; 8; 3; 0; 67; 1; 5; 2; 9; 5; 9; 3; 1; 4; 8; 0; 3; 6; 46; 58; 1; 54; 77; 0; 96; 1; 6; 2; 8; 22; 3; 9; 2; 6; 25; 49; 9; 6; 3; 8; 5; 9; 54; 1; 7; 5; 6; 5; 1; 7; 8; 23; 4; 6; 4; 2; 5; 8; 4; 7; 4]
+
+--- Failure --------------------------------------------------------------------
+
+Test fail_pred_map_commute failed (47 shrink steps):
+
+([1], {_ -> 0}, {1 -> true; _ -> false})
+
+--- Failure --------------------------------------------------------------------
+
+Test fail_pred_strings failed (1 shrink steps):
+
+{some other string -> false; _ -> true}
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left fold_right failed (21 shrink steps):
+
+(0, [1], {(0, 1) -> 1; _ -> 0})
+
++++ Messages ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Messages for test fold_left fold_right:
+
+l=[1], fold_left=0, fold_right=1
+
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left fold_right uncurried failed (41 shrink steps):
+
+({(0, 4) -> 1; _ -> 0}, 0, [4])
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left fold_right uncurried fun last failed (25 shrink steps):
+
+(0, [1], {(0, 1) -> 1; _ -> 0})
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left test, fun first failed (66 shrink steps):
+
+({(, 2) -> "a"; _ -> ""}, "", [], [2])
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_#99_1 failed:
+
+ERROR: uncaught exception in generator for test FAIL_#99_1 after 100 steps:
+Exception: QCheck.No_example_found("<example>")
+Backtrace: 
+
++++ Collect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Collect results for test bool dist:
+
+true: 250511 cases
+false: 249489 cases
+
++++ Stats for char code dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats char code:
+  num: 500000, avg: 127.68, stddev: 73.87, median 128, min 0, max 255
+    0.. 12: #####################################################         25272
+   13.. 25: ######################################################        25326
+   26.. 38: #####################################################         25194
+   39.. 51: ######################################################        25359
+   52.. 64: ######################################################        25338
+   65.. 77: ######################################################        25349
+   78.. 90: ######################################################        25397
+   91..103: #####################################################         25243
+  104..116: ######################################################        25420
+  117..129: ######################################################        25438
+  130..142: ######################################################        25346
+  143..155: #####################################################         25177
+  156..168: #######################################################       25755
+  169..181: ######################################################        25408
+  182..194: ######################################################        25633
+  195..207: ######################################################        25613
+  208..220: ######################################################        25459
+  221..233: ######################################################        25322
+  234..246: #####################################################         25229
+  247..259: #####################################                         17722
+
++++ Stats for printable char code dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats char code:
+  num: 500000, avg: 77.76, stddev: 27.87, median 78, min 10, max 125
+   10.. 15: #########                                                      5255
+   16.. 21:                                                                   0
+   22.. 27:                                                                   0
+   28.. 33: #################                                             10417
+   34.. 39: ######################################################        31730
+   40.. 45: ######################################################        31499
+   46.. 51: ######################################################        31657
+   52.. 57: ######################################################        31704
+   58.. 63: ######################################################        31502
+   64.. 69: ######################################################        31643
+   70.. 75: ######################################################        31630
+   76.. 81: ######################################################        31481
+   82.. 87: ######################################################        31594
+   88.. 93: ######################################################        31817
+   94.. 99: ######################################################        31536
+  100..105: ######################################################        31528
+  106..111: ######################################################        31467
+  112..117: #####################################################         31246
+  118..123: #######################################################       31861
+  124..129: ##################                                            10433
+
++++ Stats for numeral char code dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats char code:
+  num: 500000, avg: 52.50, stddev: 2.87, median 53, min 48, max 57
+  48: ######################################################        49848
+  49: ######################################################        50118
+  50: ######################################################        49837
+  51: ######################################################        50252
+  52: ######################################################        49765
+  53: #######################################################       50369
+  54: ######################################################        50270
+  55: ######################################################        49885
+  56: ######################################################        49821
+  57: ######################################################        49835
+
++++ Stats for tree's depth ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats depth:
+  num: 1000, avg: 4.13, stddev: 3.52, median 3, min 1, max 15
+   1: #######################################################         339
+   2: ################                                                104
+   3: ###############                                                  98
+   4: #####################                                           133
+   5: #########                                                        60
+   6: ####                                                             29
+   7: ########                                                         54
+   8: #######                                                          48
+   9: ##                                                               16
+  10: ###                                                              21
+  11: ###########                                                      68
+  12:                                                                   1
+  13: #                                                                 8
+  14: ##                                                               16
+  15:                                                                   5
+
++++ Stats for range_subset_spec ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 5000, avg: 9.99, stddev: 6.01, median 10, min 0, max 20
+   0: ###############################################                 231
+   1: ##############################################                  223
+   2: #####################################################           258
+   3: ################################################                233
+   4: ###############################################                 228
+   5: ###############################################                 231
+   6: ####################################################            254
+   7: ###############################################                 228
+   8: ####################################################            254
+   9: #######################################################         266
+  10: ##############################################                  224
+  11: ##################################################              245
+  12: ###############################################                 230
+  13: ####################################################            253
+  14: ##############################################                  223
+  15: #################################################               239
+  16: ##################################################              243
+  17: ##################################################              245
+  18: #############################################                   220
+  19: ##################################################              242
+  20: ###############################################                 230
+
++++ Stats for bytes_size len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 7.51, stddev: 1.69, median 8, min 5, max 10
+   5: ##################################################              817
+   6: #################################################               797
+   7: #######################################################         885
+   8: ###################################################             834
+   9: ######################################################          877
+  10: #################################################               790
+
++++ Stats for bytes len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 370.05, stddev: 1282.91, median 9, min 0, max 9947
+     0.. 497: #######################################################        4270
+   498.. 995: ######                                                          497
+   996..1493:                                                                  17
+  1494..1991:                                                                   9
+  1992..2489:                                                                  13
+  2490..2987:                                                                  13
+  2988..3485:                                                                   9
+  3486..3983:                                                                  14
+  3984..4481:                                                                  14
+  4482..4979:                                                                  17
+  4980..5477:                                                                   9
+  5478..5975:                                                                  10
+  5976..6473:                                                                  15
+  6474..6971:                                                                  16
+  6972..7469:                                                                  16
+  7470..7967:                                                                   9
+  7968..8465:                                                                  12
+  8466..8963:                                                                  15
+  8964..9461:                                                                   9
+  9462..9959:                                                                  16
+
++++ Stats for bytes_of len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 359.22, stddev: 1249.46, median 9, min 0, max 9958
+     0.. 497: #######################################################        4275
+   498.. 995: ######                                                          479
+   996..1493:                                                                  22
+  1494..1991:                                                                  12
+  1992..2489:                                                                  21
+  2490..2987:                                                                  16
+  2988..3485:                                                                  13
+  3486..3983:                                                                  17
+  3984..4481:                                                                  14
+  4482..4979:                                                                  14
+  4980..5477:                                                                   8
+  5478..5975:                                                                  14
+  5976..6473:                                                                  13
+  6474..6971:                                                                   9
+  6972..7469:                                                                   7
+  7470..7967:                                                                  17
+  7968..8465:                                                                  13
+  8466..8963:                                                                  15
+  8964..9461:                                                                  10
+  9462..9959:                                                                  11
+
++++ Stats for bytes_small len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 15.99, stddev: 24.58, median 6, min 0, max 99
+    0..  4: ######################################################         1920
+    5..  9: #######################################################        1929
+   10.. 14: #                                                                69
+   15.. 19: #                                                                62
+   20.. 24: #                                                                63
+   25.. 29: #                                                                59
+   30.. 34: #                                                                68
+   35.. 39: #                                                                62
+   40.. 44: #                                                                57
+   45.. 49: ##                                                               83
+   50.. 54: #                                                                59
+   55.. 59: ##                                                               80
+   60.. 64: #                                                                48
+   65.. 69: #                                                                53
+   70.. 74: #                                                                61
+   75.. 79: #                                                                66
+   80.. 84: #                                                                61
+   85.. 89: ##                                                               72
+   90.. 94: #                                                                66
+   95.. 99: #                                                                62
+
++++ Stats for string_size len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 7.51, stddev: 1.69, median 8, min 5, max 10
+   5: ##################################################              817
+   6: #################################################               797
+   7: #######################################################         885
+   8: ###################################################             834
+   9: ######################################################          877
+  10: #################################################               790
+
++++ Stats for string len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 370.05, stddev: 1282.91, median 9, min 0, max 9947
+     0.. 497: #######################################################        4270
+   498.. 995: ######                                                          497
+   996..1493:                                                                  17
+  1494..1991:                                                                   9
+  1992..2489:                                                                  13
+  2490..2987:                                                                  13
+  2988..3485:                                                                   9
+  3486..3983:                                                                  14
+  3984..4481:                                                                  14
+  4482..4979:                                                                  17
+  4980..5477:                                                                   9
+  5478..5975:                                                                  10
+  5976..6473:                                                                  15
+  6474..6971:                                                                  16
+  6972..7469:                                                                  16
+  7470..7967:                                                                   9
+  7968..8465:                                                                  12
+  8466..8963:                                                                  15
+  8964..9461:                                                                   9
+  9462..9959:                                                                  16
+
++++ Stats for string_of len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 359.22, stddev: 1249.46, median 9, min 0, max 9958
+     0.. 497: #######################################################        4275
+   498.. 995: ######                                                          479
+   996..1493:                                                                  22
+  1494..1991:                                                                  12
+  1992..2489:                                                                  21
+  2490..2987:                                                                  16
+  2988..3485:                                                                  13
+  3486..3983:                                                                  17
+  3984..4481:                                                                  14
+  4482..4979:                                                                  14
+  4980..5477:                                                                   8
+  5478..5975:                                                                  14
+  5976..6473:                                                                  13
+  6474..6971:                                                                   9
+  6972..7469:                                                                   7
+  7470..7967:                                                                  17
+  7968..8465:                                                                  13
+  8466..8963:                                                                  15
+  8964..9461:                                                                  10
+  9462..9959:                                                                  11
+
++++ Stats for printable_string len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 370.05, stddev: 1282.91, median 9, min 0, max 9947
+     0.. 497: #######################################################        4270
+   498.. 995: ######                                                          497
+   996..1493:                                                                  17
+  1494..1991:                                                                   9
+  1992..2489:                                                                  13
+  2490..2987:                                                                  13
+  2988..3485:                                                                   9
+  3486..3983:                                                                  14
+  3984..4481:                                                                  14
+  4482..4979:                                                                  17
+  4980..5477:                                                                   9
+  5478..5975:                                                                  10
+  5976..6473:                                                                  15
+  6474..6971:                                                                  16
+  6972..7469:                                                                  16
+  7470..7967:                                                                   9
+  7968..8465:                                                                  12
+  8466..8963:                                                                  15
+  8964..9461:                                                                   9
+  9462..9959:                                                                  16
+
++++ Stats for small_string len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 15.99, stddev: 24.58, median 6, min 0, max 99
+    0..  4: ######################################################         1920
+    5..  9: #######################################################        1929
+   10.. 14: #                                                                69
+   15.. 19: #                                                                62
+   20.. 24: #                                                                63
+   25.. 29: #                                                                59
+   30.. 34: #                                                                68
+   35.. 39: #                                                                62
+   40.. 44: #                                                                57
+   45.. 49: ##                                                               83
+   50.. 54: #                                                                59
+   55.. 59: ##                                                               80
+   60.. 64: #                                                                48
+   65.. 69: #                                                                53
+   70.. 74: #                                                                61
+   75.. 79: #                                                                66
+   80.. 84: #                                                                61
+   85.. 89: ##                                                               72
+   90.. 94: #                                                                66
+   95.. 99: #                                                                62
+
++++ Stats for pair dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats pair sum:
+  num: 500000, avg: 100.05, stddev: 41.29, median 100, min 0, max 200
+    0..  9: ###                                                            2618
+   10.. 19: ########                                                       7630
+   20.. 29: ##############                                                12505
+   30.. 39: ####################                                          17451
+   40.. 49: ##########################                                    22280
+   50.. 59: ###############################                               27307
+   60.. 69: #####################################                         32151
+   70.. 79: ###########################################                   37199
+   80.. 89: #################################################             41901
+   90.. 99: ######################################################        46313
+  100..109: #######################################################       46965
+  110..119: #################################################             42462
+  120..129: ###########################################                   37348
+  130..139: ######################################                        32613
+  140..149: ################################                              27606
+  150..159: ###########################                                   23221
+  160..169: #####################                                         18125
+  170..179: ###############                                               12890
+  180..189: #########                                                      8059
+  190..199: ###                                                            3297
+  200..209:                                                                  59
+
++++ Stats for triple dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats triple sum:
+  num: 500000, avg: 150.04, stddev: 50.53, median 150, min 1, max 300
+    1.. 15:                                                                 360
+   16.. 30: ##                                                             2261
+   31.. 45: #####                                                          5712
+   46.. 60: ##########                                                    10854
+   61.. 75: #################                                             17760
+   76.. 90: ##########################                                    26151
+   91..105: ###################################                           36079
+  106..120: #############################################                 45498
+  121..135: ###################################################           51977
+  136..150: #######################################################       55179
+  151..165: ######################################################        54821
+  166..180: ###################################################           51709
+  181..195: #############################################                 45166
+  196..210: ###################################                           35354
+  211..225: #########################                                     25436
+  226..240: #################                                             17179
+  241..255: ##########                                                    10652
+  256..270: #####                                                          5447
+  271..285: ##                                                             2065
+  286..300:                                                                 340
+
++++ Stats for quad dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats quad sum:
+  num: 500000, avg: 200.06, stddev: 58.39, median 200, min 2, max 394
+    2.. 21:                                                                  61
+   22.. 41:                                                                 658
+   42.. 61: ##                                                             2534
+   62.. 81: #####                                                          6444
+   82..101: ###########                                                   13334
+  102..121: ###################                                           23279
+  122..141: ##############################                                35888
+  142..161: #########################################                     48824
+  162..181: ##################################################            59008
+  182..201: #######################################################       64896
+  202..221: ######################################################        64051
+  222..241: #################################################             57864
+  242..261: #######################################                       46793
+  262..281: ############################                                  33955
+  282..301: ##################                                            21775
+  302..321: ##########                                                    12187
+  322..341: ####                                                           5645
+  342..361: #                                                              2244
+  362..381:                                                                 529
+  382..401:                                                                  31
+
++++ Stats for bind dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats ordered pair difference:
+  num: 1000000, avg: 25.01, stddev: 22.38, median 19, min 0, max 100
+    0..  4: #######################################################      193610
+    5..  9: ####################################                         130051
+   10.. 14: #############################                                104209
+   15.. 19: ########################                                      86993
+   20.. 24: #####################                                         74295
+   25.. 29: ##################                                            64874
+   30.. 34: ################                                              56447
+   35.. 39: ##############                                                49416
+   40.. 44: ############                                                  43051
+   45.. 49: ##########                                                    37580
+   50.. 54: #########                                                     32378
+   55.. 59: ########                                                      28558
+   60.. 64: ######                                                        23971
+   65.. 69: #####                                                         20146
+   70.. 74: ####                                                          16446
+   75.. 79: ###                                                           13215
+   80.. 84: ##                                                            10294
+   85.. 89: ##                                                             7639
+   90.. 94: #                                                              4698
+   95.. 99:                                                                2041
+  100..104:                                                                  88
+
+stats ordered pair sum:
+  num: 1000000, avg: 74.97, stddev: 46.86, median 72, min 0, max 200
+    0..  9: #######################################################       70320
+   10.. 19: #####################################################         68731
+   20.. 29: #####################################################         68374
+   30.. 39: #####################################################         68544
+   40.. 49: #####################################################         68756
+   50.. 59: #####################################################         68837
+   60.. 69: #####################################################         68759
+   70.. 79: #####################################################         68517
+   80.. 89: #####################################################         68692
+   90.. 99: ######################################################        69123
+  100..109: ##################################################            64777
+  110..119: ###########################################                   55288
+  120..129: ####################################                          47156
+  130..139: ###############################                               39635
+  140..149: #########################                                     32590
+  150..159: ####################                                          25685
+  160..169: ###############                                               19842
+  170..179: ##########                                                    14038
+  180..189: ######                                                         8631
+  190..199: ##                                                             3580
+  200..209:                                                                 125
+
++++ Stats for list len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 374.46, stddev: 1320.15, median 9, min 0, max 9984
+      0..  499: #######################################################        4269
+    500..  999: ######                                                          503
+   1000.. 1499:                                                                  13
+   1500.. 1999:                                                                   6
+   2000.. 2499:                                                                  22
+   2500.. 2999:                                                                  13
+   3000.. 3499:                                                                  10
+   3500.. 3999:                                                                   5
+   4000.. 4499:                                                                  15
+   4500.. 4999:                                                                  10
+   5000.. 5499:                                                                  15
+   5500.. 5999:                                                                  12
+   6000.. 6499:                                                                   6
+   6500.. 6999:                                                                  12
+   7000.. 7499:                                                                  11
+   7500.. 7999:                                                                  15
+   8000.. 8499:                                                                  21
+   8500.. 8999:                                                                  11
+   9000.. 9499:                                                                  15
+   9500.. 9999:                                                                  16
+
++++ Stats for small_list len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 15.36, stddev: 23.76, median 6, min 0, max 99
+    0..  4: ######################################################         1933
+    5..  9: #######################################################        1962
+   10.. 14: #                                                                69
+   15.. 19: #                                                                57
+   20.. 24: #                                                                51
+   25.. 29: #                                                                62
+   30.. 34: #                                                                63
+   35.. 39: #                                                                65
+   40.. 44: ##                                                               77
+   45.. 49: #                                                                71
+   50.. 54: #                                                                56
+   55.. 59: #                                                                60
+   60.. 64: #                                                                66
+   65.. 69: #                                                                65
+   70.. 74: #                                                                69
+   75.. 79: #                                                                48
+   80.. 84: #                                                                53
+   85.. 89: #                                                                58
+   90.. 94: #                                                                64
+   95.. 99: #                                                                51
+
++++ Stats for list_of_size len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 7.50, stddev: 1.71, median 8, min 5, max 10
+   5: ######################################################          853
+   6: ####################################################            819
+   7: ####################################################            820
+   8: ####################################################            825
+   9: #######################################################         857
+  10: #####################################################           826
+
++++ Stats for list_repeat len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 42.00, stddev: 0.00, median 42, min 42, max 42
+  42: #######################################################        5000
+
++++ Stats for array len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 374.46, stddev: 1320.15, median 9, min 0, max 9984
+      0..  499: #######################################################        4269
+    500..  999: ######                                                          503
+   1000.. 1499:                                                                  13
+   1500.. 1999:                                                                   6
+   2000.. 2499:                                                                  22
+   2500.. 2999:                                                                  13
+   3000.. 3499:                                                                  10
+   3500.. 3999:                                                                   5
+   4000.. 4499:                                                                  15
+   4500.. 4999:                                                                  10
+   5000.. 5499:                                                                  15
+   5500.. 5999:                                                                  12
+   6000.. 6499:                                                                   6
+   6500.. 6999:                                                                  12
+   7000.. 7499:                                                                  11
+   7500.. 7999:                                                                  15
+   8000.. 8499:                                                                  21
+   8500.. 8999:                                                                  11
+   9000.. 9499:                                                                  15
+   9500.. 9999:                                                                  16
+
++++ Stats for small_array len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 15.36, stddev: 23.76, median 6, min 0, max 99
+    0..  4: ######################################################         1933
+    5..  9: #######################################################        1962
+   10.. 14: #                                                                69
+   15.. 19: #                                                                57
+   20.. 24: #                                                                51
+   25.. 29: #                                                                62
+   30.. 34: #                                                                63
+   35.. 39: #                                                                65
+   40.. 44: ##                                                               77
+   45.. 49: #                                                                71
+   50.. 54: #                                                                56
+   55.. 59: #                                                                60
+   60.. 64: #                                                                66
+   65.. 69: #                                                                65
+   70.. 74: #                                                                69
+   75.. 79: #                                                                48
+   80.. 84: #                                                                53
+   85.. 89: #                                                                58
+   90.. 94: #                                                                64
+   95.. 99: #                                                                51
+
++++ Stats for array_of_size len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 7.50, stddev: 1.71, median 8, min 5, max 10
+   5: ######################################################          853
+   6: ####################################################            819
+   7: ####################################################            820
+   8: ####################################################            825
+   9: #######################################################         857
+  10: #####################################################           826
+
++++ Stats for array_repeat len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+  num: 5000, avg: 42.00, stddev: 0.00, median 42, min 42, max 42
+  42: #######################################################        5000
+
++++ Stats for int_stats_neg ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 5000, avg: 0.43, stddev: 28.63, median 0, min -99, max 99
+  -99..-90: #                                                                45
+  -89..-80: #                                                                57
+  -79..-70: #                                                                68
+  -69..-60: #                                                                58
+  -59..-50: #                                                                76
+  -49..-40: #                                                                67
+  -39..-30: #                                                                52
+  -29..-20: #                                                                54
+  -19..-10: #                                                                47
+   -9..  0: #######################################################        2205
+    1.. 10: ##########################################                     1697
+   11.. 20: #                                                                57
+   21.. 30: #                                                                70
+   31.. 40: #                                                                60
+   41.. 50: #                                                                66
+   51.. 60: #                                                                75
+   61.. 70: #                                                                68
+   71.. 80: #                                                                63
+   81.. 90: #                                                                66
+   91..100: #                                                                49
+
++++ Stats for small_signed_int dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: 0.86, stddev: 29.11, median 0, min -97, max 99
+  -97..-88: #                                                                12
+  -87..-78: #                                                                12
+  -77..-68: #                                                                13
+  -67..-58: #                                                                12
+  -57..-48: #                                                                 9
+  -47..-38: ##                                                               17
+  -37..-28: #                                                                13
+  -27..-18: #                                                                 8
+  -17.. -8: #########                                                        76
+   -7..  2: #######################################################         437
+    3.. 12: ##################################                              276
+   13.. 22: ##                                                               16
+   23.. 32: #                                                                11
+   33.. 42: ##                                                               16
+   43.. 52: #                                                                 9
+   53.. 62: #                                                                12
+   63.. 72: #                                                                14
+   73.. 82: #                                                                12
+   83.. 92: #                                                                13
+   93..102: #                                                                12
+
++++ Stats for small_nat dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: 15.86, stddev: 24.57, median 6, min 0, max 99
+    0..  4: ######################################################          387
+    5..  9: #######################################################         390
+   10.. 14: #                                                                11
+   15.. 19: #                                                                 8
+   20.. 24: #                                                                11
+   25.. 29: ##                                                               15
+   30.. 34: #                                                                 9
+   35.. 39: #                                                                11
+   40.. 44: #                                                                11
+   45.. 49: ##                                                               19
+   50.. 54: #                                                                10
+   55.. 59: ##                                                               19
+   60.. 64: #                                                                 9
+   65.. 69: #                                                                 9
+   70.. 74: ##                                                               19
+   75.. 79: #                                                                13
+   80.. 84: #                                                                11
+   85.. 89: ##                                                               16
+   90.. 94: #                                                                 9
+   95.. 99: #                                                                13
+
++++ Stats for nat dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: 382.03, stddev: 1290.55, median 9, min 0, max 9890
+     0.. 494: #######################################################         850
+   495.. 989: ######                                                           93
+   990..1484:                                                                   8
+  1485..1979:                                                                   3
+  1980..2474:                                                                   7
+  2475..2969:                                                                   1
+  2970..3464:                                                                   3
+  3465..3959:                                                                   3
+  3960..4454:                                                                   3
+  4455..4949:                                                                   4
+  4950..5444:                                                                   3
+  5445..5939:                                                                   3
+  5940..6434:                                                                   3
+  6435..6929:                                                                   1
+  6930..7424:                                                                   2
+  7425..7919:                                                                   1
+  7920..8414:                                                                   1
+  8415..8909:                                                                   5
+  8910..9404:                                                                   3
+  9405..9899:                                                                   3
+
++++ Stats for int_range (-43643) 435434 dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: 193479.13, stddev: 136696.70, median 189823, min -43164, max 434961
+  -43164..-19258: ###################################                              42
+  -19257..  4649: ##############################################                   56
+    4650.. 28556: #############################################                    55
+   28557.. 52463: ###############################################                  57
+   52464.. 76370: #########################################                        50
+   76371..100277: #############################                                    35
+  100278..124184: ###############################################                  57
+  124185..148091: ####################################                             44
+  148092..171998: ##############################################                   56
+  171999..195905: #######################################################          66
+  195906..219812: ###########################################                      52
+  219813..243719: ########################################                         49
+  243720..267626: ################################                                 39
+  267627..291533: #####################################                            45
+  291534..315440: #####################################                            45
+  315441..339347: #################################################                59
+  339348..363254: ##################################################               60
+  363255..387161: #################################                                40
+  387162..411068: ##########################################                       51
+  411069..434975: ###################################                              42
+
++++ Stats for int_range (-40000) 40000 dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: -591.06, stddev: 23026.79, median -911, min -39911, max 39959
+  -39911..-35918: #######################################                          45
+  -35917..-31924: ####################################################             59
+  -31923..-27930: ###########################################                      49
+  -27929..-23936: ##########################################                       48
+  -23935..-19942: #######################################################          62
+  -19941..-15948: #############################################                    51
+  -15947..-11954: #########################################                        47
+  -11953.. -7960: #################################################                56
+   -7959.. -3966: ###################################                              40
+   -3965..    28: ###################################################              58
+      29..  4022: ###########################################                      49
+    4023..  8016: ###############################################                  53
+    8017.. 12010: ############################################                     50
+   12011.. 16004: ###################################                              40
+   16005.. 19998: #######################################                          44
+   19999.. 23992: #######################################################          62
+   23993.. 27986: #####################################                            42
+   27987.. 31980: #########################################                        47
+   31981.. 35974: ##########################################                       48
+   35975.. 39968: ############################################                     50
+
++++ Stats for int_range (-4) 4 dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: -0.12, stddev: 2.52, median 0, min -4, max 4
+  -4: ##########################################                      116
+  -3: ######################################                          103
+  -2: ##############################################                  125
+  -1: ##########################################                      115
+   0: #######################################                         106
+   1: #######################################################         149
+   2: #################################                                92
+   3: #################################                                92
+   4: #####################################                           102
+
++++ Stats for int_range (-4) 17 dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: 6.42, stddev: 6.43, median 6, min -4, max 17
+  -4..-3: ###########################################                      89
+  -2..-1: #################################################               101
+   0.. 1: ##############################################                   95
+   2.. 3: ###########################################                      89
+   4.. 5: ##############################################                   95
+   6.. 7: #####################################                            78
+   8.. 9: #######################################                          81
+  10..11: ########################################                         84
+  12..13: #######################################################         113
+  14..15: ########################################                         84
+  16..17: ############################################                     91
+  18..19:                                                                   0
+  20..21:                                                                   0
+  22..23:                                                                   0
+  24..25:                                                                   0
+  26..27:                                                                   0
+  28..29:                                                                   0
+  30..31:                                                                   0
+  32..33:                                                                   0
+  34..35:                                                                   0
+
++++ Stats for int dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 100000, avg: -2481754.31, stddev: 618398387.27, median -5669677, min -1073719962, max 1073717275
+  -1073719962.. -966348101: #####################################################          4978
+   -966348100.. -858976239: #####################################################          5008
+   -858976238.. -751604377: ####################################################           4907
+   -751604376.. -644232515: ######################################################         5037
+   -644232514.. -536860653: ######################################################         5069
+   -536860652.. -429488791: ######################################################         5052
+   -429488790.. -322116929: ######################################################         5035
+   -322116928.. -214745067: #######################################################        5128
+   -214745066.. -107373205: #####################################################          5017
+   -107373204..      -1343: #####################################################          5021
+        -1342..  107370519: #####################################################          5010
+    107370520..  214742381: #####################################################          4964
+    214742382..  322114243: #####################################################          4957
+    322114244..  429486105: #####################################################          4994
+    429486106..  536857967: #####################################################          5025
+    536857968..  644229829: ######################################################         5047
+    644229830..  751601691: #####################################################          4988
+    751601692..  858973553: ####################################################           4924
+    858973554..  966345415: ####################################################           4852
+    966345416.. 1073717277: #####################################################          4987
+
++++ Stats for oneof int dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: 1073741.60, stddev: 673131652.31, median 0, min -1073741824, max 1073741823
+  -1073741824.. -966367642: #################                                               198
+   -966367641.. -858993459:                                                                   0
+   -858993458.. -751619276:                                                                   0
+   -751619275.. -644245093:                                                                   0
+   -644245092.. -536870910:                                                                   0
+   -536870909.. -429496727:                                                                   0
+   -429496726.. -322122544:                                                                   0
+   -322122543.. -214748361:                                                                   0
+   -214748360.. -107374178:                                                                   0
+   -107374177..          5: #######################################################         607
+            6..  107374188:                                                                   0
+    107374189..  214748371:                                                                   0
+    214748372..  322122554:                                                                   0
+    322122555..  429496737:                                                                   0
+    429496738..  536870920:                                                                   0
+    536870921..  644245103:                                                                   0
+    644245104..  751619286:                                                                   0
+    751619287..  858993469:                                                                   0
+    858993470..  966367652:                                                                   0
+    966367653.. 1073741823: #################                                               195
+================================================================================
+1 warning(s)
+failure (64 tests failed, 3 tests errored, ran 149 tests)
+random seed: 153870556
+
++++ Stats for int_dist_empty_bucket ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+  num: 1000, avg: -20587725.59, stddev: 427231078.01, median 8, min -1072292884, max 1073741823
+  -1072292884.. -964991149: ##                                                               26
+   -964991148.. -857689413: ###                                                              31
+   -857689412.. -750387677: ##                                                               22
+   -750387676.. -643085941: ##                                                               22
+   -643085940.. -535784205: ##                                                               27
+   -535784204.. -428482469: ###                                                              30
+   -428482468.. -321180733: ##                                                               29
+   -321180732.. -213878997: ##                                                               20
+   -213878996.. -106577261: ##                                                               20
+   -106577260..     724475: #######################################################         543
+       724476..  108026211: ##                                                               22
+    108026212..  215327947: ##                                                               22
+    215327948..  322629683: ###                                                              32
+    322629684..  429931419: ##                                                               29
+    429931420..  537233155: ##                                                               20
+    537233156..  644534891: ##                                                               21
+    644534892..  751836627: ##                                                               20
+    751836628..  859138363: ##                                                               22
+    859138364..  966440099: ##                                                               24
+    966440100.. 1073741823: #                                                                18
+================================================================================
+success (ran 1 tests)
diff --git a/test/core/QCheck_expect_test.expected.ocaml5 b/test/core/QCheck_expect_test.expected.ocaml5.64
similarity index 98%
rename from test/core/QCheck_expect_test.expected.ocaml5
rename to test/core/QCheck_expect_test.expected.ocaml5.64
index 0cf4036..1572ed2 100644
--- a/test/core/QCheck_expect_test.expected.ocaml5
+++ b/test/core/QCheck_expect_test.expected.ocaml5.64
@@ -540,6 +540,12 @@ Leaf 0
 
 --- Failure --------------------------------------------------------------------
 
+Test sum list = 0 failed (0 shrink steps):
+
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99; 8; 6; 0; 7; 9; 7; 1; 55; 30; 25; 3; 4; 7; 1; 6; 80; 8; 0; 4; 21; 3; 5; 9; 27; 10; 60; 47; 54; 6; 5; 8; 1; 5; 9; 65; 9; 5; 7; 7; 6; 48; 9; 5; 6; 4; 9; 7; 1; 2; 71; 6; 9; 2; 7; 8; 14; 59; 71; 30; 7; 3; 5; 4; 6; 7; 3; 6; 9; 8; 2; 38; 6; 6; 7; 1; 5; 2; 43; 5; 2; 9; 3; 0; 3; 2; 7; 71; 26; 3; 9; 11; 5; 1; 5; 2; 53; 46; 4; 6; 7; 67; 1; 0; 34; 0; 48; 5; 5; 0; 7; 49; 92; 8; 3; 0; 67; 1; 5; 2; 9; 5; 9; 3; 1; 4; 8; 0; 3; 6; 46; 58; 1; 54; 77; 0; 96; 1; 6; 2; 8; 22; 3; 9; 2; 6; 25; 49; 9; 6; 3; 8; 5; 9; 54; 1; 7; 5; 6; 5; 1; 7; 8; 23; 4; 6; 4; 2; 5; 8; 4; 7; 4]
+
+--- Failure --------------------------------------------------------------------
+
 Test fail_pred_map_commute failed (79 shrink steps):
 
 ([11], {_ -> 0}, {11 -> false; _ -> true})
@@ -1404,7 +1410,7 @@ stats dist:
    4150517416584649600.. 4611686018427387903: #################                                               195
 ================================================================================
 1 warning(s)
-failure (63 tests failed, 3 tests errored, ran 148 tests)
+failure (64 tests failed, 3 tests errored, ran 149 tests)
 random seed: 153870556
 
 +++ Stats for int_dist_empty_bucket ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
diff --git a/test/core/QCheck_tests.ml b/test/core/QCheck_tests.ml
index 7d22045..1d1779a 100644
--- a/test/core/QCheck_tests.ml
+++ b/test/core/QCheck_tests.ml
@@ -695,6 +695,11 @@ module Shrink = struct
       IntTree.(make ~print:print_tree ~shrink:shrink_tree gen_tree)
       (fun tree -> IntTree.contains_only_n tree 42)
 
+  let test_gen_no_shrink =
+    Test.make ~name:"sum list = 0"
+      (set_shrink Shrink.nil (list small_int))
+      (fun xs -> List.fold_left (+) 0 xs = 0)
+
   let tests = [
     (*test_fac_issue59;*)
     big_bound_issue59;
@@ -748,6 +753,7 @@ module Shrink = struct
     (*list_equal_dupl;*)
     list_unique_elems;
     tree_contains_only_42;
+    test_gen_no_shrink;
   ]
 end
 
diff --git a/test/core/QCheck_unit_tests.ml b/test/core/QCheck_unit_tests.ml
index b904202..5360376 100644
--- a/test/core/QCheck_unit_tests.ml
+++ b/test/core/QCheck_unit_tests.ml
@@ -19,9 +19,9 @@ module Shrink = struct
 
   let test_int () =
     List.iter (alco_check Alcotest.int (trace_false Shrink.int) "on repeated failure")
-      [ ("int 100",   100,  [50; 75; 88; 94; 97; 99; 99]); (*WTF?*)
-        ("int 1000",  1000, [500; 750; 875; 938; 969; 985; 993; 997; 999; 999]); (*WTF?*)
-        ("int (-26)", -26,  [-13; -20; -23; -25; -25]) ]; (*WTF?*)
+      [ ("int 100",   100,  [50; 75; 88; 94; 97; 99]);
+        ("int 1000",  1000, [500; 750; 875; 938; 969; 985; 993; 997; 999]);
+        ("int (-26)", -26,  [-13; -20; -23; -25]) ];
     List.iter (alco_check Alcotest.int (trace_true Shrink.int) "on repeated success")
       [ ("int 100",   100,  [50; 25; 13; 7; 4; 2; 1; 0]);
         ("int 1000",  1000, [500; 250; 125; 63; 32; 16; 8; 4; 2; 1; 0]);
@@ -29,9 +29,9 @@ module Shrink = struct
 
   let test_int32 () =
     List.iter (alco_check Alcotest.int32 (trace_false Shrink.int32) "on repeated failure")
-      [ ("int 100",   100l,  [50l; 75l; 88l; 94l; 97l; 99l; 99l]);
-        ("int 1000",  1000l, [500l; 750l; 875l; 938l; 969l; 985l; 993l; 997l; 999l; 999l]);
-        ("int (-26)", -26l,  [-13l; -20l; -23l; -25l; -25l]) ];
+      [ ("int 100",   100l,  [50l; 75l; 88l; 94l; 97l; 99l]);
+        ("int 1000",  1000l, [500l; 750l; 875l; 938l; 969l; 985l; 993l; 997l; 999l]);
+        ("int (-26)", -26l,  [-13l; -20l; -23l; -25l]) ];
     List.iter (alco_check Alcotest.int32 (trace_true Shrink.int32) "on repeated success")
       [ ("int 100",   100l,  [50l; 25l; 13l; 7l; 4l; 2l; 1l; 0l]);
         ("int 1000",  1000l, [500l; 250l; 125l; 63l; 32l; 16l; 8l; 4l; 2l; 1l; 0l]);
@@ -39,9 +39,9 @@ module Shrink = struct
 
   let test_int64 () =
     List.iter (alco_check Alcotest.int64 (trace_false Shrink.int64) "on repeated failure")
-      [ ("int 100",   100L,  [50L; 75L; 88L; 94L; 97L; 99L; 99L]);
-        ("int 1000",  1000L, [500L; 750L; 875L; 938L; 969L; 985L; 993L; 997L; 999L; 999L]);
-        ("int (-26)", -26L,  [-13L; -20L; -23L; -25L; -25L]) ];
+      [ ("int 100",   100L,  [50L; 75L; 88L; 94L; 97L; 99L]);
+        ("int 1000",  1000L, [500L; 750L; 875L; 938L; 969L; 985L; 993L; 997L; 999L]);
+        ("int (-26)", -26L,  [-13L; -20L; -23L; -25L]) ];
     List.iter (alco_check Alcotest.int64 (trace_true Shrink.int64) "on repeated success")
       [ ("int 100",   100L,  [50L; 25L; 13L; 7L; 4L; 2L; 1L; 0L]);
         ("int 1000",  1000L, [500L; 250L; 125L; 63L; 32L; 16L; 8L; 4L; 2L; 1L; 0L]);
@@ -50,9 +50,9 @@ module Shrink = struct
   let test_char () =
     List.iter (alco_check Alcotest.char (trace_false Shrink.char) "on repeated failure")
       [ ("char 'a'",   'a',  []);
-        ("char 'z'",   'z',  ['n'; 't'; 'w'; 'y'; 'y']); (*WTF?*)
+        ("char 'z'",   'z',  ['n'; 't'; 'w'; 'y']);
         ("char 'A'",   'A',  ['Q'; 'I'; 'E'; 'C'; 'B']);
-        ("char '~'",   '~',  ['p'; 'w'; '{'; '}'; '}']) ]; (*WTF?*)
+        ("char '~'",   '~',  ['p'; 'w'; '{'; '}']) ];
     List.iter (alco_check Alcotest.char (trace_true Shrink.char) "on repeated success")
       [ ("char 'a'",   'a',  []);
         ("char 'z'",   'z',  ['n'; 'h'; 'e'; 'c'; 'b'; 'a']);
@@ -72,8 +72,8 @@ module Shrink = struct
       [ ("char 'A'",   'A',  ['Q'; 'I'; 'E'; 'C'; 'B']);
         ("char 'a'",   'a',  []);
         ("char ' '",   ' ',  ['@'; '0'; '('; '$'; '"'; '!']);
-        ("char '~'",   '~',  ['p'; 'w'; '{'; '}'; '}']); (*WTF?*)
-        ("char '\\n'", '\n', ['p'; 'w'; '{'; '}'; '}']); ]; (*WTF?*)
+        ("char '~'",   '~',  ['p'; 'w'; '{'; '}']);
+        ("char '\\n'", '\n', ['p'; 'w'; '{'; '}']); ];
     List.iter (alco_check Alcotest.char (trace_true Shrink.char_printable) "on repeated success")
       [ ("char 'A'",   'A',  ['Q'; 'Y'; ']'; '_'; '`'; 'a']);
         ("char 'a'",   'a',  []);
@@ -81,6 +81,42 @@ module Shrink = struct
         ("char '~'",   '~',  ['p'; 'i'; 'e'; 'c'; 'b'; 'a']);
         ("char '\\n'", '\n', ['p'; 'i'; 'e'; 'c'; 'b'; 'a']); ]
 
+  let test_string () =
+    List.iter (alco_check Alcotest.string (trace_false Shrink.string) "on repeated failure")
+      [ ("string \"\"",     "",     []);
+        ("string \"a\"",    "a",    [""]);
+        ("string \"aa\"",   "aa",   [""; "a"; "a"]);
+        ("string \"aaaa\"", "aaaa", ["aa"; "aa"; "aaa"; "aaa"]);
+        ("string \"abcd\"", "abcd", ["ab"; "cd"; "acd"; "bcd"; "aacd"; "abbd"; "abcc"]);
+        ("string \"E'*\"",  "E'*",  ["E'"; "*"; "E*"; "'*"; "S'*"; "L'*"; "H'*"; "F'*"; "ED*";
+                                     "E5*"; "E.*"; "E**"; "E(*"; "E'E"; "E'7"; "E'0"; "E'-"; "E'+"]);
+        ("string \"vi5x92xgG\"", "vi5x92xgG", (* A less exhaustive string shrinker would be preferable *)
+         ["vi5x9"; "vi52xgG"; "vix92xgG"; "5x92xgG";
+          "v5x92xgG"; "i5x92xgG"; "li5x92xgG"; "qi5x92xgG"; "ti5x92xgG"; "ui5x92xgG";
+          "ve5x92xgG"; "vg5x92xgG"; "vh5x92xgG";
+          "viKx92xgG"; "vi@x92xgG"; "vi:x92xgG"; "vi7x92xgG"; "vi6x92xgG";
+          "vi5m92xgG"; "vi5s92xgG"; "vi5v92xgG"; "vi5w92xgG";
+          "vi5xM2xgG"; "vi5xC2xgG"; "vi5x>2xgG"; "vi5x;2xgG"; "vi5x:2xgG";
+          "vi5x9IxgG"; "vi5x9=xgG"; "vi5x97xgG"; "vi5x94xgG"; "vi5x93xgG";
+          "vi5x92mgG"; "vi5x92sgG"; "vi5x92vgG"; "vi5x92wgG";
+          "vi5x92xdG"; "vi5x92xfG";
+          "vi5x92xgT"; "vi5x92xgM"; "vi5x92xgJ"; "vi5x92xgH"]);
+        ("string \"~~~~\"", "~~~~", ["~~"; "~~"; "~~~"; "~~~"; "p~~~"; "w~~~"; "{~~~"; "}~~~"; "~p~~";
+                                     "~w~~"; "~{~~"; "~}~~"; "~~p~"; "~~w~"; "~~{~"; "~~}~";
+                                     "~~~p"; "~~~w"; "~~~{"; "~~~}"]); ];
+    List.iter (alco_check Alcotest.string (trace_true Shrink.string) "on repeated success")
+      [ ("string \"\"",     "",     []);
+        ("string \"a\"",    "a",    [""]);
+        ("string \"aa\"",   "aa",   [""]);
+        ("string \"aaaa\"", "aaaa", ["aa"; ""]);
+        ("string \"abcd\"", "abcd", ["ab"; ""]);
+        ("string \"E'*\"",  "E'*",  ["E'"; ""]);
+        ("string \"vi5x92xgG\"", "vi5x92xgG", ["vi5x9"; "vi5"; "vi"; ""]); ]
+
+  let test_list_spine_compare () =
+    let run_test () = QCheck.Shrink.list_spine [pred;succ] ignore in
+    Alcotest.(check unit) "doesn't compare elements" () @@ run_test ()
+
   let tests = ("Shrink", Alcotest.[
       test_case "int"   `Quick test_int;
       test_case "int32" `Quick test_int32;
@@ -88,6 +124,8 @@ module Shrink = struct
       test_case "char"  `Quick test_char;
       test_case "char_numeral"   `Quick test_char_numeral;
       test_case "char_printable" `Quick test_char_printable;
+      test_case "string" `Quick test_string;
+      test_case "list_spine" `Quick test_list_spine_compare;
     ])
 end
 
@@ -151,6 +189,20 @@ module Check_exn = struct
         then
           Alcotest.failf "%s: counter-example prefix. Received \"%s\"" name c_ex_str
 
+  let test_negative_trivial () =
+    let run_test () = check_exn QCheck2.(Test.make_neg Gen.int (fun _ -> false)) in
+    Alcotest.(check unit) "Success-negative-trivial" () @@ run_test ()
+
+  let test_negative_test_unexpected_success () =
+    let name = "negative-trivial-test" in
+    let run_test () = check_exn QCheck2.(Test.make_neg ~name Gen.int (fun _ -> true)) in
+    try
+      run_test ();
+      Alcotest.failf "Negative test didn't raise expected exception."
+    with
+      Test.Test_unexpected_success n ->
+        Alcotest.(check string) (Printf.sprintf "%s: name" name) n name
+
   let tests =
     ("Test.check_exn", Alcotest.[
          test_case "check_exn pass trivial" `Quick test_pass_trivial;
@@ -158,6 +210,8 @@ module Check_exn = struct
          test_case "check_exn fail always" `Quick test_fail_always;
          test_case "check_exn fail random" `Quick test_fail_random;
          test_case "check_exn Error" `Quick test_error;
+         test_case "check_exn negative pass trivial" `Quick test_negative_trivial;
+         test_case "check_exn Unexpected success" `Quick test_negative_test_unexpected_success;
        ])
 end
 
diff --git a/test/core/dune b/test/core/dune
index e38f2ed..2f6b364 100644
--- a/test/core/dune
+++ b/test/core/dune
@@ -1,12 +1,3 @@
-(* -*- tuareg -*- *)
-
-let suffix =
-  try
-    let major_version = List.hd (String.split_on_char '.' Sys.ocaml_version) in
-    if int_of_string major_version < 5 then string_of_int Sys.word_size else "ocaml5"
-  with _ -> failwith ("Unknown OCaml version format: " ^ Sys.ocaml_version)
-
-let dune = Printf.sprintf {|
 (library
   (name QCheck_tests)
   (modules QCheck_tests)
@@ -17,37 +8,53 @@ let dune = Printf.sprintf {|
   (modules QCheck2_tests)
   (libraries qcheck-core))
 
-(executable
-  (name QCheck_expect_test)
-  (modules QCheck_expect_test)
-  (libraries qcheck-core qcheck-core.runner QCheck_tests))
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} true) (>= %{ocaml_version} 5)))
+ (action (copy QCheck_expect_test.expected.ocaml5.64 QCheck_expect_test.expected)))
 
 (rule
-  (targets QCheck_expect_test.out)
-  (action
-    (with-stdout-to %%{targets}
-      (run ./QCheck_expect_test.exe --no-colors -s 1234))))
+ (enabled_if (and (= %{arch_sixtyfour} false) (>= %{ocaml_version} 5)))
+ (action (copy QCheck_expect_test.expected.ocaml5.32 QCheck_expect_test.expected)))
 
 (rule
-  (alias runtest)
-  (package qcheck-core)
-  (action (diff QCheck_expect_test.expected.%s QCheck_expect_test.out)))
+ (enabled_if (and (= %{arch_sixtyfour} true) (< %{ocaml_version} 5)))
+ (action (copy QCheck_expect_test.expected.ocaml4.64 QCheck_expect_test.expected)))
 
-(executable
-  (name QCheck2_expect_test)
-  (modules QCheck2_expect_test)
-  (libraries qcheck-core qcheck-core.runner QCheck2_tests))
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} false) (< %{ocaml_version} 5)))
+ (action (copy QCheck_expect_test.expected.ocaml4.32 QCheck_expect_test.expected)))
+
+;; implicitly compared against QCheck_expect_test.expected
+(test
+ (name QCheck_expect_test)
+ (modules QCheck_expect_test)
+ (package qcheck-core)
+ (libraries qcheck-core qcheck-core.runner QCheck_tests)
+ (action (run ./%{test} --no-colors -s 1234)))
 
 (rule
-  (targets QCheck2_expect_test.out)
-  (action
-    (with-stdout-to %%{targets}
-      (run ./QCheck2_expect_test.exe --no-colors -s 1234))))
+ (enabled_if (and (= %{arch_sixtyfour} true) (>= %{ocaml_version} 5)))
+ (action (copy QCheck2_expect_test.expected.ocaml5.64 QCheck2_expect_test.expected)))
 
 (rule
-  (alias runtest)
-  (package qcheck-core)
-  (action (diff QCheck2_expect_test.expected.%s QCheck2_expect_test.out)))
+ (enabled_if (and (= %{arch_sixtyfour} false) (>= %{ocaml_version} 5)))
+ (action (copy QCheck2_expect_test.expected.ocaml5.32 QCheck2_expect_test.expected)))
+
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} true) (< %{ocaml_version} 5)))
+ (action (copy QCheck2_expect_test.expected.ocaml4.64 QCheck2_expect_test.expected)))
+
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} false) (< %{ocaml_version} 5)))
+ (action (copy QCheck2_expect_test.expected.ocaml4.32 QCheck2_expect_test.expected)))
+
+;; implicitly compared against QCheck2_expect_test.expected
+(test
+ (name QCheck2_expect_test)
+ (modules QCheck2_expect_test)
+ (package qcheck-core)
+ (libraries qcheck-core qcheck-core.runner QCheck2_tests)
+ (action (run ./%{test} --no-colors -s 1234)))
 
 (tests
   (names QCheck_unit_tests QCheck2_unit_tests)
@@ -59,7 +66,3 @@ let dune = Printf.sprintf {|
   (name shrink_benchmark)
   (modules shrink_benchmark)
   (libraries qcheck-core qcheck-core.runner QCheck_tests QCheck2_tests))
-
-|} suffix suffix
-
-let () = Jbuild_plugin.V1.send dune
diff --git a/test/ppx_deriving_qcheck/deriver/qcheck/test_textual.ml b/test/ppx_deriving_qcheck/deriver/qcheck/test_textual.ml
index f30bedc..4ba46d1 100644
--- a/test/ppx_deriving_qcheck/deriver/qcheck/test_textual.ml
+++ b/test/ppx_deriving_qcheck/deriver/qcheck/test_textual.ml
@@ -860,6 +860,41 @@ let test_unused_variable () =
   in
   check_eq ~expected ~actual "deriving variant with unused fuel parameter"
 
+(* Regression test: https://github.com/c-cube/qcheck/issues/269 *)
+let test_faulty_is_rec_typ_in_variant () =
+  let expected =
+    [
+      [%stri let rec gen_sized n =
+               QCheck.Gen.map (fun gen0 -> Foo gen0) (QCheck.Gen.list (gen_sized (n / 2)))];
+      [%stri let gen = QCheck.Gen.sized gen_sized];
+      [%stri let arb_sized n = QCheck.make @@ (gen_sized n)];
+      [%stri let arb = QCheck.make @@ gen];
+    ]
+  in
+  let actual = f @@ extract [%stri type t = Foo of t list]
+  in
+  check_eq ~expected ~actual "deriving rec type in a type constructor inside variant"
+
+let test_faulty_is_rec_constr_decl () =
+  let expected =
+    [
+      [%stri let rec gen_sized n =
+               match n with
+               | 0 -> QCheck.Gen.pure Foo
+               | _ ->
+                 QCheck.Gen.frequency
+                   [(1, (QCheck.Gen.pure Foo));
+                    (1,
+                     (QCheck.Gen.map (fun gen0 -> Bar { baz = gen0 })
+                        (gen_sized (n / 2))))]];
+      [%stri let gen = QCheck.Gen.sized gen_sized];
+      [%stri let arb_sized n = QCheck.make @@ (gen_sized n)];
+      [%stri let arb = QCheck.make @@ gen];
+    ]
+  in
+  let actual = f @@ extract [%stri type t = Foo | Bar of { baz : t }]
+  in
+  check_eq ~expected ~actual "deriving rec type in a type constructor inside record"
 
 let () =
   Alcotest.(
@@ -907,5 +942,13 @@ let () =
               "deriving variant with unused fuel parameter"
               `Quick
               test_unused_variable;
+            test_case
+              "deriving rec type in a type constructor inside variant"
+              `Quick
+              test_faulty_is_rec_typ_in_variant;
+            test_case
+              "deriving rec type in a type constructor inside record"
+              `Quick
+              test_faulty_is_rec_constr_decl;
           ] );
       ])

More details

Full run details

Historical runs