public function testShrinksTheOriginalInput()
{
$generator = new SuchThatGenerator(function ($n) {
return $n % 2 == 0;
}, new ChooseGenerator(0, 100));
$element = $generator->__invoke($this->size, $this->rand);
for ($i = 0; $i < 100; $i++) {
$element = $generator->shrink($element);
$this->assertTrue($generator->contains($element), "Every shrunk element should still be contained: " . var_export($element, true));
$this->assertTrue($element->unbox() % 2 === 0, "Element should still be filtered while shrinking: " . var_export($element, true));
}
}