/**
  * @param DriverInterface $provider
  * @param string $key
  * @param array $default
  * @return ConfigurationArray|LazyConfigurationArray
  * @throws ConfigurationNotFoundException
  */
 protected function doLoad(DriverInterface $provider, string $key = self::DEFAULT_KEY, array $default = []) : ConfigurationArray
 {
     $config = parent::doLoad($provider, $key, $default);
     /** @var ConfigurationArray $all */
     $all = $config->get(self::ALL_TENANT_KEY);
     if (!$config->offsetExists($this->tenant)) {
         throw new ConfigurationNotFoundException(sprintf('Configuration for tenant %s does not exist in environment %s', $this->tenant, $key));
     }
     /** @var ConfigurationArray $tenantSpecific */
     $tenantSpecific = $config->get($this->tenant);
     return new ConfigurationArray(array_merge_recursive($all->getSettings(), $tenantSpecific->getSettings()));
 }