     else
       new Range([row, 0], [row, @lineLengthForRow(row)])
 
-  # Gets the number of lines in a file.
-  #
-  # Returns a {Number}.
-  getLineCount: -> super
-
-  # Gets the row number of the last line.
-  #
-  # Returns a {Number}.
-  getLastRow: -> super
-
   # Finds the last line in the current buffer.
   #
   # Returns a {String}.

  delete: (range) ->
    @change(range, '')

  # Given a position, this clips it to a real position.
  #
  # For example, if `position`'s row exceeds the row count of the buffer,
  # or if its column goes beyond a line's length, this "sanitizes" the value
  # to a real position.
  #
  # Returns the new, clipped {Point}. Note that this could be the same as `position` if no clipping was performed.
  clipPosition: (position) -> super

  # Given a range, this clips it to a real range.
  #
  # For example, if `range`'s row exceeds the row count of the buffer,
  # or if its column goes beyond a line's length, this "sanitizes" the value
  # to a real range.
  #
  # range - The {Range} to clip
  #
  # Returns the new, clipped {Range}. Note that this could be the same as `range` if no clipping was performed.
  clipRange: (range) ->
    range = Range.fromObject(range)
    new Range(@clipPosition(range.start), @clipPosition(range.end))

  undo: -> super

  redo: -> super

  # Saves the buffer.
  save: ->
    @saveAs(@getPath()) if @isModified()

  # Returns a {Boolean}.
  isInConflict: -> @conflict

  destroyMarker: (id) ->
    @getMarker(id)?.destroy()

  # Retrieves the quantity of markers in a buffer.
  #
  # Returns a {Number}.
  getMarkerCount: ->
    @getMarkers().length

  # Identifies if a character sequence is within a certain range.
  #
