@Override
    public List<ValidationEvent> validate(Model model) {
        ResolvedTopicIndex bindingIndex = ResolvedTopicIndex.of(model);

        // Find conflicting topic bindings for each resolved topic.
        return bindingIndex.topicBindings()
                .map(binding -> Pair.of(binding,
                        bindingIndex.topicBindings()
                                .filter(other -> other.conflictsWith(binding))
                                .collect(Collectors.toList())))
                // Only care when multiple entries are present.
                .filter(conflictingPair -> !conflictingPair.getRight().isEmpty())
                .map(conflictingPair -> invalidBindings(conflictingPair.getLeft(), conflictingPair.getRight()))
                .collect(Collectors.toList());
    }
Validates that no two MQTT topics conflict.

<p>MQTT topics are allowed to conflict if both topics target the
same shape.
smithy-mqtt-traits/src/main/java/software/amazon/smithy/mqtt/traits/validators/MqttTopicConflictValidator.java