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:   }
  }
  
  class MultiChildRenderObjectElement<T extends MultiChildRenderObjectWidget> extends RenderObjectElement<T> {
    MultiChildRenderObjectElement(T widget) : super(widget);
  }
  
  
  
  typedef void WidgetsExceptionHandler(String context, dynamic exception, StackTrace stack);
  
negative.code:   void unmount() {
      assert(_debugLifecycleState == _ElementLifecycle.mounted);
      assert(_widget != null);
      assert(_depth != null);
      assert(() { _debugLifecycleState = _ElementLifecycle.defunct; return true; });
    }
  
    // TODO(ianh): Merge this into the binding, expose for tests
    static void flushBuild() {
      _buildScheduler.buildDirtyElements();
    }
  }
  
  typedef Widget WidgetBuilder();
  
  /// Base class for the instantiation of StatelessComponent and StatefulComponent
  /// widgets.
  abstract class BuildableElement<T extends Widget> extends Element<T> {
    BuildableElement(T widget) : super(widget);
  
  