/** @internal */
public function generateCode(string $className, string $parentName = NULL) : array
{
$this->builder->prepareClassList();
foreach ($this->extensions as $extension) {
$extension->beforeCompile();
$this->dependencies[] = (new \ReflectionClass($extension))->getFileName();
}
$classes = $this->builder->generateClasses($className, $parentName);
$classes[0]->addMethod('initialize');
$this->addDependencies($this->builder->getDependencies());
foreach ($this->extensions as $extension) {
$extension->afterCompile($classes[0]);
}
return $classes;
}