/**
  * {@inheritdoc}
  */
 public function createBundlesFromPackages()
 {
     $existing_bundles = $this->getBundleList();
     $new_bundles = [];
     // Only parse from installed features.
     $modules = $this->featuresManager->getFeaturesModules(NULL, TRUE);
     foreach ($modules as $module) {
         $info = $this->featuresManager->getExtensionInfo($module);
         // @todo This entire function could be simplified a lot using packages.
         $features_info = $this->featuresManager->getFeaturesInfo($module);
         // Create a new bundle if:
         // - the feature specifies a bundle and
         // - that bundle doesn't yet exist locally.
         // Allow profiles to override previous values.
         if (!empty($features_info['bundle']) && !isset($existing_bundles[$features_info['bundle']]) && (!in_array($features_info['bundle'], $new_bundles) || $info['type'] == 'profile')) {
             if ($info['type'] == 'profile') {
                 $new_bundle = ['name' => $info['name'], 'description' => $info['description'], 'is_profile' => TRUE, 'profile_name' => $module->getName()];
             } else {
                 $new_bundle = ['name' => isset($info['package']) ? $info['package'] : ucwords(str_replace('_', ' ', $features_info['bundle'])), 'description' => NULL, 'is_profile' => FALSE, 'profile_name' => NULL];
             }
             $new_bundle['machine_name'] = $features_info['bundle'];
             $new_bundles[$new_bundle['machine_name']] = $new_bundle;
         }
     }
     foreach ($new_bundles as $new_bundle) {
         $new_bundle = $this->createBundleFromDefault($new_bundle['machine_name'], $new_bundle['name'], $new_bundle['description'], $new_bundle['is_profile']);
         drupal_set_message($this->t('Features bundle @name automatically created.', ['@name' => $new_bundle->getName()]));
     }
 }