     else
       @cachedContents
 
-  # Checks to see if a file exists.
-  #
-  # Returns a {Boolean}.
+  # Public: Returns whether a file exists.
   exists: ->
     fsUtils.exists(@getPath())
 
-  ### Internal ###
-
+  # Private:
   afterSubscribe: ->
     @subscribeToNativeChangeEvents() if @exists() and @subscriptionCount() == 1
 
+  # Private:
   afterUnsubscribe: ->
     @unsubscribeFromNativeChangeEvents() if @subscriptionCount() == 0
 
+  # Private:
   handleNativeChangeEvent: (eventType, path) ->
     if eventType is "delete"
       @unsubscribeFromNativeChangeEvents()

      @cachedContents = null
      @trigger "removed"

  subscribeToNativeChangeEvents: ->
    @watchSubscription = pathWatcher.watch @path, (eventType, path) =>
      @handleNativeChangeEvent(eventType, path)

  unsubscribeFromNativeChangeEvents: ->
    if @watchSubscription
      @watchSubscription.close()


# Public: Represents an individual file in the editor.
#
# This class shouldn't be created directly, instead you should create a 
# {Directory} and access the {File} objects that it creates.
module.exports =
class File
  _.extend @prototype, EventEmitter
