/**
* @param ClassGenerator $class
* @param Property $firstProperty
*
* @throws \Zend\Code\Generator\Exception\InvalidArgumentException
*/
private function implementGetIterator($class, $firstProperty)
{
$methodName = 'getIterator';
$class->removeMethod($methodName);
$class->addMethodFromGenerator(MethodGenerator::fromArray(['name' => $methodName, 'parameters' => [], 'visibility' => MethodGenerator::VISIBILITY_PUBLIC, 'body' => sprintf('return new \\ArrayIterator(is_array($this->%1$s) ? $this->%1$s : []);', $firstProperty->getName()), 'docblock' => DocBlockGenerator::fromArray(['tags' => [['name' => 'return', 'description' => '\\ArrayIterator']]])]));
}