protected function collectConflictsBetween(
        ComparisonContext $context,
        array $fieldMapA,
        array $fieldMapB,
        bool $parentFieldsAreMutuallyExclusive
    ): void {
        // A field map is a keyed collection, where each key represents a response
        // name and the value at that key is a list of all fields which provide that
        // response name. For any response name which appears in both provided field
        // maps, each field from the first field map must be compared to every field
        // in the second field map to find potential conflicts.
        foreach ($fieldMapA as $responseName => $fieldsA) {
            $fieldsB = $fieldMapB[$responseName] ?? null;

            if (null !== $fieldsB) {
                $fieldsACount = \count($fieldsA);
                $fieldsBCount = \count($fieldsB);
                /** @noinspection ForeachInvariantsInspection */
                for ($i = 0; $i < $fieldsACount; $i++) {
                    /** @noinspection ForeachInvariantsInspection */
                    for ($j = 0; $j < $fieldsBCount; $j++) {
                        $conflict = $this->findConflict(
                            $responseName,
                            $fieldsA[$i],
                            $fieldsB[$j],
                            $parentFieldsAreMutuallyExclusive
                        );

                        if (null !== $conflict) {
                            $context->reportConflict($conflict);
                        }
                    }
                }
            }
        }
    }