@!macro [new] atomic_reference
An object reference that may be updated atomically. All read and write operations have java volatile semantic. @!macro thread_safe_variable_comparison @see http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicReference.html @see http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/package-summary.html @!method initialize @!macro [new] atomic_reference_method_initialize @param [Object] value The initial value. @!method get @!macro [new] atomic_reference_method_get Gets the current value. @return [Object] the current value @!method set @!macro [new] atomic_reference_method_set Sets to the given value. @param [Object] new_value the new value @return [Object] the new value @!method get_and_set @!macro [new] atomic_reference_method_get_and_set Atomically sets to the given value and returns the old value. @param [Object] new_value the new value @return [Object] the old value @!method compare_and_set @!macro [new] atomic_reference_method_compare_and_set Atomically sets the value to the given updated value if the current value == the expected value. @param [Object] old_value the expected value @param [Object] new_value the new value @return [Boolean] `true` if successful. A `false` return indicates that the actual value was not equal to the expected value.