anchor.diff:          };
         } else if (expression.startsWith(':')) {
           expression = expression.substring(1);
  -        fn = (value, last) {
  -          if (value != null) {
  -            return reactionFn(value, last);
  -          }
  -        };
  +        fn = (value, last) => value == null ? null : reactionFn(value, last);
         }
         ast = rootScope._astParser(expression, context: context, filters: filters);
       } else {
  
positive.code:    */
    bool get isDestroyed {
      var scope = this;
      var root = rootScope;
      while(scope != null) {
        if (scope == root) {
          return false;
        }
        scope = scope._parentScope;
      }
      return true;
  
negative.code:   }
  }
  
  _mapEqual(Map a, Map b) => a.length == b.length &&
      a.keys.every((k) => b.containsKey(k) && a[k] == b[k]);
  
  class RootScope extends Scope {
    static final STATE_APPLY = 'apply';
  