             self.callback = callback
             super.init()
             objc_setAssociatedObject(object, associationKey(), self, .OBJC_ASSOCIATION_RETAIN)
-            object.addObserver(self, forKeyPath: path, options: options, context: nil)
+            __KVOKeyPathBridgeMachinery._withBridgeableKeyPath(from: path, to: keyPath) {
+                object.addObserver(self, forKeyPath: path, options: options, context: nil)
+            }
         }
         
         @nonobjc func invalidate() {

}

func _bridgeKeyPathToString(_ keyPath:AnyKeyPath) -> String {
    return __KVOKeyPathBridgeMachinery._bridgeKeyPath(keyPath)
}

// NOTE: older overlays called this NSKeyValueObservation. We now use

        threeWaySwizzle(#selector(NSObject.keyPathsForValuesAffectingValue(forKey:)), with: #selector(NSObject.__old_unswizzled_keyPathsForValuesAffectingValue(forKey:)))
        threeWaySwizzle(#selector(NSObject.automaticallyNotifiesObservers(forKey:)), with: #selector(NSObject.__old_unswizzled_automaticallyNotifiesObservers(forKey:)))
        
        return nil
    }()
    
    /// Performs a 3-way swizzle between `NSObject` and `__KVOKeyPathBridgeMachinery`.
