/**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $io = new DrupalStyle($input, $output);
     $plugins = $this->getPlugins();
     // @see use Drupal\Console\Command\ConfirmationTrait::confirmGeneration
     if (!$this->confirmGeneration($io)) {
         return;
     }
     $module = $input->getOption('module');
     $pluginId = $input->getOption('plugin-id');
     $plugin = ucfirst($this->stringConverter->underscoreToCamelCase($pluginId));
     // Confirm that plugin.manager is available
     if (!$this->validator->validatePluginManagerServiceExist($pluginId, $plugins)) {
         throw new \Exception(sprintf($this->trans('commands.generate.plugin.skeleton.messages.plugin-dont-exist'), $pluginId));
     }
     if (array_key_exists($pluginId, $this->pluginGeneratorsImplemented)) {
         $io->warning(sprintf($this->trans('commands.generate.plugin.skeleton.messages.plugin-generator-implemented'), $pluginId, $this->pluginGeneratorsImplemented[$pluginId]));
     }
     $className = $input->getOption('class');
     $services = $input->getOption('services');
     // @see use Drupal\Console\Command\Shared\ServicesTrait::buildServices
     $buildServices = $this->buildServices($services);
     $pluginMetaData = $this->getPluginMetadata($pluginId);
     $this->generator->generate($module, $pluginId, $plugin, $className, $pluginMetaData, $buildServices);
     $this->chainQueue->addCommand('cache:rebuild', ['cache' => 'discovery']);
 }