anchor.diff:    }
   
     /**
  -   * Replace the editor's contents with the given text. Make sure that we don't
  -   * fire a change event.
  +   * Replace the editor's contents with the given text.
      */
  -  void replaceContents(String newContents) {
  -    _aceSubscription.cancel();
  +  void replaceContents(String newContents) =>
  +      _replaceContents(newContents, fireEvent: true);
  +
  +  /**
  +   * Replace the editor's contents with the given text - internal version.
  +   * Suppress firing Ace event by default: internal callers don't need it.
  +   */
  +  void _replaceContents(String newContents, {fireEvent: false}) {
  +    if (!fireEvent) {
  +      _aceSubscription.cancel();
  +    }
   
       try {
         // Restore the cursor position and scroll location.
  
positive.code: 
        _invokeReconcile();
      } finally {
        _aceSubscription = _session.onChange.listen((_) => dirty = true);
      }
    }
  
  
negative.code:     String oldValue = _session.value;
      String newValue = new CssBeautify().format(oldValue);
      if (newValue != oldValue) {
        _replaceContents(newValue);
        dirty = true;
      }
    }
  