protected function getMainComponentInfo() {
    // Scanning for components and parsing their info is expensive, so cache it.
    if ($this->componentInfo === NULL) {
      $components = $this->componentDiscovery->getMainComponents();

      // Couldn't figure out how to sort the components with a uasort(). Went
      // with the quick and dirty way instead. Don't judge me!
      Element::order($components, [
        'lightning_core',
        'lightning_media',
        'lightning_layout',
        'lightning_workflow',
        'lightning_preview',
      ]);

      $this->componentInfo = array_map(
        function (Extension $component) {
          return $this->infoParser->parse($component->getPathname());
        },
        $components
      );
    }
    return $this->componentInfo;
  }