anchor.diff:  
     /** [ChangeDetector] used for field watching */
     final ChangeDetectorGroup<_Handler> _changeDetector;
  -  /** A cache for sharing sub expression watching. Watching `a` and `a.b` will
  -  * watch `a` only once. */
     final RootWatchGroup _rootGroup;
   
     /// STATS: Number of field watchers which are in use.
  
positive.code:   /**
     * Create a new child [WatchGroup].
     *
     * - [context] if present the the child [WatchGroup] expressions will evaluate
     * against the new [context]. If not present than child expressions will
     * evaluate on same context allowing the reuse of the expression cache.
     */
    WatchGroup newGroup([Object context]) {
      _EvalWatchRecord prev = _childWatchGroupTail._evalWatchTail;
  
negative.code:   bool release() {
      if (_WatchList._isEmpty(this) && _LinkedList._isEmpty(this)) {
        _releaseWatch();
  
        if (forwardingHandler != null) {
          // TODO(misko): why do we need this check?
  