 
   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.
+  # Public: Determine if the outline is edited.
   #
   # Returns a {Boolean}.
-  isModified: ->
+  isEdited: ->
     @changeCount isnt 0
 
-  updateChangeCount: (change) ->
-    switch change
+  # Public: Updates the receiver’s change count according to the given change
+  # type.
+  updateChangeCount: (changeType) ->
+    switch changeType
       when Outline.ChangeDone
         @changeCount++
       when Outline.ChangeUndone

      each.setUserData editorID, undefined
    @destroy() unless @isRetained()
    this

  cancelStoppedChangingTimeout: ->
    clearTimeout(@stoppedChangingTimeout) if @stoppedChangingTimeout

  scheduleModifiedEvents: ->
    @cancelStoppedChangingTimeout()
    stoppedChangingCallback = =>
      @stoppedChangingTimeout = null
      modifiedStatus = @isModified()
      @emitModifiedStatusChanged(modifiedStatus)
    @stoppedChangingTimeout = setTimeout(
      stoppedChangingCallback,
      @stoppedChangingDelay
    )

  emitModifiedStatusChanged: (modifiedStatus) ->
    return if modifiedStatus is @previousModifiedStatus
    @previousModifiedStatus = modifiedStatus
    @emitter.emit 'did-change-modified', modifiedStatus

Outline.ChangeDone = 0
Outline.ChangeUndone = 1

    @changesCallbacks.push(callback) if callback
    @changingCount--
    if @changingCount is 0
      @emitter.emit('did-end-changes', @changes)
      changesCallbacks = @changesCallbacks
      @changesCallbacks = null
      for each in changesCallbacks
