 
 private extension UserDefaults.Publisher {
     
-    final class Subscription<Value, S: Subscriber>: NSObject, Combine.Subscription where S.Input == Value {
+    final class Subscription<Value: Equatable, S: Subscriber>: NSObject, Combine.Subscription where S.Input == Value {
         
         // MARK: Private Properties
         

        override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) {
            
            guard
                keyPath == self.key.rawValue,
                object as? NSObject == self.userDefaults
                else { return super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context) }

            
            let newValue: Value
            do {
                newValue = try self.key.newValue(from: change[.newKey])
            } catch {
                return assertionFailure("UserDefaults.Publisher.Subscription could not obtain value for '.\(self.key)' key as \(Value.self).")
            }
            
            guard newValue != self.lastValue else { return }  // workaround for the issue that KVO can be invoked multiple times with UserDefaults
            
            self.lastValue = newValue
            self.demand -= 1
            self.demand += subscriber.receive(newValue)
        }
