phpDocTypeMappers = $phpDocTypeMappers; $this->typeNodeResolver = $typeNodeResolver; Assert::notEmpty($phpDocTypeMappers); } public function mapToPHPStanType(TypeNode $typeNode, Node $node, NameScope $nameScope) : Type { foreach ($this->phpDocTypeMappers as $phpDocTypeMapper) { if (!\is_a($typeNode, $phpDocTypeMapper->getNodeType())) { continue; } return $phpDocTypeMapper->mapToPHPStanType($typeNode, $node, $nameScope); } // fallback to PHPStan resolver return $this->typeNodeResolver->resolve($typeNode, $nameScope); } }