@Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (!(o instanceof TopicBinding)) {
            return false;
        }
        TopicBinding that = (TopicBinding) o;
        return operation.equals(that.operation)
                && getInput().equals(that.getInput())
                && mqttTrait.equals(that.mqttTrait)
                && getTopic().equals(that.getTopic())
                && getPayloadShape().equals(that.getPayloadShape());
    }
Returns true if the topic binding conflicts with another.

<p>A topic binding is considered conflicting if both bindings have
conflicting topics determined through {@link Topic#conflictsWith}
and the topic bindings utilize a different payload. If both topics
do not have a payload then they are not conflicting. If both topics
have a payload, but they target the same shape, then they are not
conflicting.

@param other Other topic binding to compare against.
@return Returns true if the topic bindings conflict.
smithy-mqtt-traits/src/main/java/software/amazon/smithy/mqtt/traits/TopicBinding.java