anchor.diff:  
         _invokeReconcile();
       } finally {
  -      _aceSubscription = _session.onChange.listen((_) => dirty = true);
  +      if (!fireEvent) {
  +        _aceSubscription = _session.onChange.listen((_) => dirty = true);
  +      }
       }
     }
   
  
positive.code:   }
  
    /**
     * Replace the editor's contents with the given text. Make sure that we don't
     * fire a change event.
     */
    void replaceContents(String newContents) {
      _aceSubscription.cancel();
  
      try {
        // Restore the cursor position and scroll location.
  
negative.code: 
          if (fileContentsHash != _lastSavedHash) {
            _lastSavedHash = fileContentsHash;
            _replaceContents(text);
          }
        });
      }
  