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

        if (hasAttachmentIdNum() != other.hasAttachmentIdNum()) {
            return false;
        }
        if (hasAttachmentIdNum()) {
            if (getAttachmentIdNum() != other.getAttachmentIdNum()) {
                return false;
            }
        }
        if (hasAttachmentIdStr() != other.hasAttachmentIdStr()) {
            return false;
        }
        if (hasAttachmentIdStr()) {
            if (!getAttachmentIdStr().equals(other.getAttachmentIdStr())) {
                return false;
            }
        }
        if (hasUserIdToShareWith() != other.hasUserIdToShareWith()) {
            return false;
        }
        if (hasUserIdToShareWith()) {
            if (getUserIdToShareWith() != other.getUserIdToShareWith()) {
                return false;
            }
        }
        if (hasUserIdToUnshareWith() != other.hasUserIdToUnshareWith()) {
            return false;
        }
        if (hasUserIdToUnshareWith()) {
            if (getUserIdToUnshareWith() != other.getUserIdToUnshareWith()) {
                return false;
            }
        }
        if (hasGroupIdToShareWith() != other.hasGroupIdToShareWith()) {
            return false;
        }
        if (hasGroupIdToShareWith()) {
            if (getGroupIdToShareWith() != other.getGroupIdToShareWith()) {
                return false;
            }
        }
        if (hasGroupIdToUnshareWith() != other.hasGroupIdToUnshareWith()) {
            return false;
        }
        if (hasGroupIdToUnshareWith()) {
            if (getGroupIdToUnshareWith() != other.getGroupIdToUnshareWith()) {
                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/UpdateMessageAttachmentInfoRequest.java