         }
     }
 
+    private var _observingContentSizeCategory = false
+    private func _stopObservingContentSizeCategory() {
+        if _observingContentSizeCategory {
+            NotificationCenter.default.removeObserver(self, name: .UIContentSizeCategoryDidChange, object: nil)
+        }
+    }
+
     private var _observingFrame = false
     private func _stopObservingFrame() {
         if _observingFrame {
-            NotificationCenter.default.removeObserver(self)
             removeObserver(self, forKeyPath: "_view.frame")
             removeObserver(self, forKeyPath: "_view.bounds")
             _observingFrame = false

    }

    private func stopObserving() {
        _stopObservingFrame()
        _stopObservingInsets()
    }

    private func updateObservers() {
        if _observingFrame, parent != nil {
            _stopObservingFrame()
        } else if !_observingFrame, parent == nil {
            NotificationCenter.default.addObserver(self, selector: #selector(contentSizeChanged), name: .UIContentSizeCategoryDidChange, object: nil)
            addObserver(self, forKeyPath: "_view.frame", options: [.old, .new], context: nil)
            addObserver(self, forKeyPath: "_view.bounds", options: [.old, .new], context: nil)
            _observingFrame = true
        }
        if _observingInsets, viewControllerClass == nil {

            viewController.addChildViewController(controller)
        }
        viewController.view.addSubview(view)
        _view?.frame = viewController.view.bounds
        update()
    }

    /// Mounts a node inside the specified view, and binds the view as its owner
