       @editor.autoDecreaseIndentForBufferRow(newBufferRange.start.row)
 
     newBufferRange
-
-  # Public: Indents the given text to the suggested level based on the grammar.
-  #
-  # * `text` The {String} to indent within the selection.
-  # * `indentBasis` The beginning indent level.
-  normalizeIndents: (text, indentBasis) ->
-    textPrecedingCursor = @cursor.getCurrentBufferLine()[0...@cursor.getBufferColumn()]
-    isCursorInsideExistingLine = /\S/.test(textPrecedingCursor)
-
-    lines = text.split('\n')
-    firstLineIndentLevel = @editor.indentLevelForLine(lines[0])
-    if isCursorInsideExistingLine
-      minimumIndentLevel = @editor.indentationForBufferRow(@cursor.getBufferRow())
-    else
-      minimumIndentLevel = @cursor.getIndentLevel()
-
-    normalizedLines = []
-    for line, i in lines
-      if i == 0
-        indentLevel = 0
-      else if line == '' # remove all indentation from empty lines
-        indentLevel = 0
-      else
-        lineIndentLevel = @editor.indentLevelForLine(lines[i])
-        indentLevel = minimumIndentLevel + (lineIndentLevel - indentBasis)
-
-      normalizedLines.push(@setIndentationForLine(line, indentLevel))
-
-    normalizedLines.join('\n')
-
-  # Indent the current line(s).
-  #
-  # If the selection is empty, indents the current line if the cursor precedes
-  # non-whitespace characters, and otherwise inserts a tab. If the selection is
-  # non empty, calls {::indentSelectedRows}.
-  #
-  # * `options` (optional) {Object} with the keys:
-  #   * `autoIndent` If `true`, the line is indented to an automatically-inferred
-  #     level. Otherwise, {Editor::getTabText} is inserted.
-  indent: ({ autoIndent }={}) ->
-    { row, column } = @cursor.getBufferPosition()
-
-    if @isEmpty()
-      @cursor.skipLeadingWhitespace()
-      desiredIndent = @editor.suggestedIndentForBufferRow(row)
-      delta = desiredIndent - @cursor.getIndentLevel()
-
-      if autoIndent and delta > 0
-        @insertText(@editor.buildIndentString(delta))
-      else
-        @insertText(@editor.buildIndentString(1, @cursor.getBufferColumn()))
-    else
-      @indentSelectedRows()
-
-  # Public: If the selection spans multiple rows, indent all of them.
-  indentSelectedRows: ->
-    [start, end] = @getBufferRowRange()
-    for row in [start..end]
-      @editor.buffer.insert([row, 0], @editor.getTabText()) unless @editor.buffer.lineLengthForRow(row) == 0
-
-  # Public: ?
-  setIndentationForLine: (line, indentLevel) ->
-    desiredIndentLevel = Math.max(0, indentLevel)
-    desiredIndentString = @editor.buildIndentString(desiredIndentLevel)
-    line.replace(/^[\t ]*/, desiredIndentString)
 
   # Public: Removes the first character before the selection if the selection
   # is empty otherwise it deletes the selection.

        @emitter.emit 'did-destroy'
        @emitter.dispose()

  ###
  Section: Event Subscription
  ###

    @setBufferRange(@getBufferRange().union(otherSelection.getBufferRange()), options)
    otherSelection.destroy()

  ###
  Section: Comparing to other selections
  ###

  # Public: Compare this selection's buffer range to another selection's buffer
  # range.
  #
