anchor.diff:    }
   
     /// Should be auto-generated by pub transformer
  -  static l.VComponentElement virtual(Object key, l.ComponentBase parent, g.Node node) {
  -    return new l.VComponentElement(key, (component) {
  +  static VDomComponent virtual(Object key, ComponentBase parent, g.Node node) {
  +    return new VDomComponent(key, (component) {
         if (component == null) {
           return new LeafComponent(parent, node);
         } else {
  
positive.code:   String toString() => 'Leaf: [${_node.key}]';
  }
  
  
  class Benchmark extends BenchmarkBase {
    List<g.Node> a;
    List<g.Node> b;
    html.Element _container;
  
    l.RootComponent _root;
    l.VComponentElement _vComponent;
    html.Element _rootElement;
  
    Benchmark(this.a, this.b, this._container) : super('VComponent');
  
    void render() {
      _vComponent = NodeComponent.virtual(0, _root, new g.Node(0, false, this.a));
      _rootElement = _vComponent.render();
      _container.append(_rootElement);
      _root.attached();
    }
  
    void update() {
      final newVComponent = NodeComponent.virtual(0, _root, new g.Node(0, true, this.b));
      _vComponent.diff(newVComponent);
      _root.update();
    }
  
    void setup() {
      _root = new l.RootComponent();
    }
  
    void teardown() {
      _rootElement.remove();
      _root = null;
    }
  }
negative.code: import 'package:vdom_benchmark/benchmark.dart';
  import 'package:vdom_benchmark/generator.dart' as g;
  import 'package:vdom/vdom.dart' as v;
  import 'package:liquid/liquid.dart';
  
  class NodeComponent extends VComponent {
    g.Node _node;
  
    NodeComponent(ComponentBase parent, this._node) :
      super(parent, new html.DivElement());
  
    List<v.Node> build() {
      final result = [];
  