     weak var
     recorder: Reporting.Recorder? {
         willSet {
-            guard let observee = self.observee else { return }
+            let observee = self.observee
             if let _ = self.recorder {
                 self.deobserve(observee)
             }
         }
         didSet {
-            guard let observee = self.observee else { return }
+            let observee = self.observee 
             if let _ = self.recorder {
                 self.observe(observee)
             }

    where Observee : NSObject
{
    let
    keyPaths :[String: NSKeyValueObservingOptions]
    weak var
    observee :Observee?
    init(
        keyPaths :[String: NSKeyValueObservingOptions],
        observee :Observee
        ) {
        self.keyPaths = keyPaths
        self.observee = observee
    }
    deinit {
        self.detach()
    }
    func
        observe(_ observee :Observee) {
        for (keyPath, options) in self.keyPaths {
            observee.addObserver(
                self,

    }
    func
        deobserve(_ observee :Observee) {
        guard self.isObserving else { return }
        for (keyPath, _) in self.keyPaths {
            observee.removeObserver(
                self,
                forKeyPath: keyPath
            )
        }
        self.isObserving = false
    }
    func
        detach() {
        let observee = self.observee
        self.deobserve(observee)
    }

    override func
        observeValue(
        forKeyPath keyPath: String?,
