# File lib/thread_safe/atomic_reference_cache_backend.rb, line 186
      def try_to_cas_in_computed(i, hash, key)
        succeeded = false
        new_value = nil
        new_node  = Node.new(locked_hash = hash | LOCKED, key, NULL)
        if cas(i, nil, new_node)
          begin
            if NULL == (new_value = yield(NULL))
              was_null = true
            else
              new_node.value = new_value
            end
            succeeded = true
          ensure
            volatile_set(i, nil) if !succeeded || was_null
            new_node.unlock_via_hash(locked_hash, hash)
          end
        end
        return succeeded, new_value
      end