public function find(
        Composer $composer,
        SymbolIteratorInterface $symbols
    ): ViolationIteratorInterface {
        $candidates = $this->extractor->extract($composer, $symbols);

        return new ViolationIterator(
            ...array_merge(
                $this->determineLockViolations($composer, ...$candidates),
                $this->determineUnusedCodeViolations($composer, ...$candidates)
            )
        );
    }