/**
  * Initializes the Reflection Service
  *
  * @param Bootstrap $bootstrap
  * @return void
  */
 public static function initializeReflectionService(Bootstrap $bootstrap)
 {
     $cacheManager = $bootstrap->getEarlyInstance(CacheManager::class);
     $configurationManager = $bootstrap->getEarlyInstance(ConfigurationManager::class);
     $settings = $configurationManager->getConfiguration(ConfigurationManager::CONFIGURATION_TYPE_SETTINGS, 'TYPO3.Flow');
     $reflectionService = new ReflectionService();
     $reflectionService->injectSystemLogger($bootstrap->getEarlyInstance(SystemLoggerInterface::class));
     $reflectionService->injectClassLoader($bootstrap->getEarlyInstance(ClassLoader::class));
     $reflectionService->injectSettings($settings);
     $reflectionService->injectPackageManager($bootstrap->getEarlyInstance(PackageManagerInterface::class));
     $reflectionService->setStatusCache($cacheManager->getCache('Flow_Reflection_Status'));
     $reflectionService->setReflectionDataCompiletimeCache($cacheManager->getCache('Flow_Reflection_CompiletimeData'));
     $reflectionService->setReflectionDataRuntimeCache($cacheManager->getCache('Flow_Reflection_RuntimeData'));
     $reflectionService->setClassSchemataRuntimeCache($cacheManager->getCache('Flow_Reflection_RuntimeClassSchemata'));
     $reflectionService->injectSettings($configurationManager->getConfiguration(ConfigurationManager::CONFIGURATION_TYPE_SETTINGS, 'TYPO3.Flow'));
     $reflectionService->injectEnvironment($bootstrap->getEarlyInstance(Environment::class));
     $bootstrap->setEarlyInstance(ReflectionService::class, $reflectionService);
     $bootstrap->getObjectManager()->setInstance(ReflectionService::class, $reflectionService);
 }