private ValidationEvent invalidBindings(
            TopicBinding<? extends Trait> binding,
            List<TopicBinding<?>> conflicts
    ) {
        String payloadShape = binding.getPayloadShape()
                .map(shape -> shape.getId().toString())
                .orElse("N/A");
        String conflictingStrings = conflicts.stream()
                .filter(b -> !b.equals(binding))
                .map(this::createConflictingBindingDescriptor)
                .sorted()
                .collect(Collectors.joining(", "));
        String message = String.format(
                "This shape resolves to an MQTT topic `%s` as part of the `%s` operation, and its payload of "
                        + "`%s` conflicts with other topic payloads: [%s]",
                binding.getTopic(),
                binding.getOperation().getId(),
                payloadShape,
                conflictingStrings);
        return error(binding.getOperation(), binding.getMqttTrait(), message);
    }
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