/**
  * @param SiteState       $state
  * @param SiteStateResult $result
  *
  * @return SiteExtension[]
  */
 private function getExtensions(SiteState $state, SiteStateResult $result)
 {
     if (!$result->extensions) {
         return [];
     }
     $existingExtensions = $state->getSiteExtensions();
     $extensions = [];
     foreach ($result->extensions as $slug => $extensionData) {
         if (isset($existingExtensions[$slug])) {
             $extension = $existingExtensions[$slug];
         } else {
             $extension = new SiteExtension($state, $slug);
         }
         $extension->setFilename($extensionData->filename)->setType($extensionData->type)->setParent($extensionData->parent)->setEnabled($extensionData->enabled)->setName($extensionData->name)->setDescription($extensionData->description)->setPackage($extensionData->package)->setVersion($extensionData->version)->setRequired($extensionData->required)->setDependencies($extensionData->dependencies)->setProject($extensionData->project);
         $extensions[$slug] = $extension;
     }
     return $extensions;
 }
 public function includeThemes(SiteState $siteState)
 {
     return $this->collection($this->filterExtensions($siteState->getSiteExtensions(), SiteExtension::TYPE_THEME), $this->transformers->get(SiteExtension::class));
 }