anchor.diff:  
       Element before = querySelector("[data-path=\"${_path}\"]");
   
  -    shadow.unmount();
  -    shadow = render();
  -    StringBuffer out = new StringBuffer();
  -    shadow.mount(out, _path, _depth);
  -    Element after = _unsafeNewElement(out.toString());
  -
  -    before.replaceWith(after);
  +    View newShadow = render();
  +    if (shadow.canUpdateTo(newShadow)) {
  +      shadow.refresh(newShadow);
  +    } else {
  +      shadow.unmount();
  +      shadow = newShadow;
  +      StringBuffer out = new StringBuffer();
  +      shadow.mount(out, _path, _depth);
  +      Element after = _unsafeNewElement(out.toString());
  +      before.replaceWith(after);
  +    }
     }
   
     Map<Symbol, dynamic> get props => _props;
  
positive.code:   bool canUpdateTo(View other) => (other is Elt) && other.name == name;
  
    void refresh(Elt nextVersion) {
      if (nextVersion == null) {
        return; // no internal state to update
      }
  
negative.code: 
    void refresh(Widget nextVersion) {
      assert(_mounted);
      print("refresh Widget: ${_path}");
  
      if (_nextState != null) {
        _state = _nextState;
  