public static int UpdateAndGet(ref this int value, Func <int, int> updater) => Atomic.Update(ref value, updater).NewValue;
public static float UpdateAndGet(ref this float value, Func <float, float> updater) => Atomic.Update(ref value, updater).NewValue;
public static double UpdateAndGet(ref this double value, Func <double, double> updater) => Atomic.Update(ref value, updater).NewValue;
public static long UpdateAndGet(ref this long value, Func <long, long> updater) => Atomic.Update(ref value, updater).NewValue;