anchor.diff:    final bool _isolate;
     final bool _lazy;
     final Profiler _perf;
  +
  +  /**
  +   * The direct parent scope that created this scope (this can also be the $rootScope)
  +   */
     final Scope $parent;
   
  +  /**
  +   * The auto-incremented ID of the scope
  +   */
     String $id;
  +
  +  /**
  +   * The topmost scope of the application (same as $rootScope).
  +   */
     Scope $root;
     num _nextId = 0;
     String _phase;
  
positive.code:   }
  
  
    $on(name, listener) {
      var namedListeners = _listeners[name];
      if (!_listeners.containsKey(name)) {
  
negative.code:     this._disabled = false;
    }
  
    /**
     * Processes all of the watchers of the current scope and its children.
     * Because a watcher's listener can change the model, the `$digest()` operation keeps calling
     * the watchers no further response data has changed. This means that it is possible to get
     * into an infinite loop. This function will throw `'Maximum iteration limit exceeded.'`
     * if the number of iterations exceeds 10.
     *
     * There should really be no need to call $digest() in production code since everything is
     * handled behind the scenes with zones and object mutation events. However, in testing
     * both $digest and [$apply] are useful to control state and simulate the scope life cycle in
     * a step-by-step manner.
     *
     * Refer to [$watch], [$watchSet] or [$watchCollection] to see how to register watchers that
     * are executed during the digest cycle.
     */
    $digest() {
      try {
        _beginPhase('\$digest');
  