anchor.diff:  
       if (oldNode != null) {
         if (oldNode.runtimeType == newNode.runtimeType && oldNode.key == newNode.key) {
  -        if (newNode._retainStatefulNodeIfPossible(oldNode)) {
  +        if (oldNode.retainStatefulNodeIfPossible(newNode)) {
             assert(oldNode.mounted);
             assert(!newNode.mounted);
             oldNode.setParent(this);
  
positive.code:       assert(old is RenderObjectWrapper);
        _root = old.root;
        _ancestor = old._ancestor;
      }
      assert(_root == root); // in case a subclass reintroduces it
      assert(root != null);
  
negative.code:   }
  
    // you should not build the UI tree ahead of time, build it only during build()
    bool _isConstructedDuringBuild() => this is AbstractWidgetRoot || this is App || _inRenderDirtyComponents || _inLayoutCallbackBuilder > 0;
  
    String _key;
  
  