public function __invoke($size, $rand)
{
$setSize = rand(0, $size);
$set = [];
$input = [];
$trials = 0;
while (count($set) < $setSize && $trials < 2 * $setSize) {
$trials++;
$candidateNewElement = $this->singleElementGenerator->__invoke($size, $rand);
if (in_array($candidateNewElement->unbox(), $set, $strict = true)) {
continue;
}
$set[] = $candidateNewElement->unbox();
$input[] = $candidateNewElement;
}
return GeneratedValue::fromValueAndInput($set, $input, 'set');
}