resolveAdditionalConfigFiles();
try {
$this->container = $containerFactory->create(SimpleParameterProvider::provideStringParameter(Option::CONTAINER_CACHE_DIRECTORY), $additionalConfigFiles, []);
} catch (Throwable $throwable) {
if ($throwable->getMessage() === "File 'phar://phpstan.phar/conf/bleedingEdge.neon' is missing or is not readable.") {
$symfonyStyle = new SymfonyStyle(new ArrayInput([]), new ConsoleOutput());
$symfonyStyle->error(\sprintf(self::INVALID_BLEEDING_EDGE_PATH_MESSAGE, $throwable->getMessage()));
exit(-1);
}
throw $throwable;
}
}
/**
* @api
*/
public function createReflectionProvider() : ReflectionProvider
{
return $this->container->getByType(ReflectionProvider::class);
}
/**
* @api
*/
public function createEmulativeLexer() : Lexer
{
return $this->container->getService('currentPhpVersionLexer');
}
/**
* @api
*/
public function createPHPStanParser() : Parser
{
return $this->container->getService('currentPhpVersionRichParser');
}
/**
* @api
*/
public function createNodeScopeResolver() : NodeScopeResolver
{
return $this->container->getByType(NodeScopeResolver::class);
}
/**
* @api
*/
public function createScopeFactory() : ScopeFactory
{
return $this->container->getByType(ScopeFactory::class);
}
/**
* @template TObject as Object
*
* @param class-string