     
     /// Sets the value.
     @_transparent
-    public func setValue(@noescape block: (Instance) throws -> Instance) rethrows -> Instance {
+    public mutating func setValue(@noescape block: (Instance) throws -> Instance) rethrows -> Instance {
         while true {
             let oldVal = self.base
             if self.compareSet(oldVal, AtomicBase(value: try block(oldVal.value))) {

    
    /// Sets the value, and returns the previous value.
    @_transparent
    public func fetchStore(value: Instance) -> Instance {
        return self.setValue { _ in value }
    }
}

extension Atomic : Equatable, Hashable {
    
    private var identifier: ObjectIdentifier {
        return ObjectIdentifier(base)
    }
    
    /// The hash value.
