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

        if (!getUserIdsList().equals(other.getUserIdsList())) {
            return false;
        }
        if (!getGroupIdsList().equals(other.getGroupIdsList())) {
            return false;
        }
        if (hasCreationDateStart() != other.hasCreationDateStart()) {
            return false;
        }
        if (hasCreationDateStart()) {
            if (getCreationDateStart() != other.getCreationDateStart()) {
                return false;
            }
        }
        if (hasCreationDateEnd() != other.hasCreationDateEnd()) {
            return false;
        }
        if (hasCreationDateEnd()) {
            if (getCreationDateEnd() != other.getCreationDateEnd()) {
                return false;
            }
        }
        if (hasInPrivateConversation() != other.hasInPrivateConversation()) {
            return false;
        }
        if (hasInPrivateConversation()) {
            if (getInPrivateConversation() != other.getInPrivateConversation()) {
                return false;
            }
        }
        if (hasAreSharedByMe() != other.hasAreSharedByMe()) {
            return false;
        }
        if (hasAreSharedByMe()) {
            if (getAreSharedByMe() != other.getAreSharedByMe()) {
                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/storage/QueryMessageAttachmentInfosRequest.java