public function determineViolations(Composer $composer): ViolationIteratorInterface
    {
        $files        = $this->sourceFileFactory->create($composer);
        $symbolFilter = $this->symbolFilterFactory->create($composer);
        $symbols      = $this->extractor->extract($files, $symbolFilter);
        $violations   = $this->finder->find($composer, $symbols);

        return new ViolationIterator(
            ...array_filter(
                iterator_to_array($violations),
                $this->violationFilterFactory->create($composer)
            )
        );
    }