Atomically updates (with memory effects as specified by
VarHandle.compareAndSet) the field of the given object managed
by this updater with the results of applying the given function
to the current and given values, returning the previous value.
The function should be side-effect-free, since it may be
re-applied when attempted updates fail due to contention among
threads. The function is applied with the current value as its
first argument, and the given update as the second argument.
|An object whose field to get and set|
|the update value|
|a side-effect-free function of two arguments|