anchor.diff:            ancestor = ancestor._parent;
           return ancestor == this;
         }());
  -      // check that it really deepends on us
  +      // check that it really depends on us
         assert(dependent._dependencies.contains(this));
         dependent.didChangeDependencies();
       }
  
positive.code:     super.debugDeactivated();
    }
  
    @override
    void notifyClients(InheritedWidget oldWidget) {
      if (!widget.updateShouldNotify(oldWidget))
        return;
      dispatchDidChangeDependencies();
    }
  
    /// Notifies all dependent elements that this inherited widget has changed.
    ///
    /// [InheritedElement] calls this function if [InheritedWidget.updateShouldNotify]
    /// returns true. Subclasses of [InheritedElement] might wish to call this
    /// function at other times if their inherited information changes outside of
    /// the build phase. [InheritedWidget] subclasses can also call this directly
    /// by first obtaining their [InheritedElement] using
    /// [BuildContext.ancestorInheritedElementForWidgetOfExactType].
    void dispatchDidChangeDependencies() {
      assert(_debugCheckOwnerBuildTargetExists('dispatchDidChangeDependencies'));
      for (Element dependent in _dependents) {
        assert(() {
          // check that it really is our descendant
  
negative.code:     assert(() {
        if (owner._debugCurrentBuildTarget == null) {
          throw new FlutterError(
            '$methodName for ${widget.runtimeType} was called at an '
            'inappropriate time.\n'
            'It may only be called while the widgets are being built. A possible '
            'cause of this error is when $methodName is called during '
            'one of:\n'
            ' * network I/O event\n'
            ' * file I/O event\n'
            ' * timer\n'
            ' * microtask (caused by Future.then, async/await, scheduleMicrotask)'
          );
        }
        return true;
  