/**
  * (non-PHPdoc)
  * @see Generator/Admingenerator\GeneratorBundle\Generator.Generator::build()
  * @see http://juliusbeckmann.de/blog/php-benchmark-isset-or-array_key_exists.html
  *   // Key is NULL
  *   $array['key'] = NULL;
  *   var_dump(isset($array['key'])); // false
  *   var_dump(array_key_exists('key', $array)); // true
  */
 public function build()
 {
     $generator = new AdminGenerator($this->getGeneratorYml());
     $generator->setBaseAdminTemplate($this->container->getParameter('admingenerator.base_admin_template'));
     $generator->setFieldGuesser($this->getFieldGuesser());
     $generator->setMustOverwriteIfExists($this->container->getParameter('admingenerator.overwrite_if_exists'));
     $generator->setTemplateDirs(array(__DIR__ . '/../Resources/templates/Doctrine'));
     $generator->setBaseController('Admingenerator\\GeneratorBundle\\Controller\\Doctrine\\BaseController');
     $generator->setBaseGeneratorName($this->getBaseGeneratorName());
     $builders = $generator->getFromYaml('builders', array());
     if (array_key_exists('list', $builders)) {
         $generator->addBuilder(new ListBuilderAction());
         $generator->addBuilder(new ListBuilderTemplate());
         $generator->addBuilder(new FiltersBuilderType());
     }
     if (array_key_exists('delete', $builders)) {
         $generator->addBuilder(new DeleteBuilderAction());
     }
     if (array_key_exists('edit', $builders)) {
         $generator->addBuilder(new EditBuilderAction());
         $generator->addBuilder(new EditBuilderTemplate());
         $generator->addBuilder(new EditBuilderType());
     }
     if (array_key_exists('new', $builders)) {
         $generator->addBuilder(new NewBuilderAction());
         $generator->addBuilder(new NewBuilderTemplate());
         $generator->addBuilder(new NewBuilderType());
     }
     $generator->writeOnDisk($this->getCachePath($generator->getFromYaml('params.namespace_prefix'), $generator->getFromYaml('params.bundle_name')));
 }