anchor.diff:      }
     }
   
  -  // TODO(ianh): call this
  -  void _didUpdate() {
  -    _updatedKeys.add(this);
  -  }
  -
  -  static void registerUpdateListener(GlobalKey key, GlobalKeyUpdateListener listener) {
  -    assert(key != null);
  -    Set<GlobalKeyUpdateListener> listeners =
  -        _updateListeners.putIfAbsent(key, () => new Set<GlobalKeyUpdateListener>());
  -    bool added = listeners.add(listener);
  -    assert(added);
  -  }
  -
  -  static void unregisterUpdateListener(GlobalKey key, GlobalKeyUpdateListener listener) {
  -    assert(key != null);
  -    assert(_updateListeners.containsKey(key));
  -    bool removed = _updateListeners[key].remove(listener);
  -    if (_updateListeners[key].isEmpty)
  -      _updateListeners.remove(key);
  -    assert(removed);
  -  }
  -
     static void registerRemoveListener(GlobalKey key, GlobalKeyRemoveListener listener) {
       assert(key != null);
       Set<GlobalKeyRemoveListener> listeners =
  
positive.code:     assert(_debugLifecycleState == _ElementLifecycle.mounted);
      assert(widget != null);
      assert(depth != null);
      assert(() { _debugLifecycleState = _ElementLifecycle.defunct; return true; });
    }
  
  
negative.code: 
    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<GlobalKeyRemoveListener>> _removeListeners = new Map<GlobalKey, Set<GlobalKeyRemoveListener>>();
    static final Set<GlobalKey> _removedKeys = new Set<GlobalKey>();
  
    void _register(Element element) {
      assert(() {
        if (_registry.containsKey(this)) {
  