anchor.diff:      rebuild();
     }
   
  +  /// Notify other objects that the wiget associated with this element has changed.
  +  ///
  +  /// Called during [update] after changing the widget associated with this
  +  /// element but before rebuilding this element.
     @protected
     void notifyClients(ProxyWidget oldWidget);
   }
   
  -/// Base class for instantiations of [ParentDataWidget] subclasses.
  +/// An element that uses a [ParentDataWidget] as its configuration.
   class ParentDataElement<T extends RenderObjectWidget> extends ProxyElement {
  +  /// Creates an element that uses the given widget as its configuration.
     ParentDataElement(ParentDataWidget<T> widget) : super(widget);
   
     @override
  
positive.code:   }
  }
  
  /// Instantiation of [StatefulWidget]s.
  class StatefulElement extends ComponentElement {
    StatefulElement(StatefulWidget widget)
      : _state = widget.createState(), super(widget) {
      assert(_state._debugTypesAreRight(widget));
  
negative.code:     super.mount(parent, slot);
    }
  
    void _notifyChildren(Element child) {
      if (child is RenderObjectElement) {
        child._updateParentData(widget);
      } else {
        assert(child is! ParentDataElement<RenderObjectWidget>);
        child.visitChildren(_notifyChildren);
      }
    }
  
    @override
    void notifyClients(ParentDataWidget<T> oldWidget) {
      visitChildren(_notifyChildren);
    }
  }
  
  /// An element that uses a [InheritedWidget] as its configuration.
  class InheritedElement extends ProxyElement {
    /// Creates an element that uses the given widget as its configuration.
    InheritedElement(InheritedWidget widget) : super(widget);
  
    @override
  