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

        size = 0;
        if (Float.floatToRawIntBits(latitude_) != 0) {
            size += CodedOutputStream.computeFloatSize(1, latitude_);
        }
        if (Float.floatToRawIntBits(longitude_) != 0) {
            size += CodedOutputStream.computeFloatSize(2, longitude_);
        }
        if (((bitField0_ & 0x00000001) != 0)) {
            size += CodedOutputStream.computeInt64Size(3, timestamp_);
        }
        for (Map.Entry<String, String> entry : internalGetDetails().getMap()
                .entrySet()) {
            MapEntry<String, String> details__ =
                    DetailsDefaultEntryHolder.defaultEntry.newBuilderForType()
                            .setKey(entry.getKey())
                            .setValue(entry.getValue())
                            .build();
            size += CodedOutputStream.computeMessageSize(4, details__);
        }
        for (Value value : customAttributes_) {
            size += 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/UserLocation.java