class ThreadSafe::Util::AtomicReference::FullLockingAtomicReference

def compare_and_set(old_value, new_value)

def compare_and_set(old_value, new_value)
  return false unless @___mutex.try_lock
  begin
    return false unless @___value.equal? old_value
    @___value = new_value
  ensure
    @___mutex.unlock
  end
  true
end

def get

def get
  @___mutex.synchronize { @___value }
end

def initialize(value = nil)

def initialize(value = nil)
  @___mutex = Mutex.new
  @___value = value
end

def set(new_value)

def set(new_value)
  @___mutex.synchronize { @___value = new_value }
end