@java.lang.Override
    public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) {
            return size;
        }

        size = 0;
        if (userId_ != 0L) {
            size += com.google.protobuf.CodedOutputStream.computeInt64Size(1, userId_);
        }
        if (userStatus_ != im.turms.server.common.access.client.dto.constant.UserStatus.AVAILABLE
                .getNumber()) {
            size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, userStatus_);
        }
        {
            int dataSize = 0;
            for (int i = 0; i < deviceTypes_.size(); i++) {
                dataSize += com.google.protobuf.CodedOutputStream
                        .computeEnumSizeNoTag(deviceTypes_.getInt(i));
            }
            size += dataSize;
            if (!getDeviceTypesList().isEmpty()) {
                size += 1;
                size += com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(dataSize);
            }
            deviceTypesMemoizedSerializedSize = dataSize;
        }
        for (im.turms.server.common.access.client.dto.model.common.Value value : customAttributes_) {
            size += com.google.protobuf.CodedOutputStream.computeMessageSize(15, value);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
    }
<code>repeated .im.turms.proto.Value custom_attributes = 15;</code>
turms-server-common/src/main/java/im/turms/server/common/access/client/dto/model/user/UserOnlineStatus.java