anchor.diff:  
     static final Map<GlobalKey, Element> _registry = new Map<GlobalKey, Element>();
     static final Map<GlobalKey, int> _debugDuplicates = new Map<GlobalKey, int>();
  -  static final Map<GlobalKey, Set<GlobalKeyUpdateListener>> _updateListeners = new Map<GlobalKey, Set<GlobalKeyUpdateListener>>();
     static final Map<GlobalKey, Set<GlobalKeyRemoveListener>> _removeListeners = new Map<GlobalKey, Set<GlobalKeyRemoveListener>>();
  -  static final Set<GlobalKey> _updatedKeys = new Set<GlobalKey>();
     static final Set<GlobalKey> _removedKeys = new Set<GlobalKey>();
   
  -  // TODO(ianh): call this
     void _register(Element element) {
       assert(() {
         if (_registry.containsKey(this)) {
  
positive.code:         throw message;
        return true;
      });
      if (_updatedKeys.isEmpty && _removedKeys.isEmpty)
        return;
      try {
        for (GlobalKey key in _updatedKeys) {
          Element element = _registry[key];
          if (element != null && _updateListeners.containsKey(key)) {
            Set<GlobalKeyUpdateListener> localListeners = new Set<GlobalKeyUpdateListener>.from(_updateListeners[key]);
            for (GlobalKeyUpdateListener listener in localListeners)
              listener(key, element);
          }
        }
        for (GlobalKey key in _removedKeys) {
          if (!_registry.containsKey(key) && _removeListeners.containsKey(key)) {
            Set<GlobalKeyRemoveListener> localListeners = new Set<GlobalKeyRemoveListener>.from(_removeListeners[key]);
  
negative.code:     assert(_debugLifecycleState == _ElementLifecycle.mounted);
      assert(widget != null);
      assert(depth != null);
      if (widget.key is GlobalKey)
        widget.key._unregister(this);
      assert(() { _debugLifecycleState = _ElementLifecycle.defunct; return true; });
    }
  
  