anchor.diff:      }
       final updateFuture = update();
       if (updateFuture == null) {
  -      _updateFinish(null);
  +      updated();
       } else {
         updateFuture.then(_updateFinish);
       }
     }
   
  -  void _updateFinish(_) {
  -    _flags &= ~_dirtyFlag;
  -    updated();
  -  }
  -
  -  void mounted() {}
  -  void rendered() {}
  -  void updated() {}
  -
  -  /// Mark [Component] as dirty and add it to the next frame [Scheduler]:write
  -  /// queue.
  -  void invalidate() {
  -    if (!isDirty) {
  -      _flags |= _dirtyFlag;
  -      if (identical(Zone.current, domScheduler.zone)) {
  -        domScheduler.nextFrame.write(_depth).then(_invalidatedUpdate);
  -      } else {
  -        domScheduler.zone.run(() {
  -          domScheduler.nextFrame.write(_depth).then(_invalidatedUpdate);
  -        });
  -      }
  -    }
  -  }
  -
  -  bool shouldComponentUpdate() => (isAttached && isDirty);
  -
  -  void _invalidatedUpdate(_) {
  -    if (shouldComponentUpdate()) {
  -      internalUpdate();
  -    }
  -  }
  -
  -  /// Build Virtual DOM for the current state of the [VComponent].
  -  ///
  -  /// Execution context: [Scheduler]:write
  -  VRootBase<T> build() => null;
  +  void _updateFinish(_) { updated(); }
   
     /// Update [Component] using Virtual DOM.
     ///
  -  /// Execution context: [Scheduler]:write
  +  /// Execution context: [domScheduler]:write
     void updateVRoot(VRootBase<T> newVRoot) {
       if (vRoot == null) {
         newVRoot.mountComponent(this);
  
positive.code: 
    /// Create a root-level [element].
    ///
    /// Execution context: [Scheduler]:write
    void create() { element = new html.Element.tag('div') as T; }
  
    /// Mount component on top of existing html
    ///
    /// Execution context: [Scheduler]:write
    void mount(T node) {
      _flags |= _mountedFlag;
      element = node;
  
negative.code:   /// tasks for the current [Frame]
    Future readDOM() => domScheduler.currentFrame.read();
  
    void internalUpdate() {
      if (!shouldComponentUpdate()) {
        return;
      }
  
      _flags &= ~_dirtyFlag;
      final newVRoot = build();
      if (!isRendered) {
        if (isMounted) {
  