anchor.diff:        return;
       }
   
  -    if (aspect is _SelectorAspect<T, Object>) {
  +    if (aspect is _SelectorAspect<T>) {
         final selectorDependency = (dependencies ?? _SelectorDependency<T>(_frameId)) as _SelectorDependency<T>;
         if (selectorDependency.latestFrameId != _frameId) {
           selectorDependency.latestFrameId = _frameId;
  
positive.code:   }
  }
  
  class _SelectorAspect<T, R> {
    _SelectorAspect(this.selector, this.selected);
  
    final R Function(T value) selector;
    final R selected;
  }
  
  class _SelectorDependency<T> {
    _SelectorDependency(this.latestFrameId);
  
    int latestFrameId;
  
    List<_SelectorAspect<T, Object>> selectors = [];
  }
  
  bool _didWatchFrameId = false;
  
negative.code:     var shouldNotify = false;
      if (dependencies != null) {
        if (dependencies is _SelectorDependency<T>) {
          for (final updateShouldNotify in dependencies.selectors) {
            try {
              assert(() {
                _debugIsSelecting = true;
                return true;
              }());
              shouldNotify = updateShouldNotify(value);
            } finally {
              assert(() {
                _debugIsSelecting = false;
                return true;
              }());
            }
            if (shouldNotify) {
              break;
            }
          }
  