@java.lang.Override
    public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
            return true;
        }
        if (!(obj instanceof QueryMessagesRequest other)) {
            return super.equals(obj);
        }

        if (!getIdsList().equals(other.getIdsList())) {
            return false;
        }
        if (hasAreGroupMessages() != other.hasAreGroupMessages()) {
            return false;
        }
        if (hasAreGroupMessages()) {
            if (getAreGroupMessages() != other.getAreGroupMessages()) {
                return false;
            }
        }
        if (hasAreSystemMessages() != other.hasAreSystemMessages()) {
            return false;
        }
        if (hasAreSystemMessages()) {
            if (getAreSystemMessages() != other.getAreSystemMessages()) {
                return false;
            }
        }
        if (!getFromIdsList().equals(other.getFromIdsList())) {
            return false;
        }
        if (hasDeliveryDateStart() != other.hasDeliveryDateStart()) {
            return false;
        }
        if (hasDeliveryDateStart()) {
            if (getDeliveryDateStart() != other.getDeliveryDateStart()) {
                return false;
            }
        }
        if (hasDeliveryDateEnd() != other.hasDeliveryDateEnd()) {
            return false;
        }
        if (hasDeliveryDateEnd()) {
            if (getDeliveryDateEnd() != other.getDeliveryDateEnd()) {
                return false;
            }
        }
        if (hasMaxCount() != other.hasMaxCount()) {
            return false;
        }
        if (hasMaxCount()) {
            if (getMaxCount() != other.getMaxCount()) {
                return false;
            }
        }
        if (getWithTotal() != other.getWithTotal()) {
            return false;
        }
        if (hasDescending() != other.hasDescending()) {
            return false;
        }
        if (hasDescending()) {
            if (getDescending() != other.getDescending()) {
                return false;
            }
        }
        return getCustomAttributesList().equals(other.getCustomAttributesList())
                && getUnknownFields().equals(other.getUnknownFields());
    }
<code>repeated .im.turms.proto.Value custom_attributes = 15;</code>
turms-server-common/src/main/java/im/turms/server/common/access/client/dto/request/message/QueryMessagesRequest.java