anchor.diff:      _child = _updateChild(_child, built, _slot);
     }
   
  +  /// Called by the binding when scheduleBuild() has been called to mark this element dirty.
     void _rebuildIfNeeded() {
       if (_dirty)
         _rebuild();
     }
   
  +  /// Marks the element as dirty and adds it to the global list of widgets to
  +  /// rebuild in the next frame.
  +  ///
  +  /// Since it is inefficient to build an element twice in one frame,
  +  /// applications and components should be structured so as to only mark
  +  /// components dirty during event handlers before the frame begins, not during
  +  /// the build itself.
     void scheduleBuild() {
       assert(_debugLifecycleState == _ElementLifecycle.mounted);
       if (_dirty)
         return;
       _dirty = true;
       _buildScheduler.schedule(this);
  -    // TODO(abarth): Implement rebuilding.
     }
   
     void visitChildren(ElementVisitor visitor) {
  
positive.code: 
    void mount(Element parent, dynamic slot) {
      super.mount(parent, slot);
      _child = _updateChild(_child, _widget.child, uniqueChild);
    }
  
    void update(T newWidget) {
      super.update(newWidget);
      assert(_widget == newWidget);
      _child = _updateChild(_child, _widget.child, uniqueChild);
    }
  
    void insertChildRenderObject(RenderObject child, dynamic slot) {
      final renderObject = this.renderObject; // TODO(ianh): Remove this once the analyzer is cleverer
      assert(renderObject is RenderObjectWithChildMixin);
      assert(slot == uniqueChild);
      renderObject.child = child;
      assert(renderObject == this.renderObject); // TODO(ianh): Remove this once the analyzer is cleverer
    }
  
negative.code:   dynamic _slot;
  
    /// An integer that is guaranteed to be greater than the parent's, if any.
    /// The element at the root of the tree must have a depth greater than 0.
    int _depth;
  
    /// The configuration for this element.
  