public function shrink(GeneratedValue $element)
{
list($outerGeneratorValue, $innerGeneratorValue) = $element->input();
// TODO: shrink also the second generator
$outerGenerator = call_user_func($this->outerGeneratorFactory, $innerGeneratorValue->unbox());
$shrinkedOuterGeneratorValue = $outerGenerator->shrink($outerGeneratorValue);
return $this->packageGeneratedValue($shrinkedOuterGeneratorValue, $innerGeneratorValue);
}