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

        if (getId() != other.getId()) {
            return false;
        }
        if (hasUserId() != other.hasUserId()) {
            return false;
        }
        if (hasUserId()) {
            if (getUserId() != other.getUserId()) {
                return false;
            }
        }
        if (hasGroupId() != other.hasGroupId()) {
            return false;
        }
        if (hasGroupId()) {
            if (getGroupId() != other.getGroupId()) {
                return false;
            }
        }
        if (getCreatorId() != other.getCreatorId()) {
            return false;
        }
        if (hasAccessToken() != other.hasAccessToken()) {
            return false;
        }
        if (hasAccessToken()) {
            if (!getAccessToken().equals(other.getAccessToken())) {
                return false;
            }
        }
        if (hasName() != other.hasName()) {
            return false;
        }
        if (hasName()) {
            if (!getName().equals(other.getName())) {
                return false;
            }
        }
        if (hasIntro() != other.hasIntro()) {
            return false;
        }
        if (hasIntro()) {
            if (!getIntro().equals(other.getIntro())) {
                return false;
            }
        }
        if (hasPassword() != other.hasPassword()) {
            return false;
        }
        if (hasPassword()) {
            if (!getPassword().equals(other.getPassword())) {
                return false;
            }
        }
        if (getStartDate() != other.getStartDate()) {
            return false;
        }
        if (hasEndDate() != other.hasEndDate()) {
            return false;
        }
        if (hasEndDate()) {
            if (getEndDate() != other.getEndDate()) {
                return false;
            }
        }
        if (hasCancelDate() != other.hasCancelDate()) {
            return false;
        }
        if (hasCancelDate()) {
            if (getCancelDate() != other.getCancelDate()) {
                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/model/conference/Meeting.java