     @undoSubscriptions.add undoManager.onDidCloseUndoGroup (group) =>
       if not undoManager.isUndoing and not undoManager.isRedoing and group.length > 0
         @updateChangeCount(Outline.ChangeDone)
-        @scheduleModifiedEvents()
     @undoSubscriptions.add undoManager.onWillUndo =>
       @breakUndoCoalescing()
     @undoSubscriptions.add undoManager.onDidUndo =>
       @updateChangeCount(Outline.ChangeUndone)
       @breakUndoCoalescing()
-      @scheduleModifiedEvents()
     @undoSubscriptions.add undoManager.onWillRedo =>
       @breakUndoCoalescing()
     @undoSubscriptions.add undoManager.onDidRedo =>
       @updateChangeCount(Outline.ChangeRedone)
       @breakUndoCoalescing()
-      @scheduleModifiedEvents()
 
     @reloadSerialization(serialization)
 


  isRetained: -> @refcount > 0

  # Public: Determine if the outline has changed since it was loaded.
  #
  # If the outline is unsaved, always returns `true` unless the outline is
  # empty.
  #
  # Returns a {Boolean}.
  isModified: ->
    @changeCount isnt 0

  updateChangeCount: (change) ->
    switch change
      when Outline.ChangeDone
        @changeCount++
      when Outline.ChangeUndone

  onDidEndChanges: (callback) ->
    @emitter.on 'did-end-changes', callback

  # Public: Invoke the given callback when the outline's change count is
  # updated.
  #
  # - `callback` {Function} to be called when change count is updated.
  #   - `changeType` The type of change made to the document.
  #
  # Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
  onDidUpdateChangeCount: (callback) ->
    @emitter.on 'did-update-change-count', callback

  # Public: Invoke the given callback when the outline is destroyed.
  #
