+ support array of GeneratedValues being returned in Shrinker\Random (use only the first one) + extend Generator\Integer to provide multiple values (-1, /2) + allow configuration of method of ShrinkerFactory to call ('random' for now) + create an acceptance test in examples/ adding a log listener to check how it is shrinking + there, try to use 'multiple' + implement Shrinker\Multiple ++ here there will be many things to do - composable Generators must support this in their shrink() ++ AssociativeArray ++ Bind ++ Elements ++ Frequency ++ Map ++ OneOf ++ Sequence --- relies on Vector which relies on Tuple... and when there are more than a few elements there is a combinatorial explosion of options for shrinking ++ Set ++ Subset ++ SuchThat ++ Tuple --- Tuple::contains() ++ Vector + extract Shrinker interface - GeneratedValue rename -- extract GeneratedValue interface, and rename GeneratedValue to GeneratedValueSingle or SingleGeneratedValue -- use smallestStep() or similar instead of last() and implement it also on GeneratedValue -- complete first Phunkie PRs + check GeneratedValue with Onebip guys + check TODO comments in the diff - extract common patterns of usage of GeneratedValue|GeneratedValueOptions into methods on these Value Objects - priority in shrinking: when evaluating options order counts a lot. The cartesian product can be improved?