     @on 'changed', callback
     cancel: => @unobserve(callback)
 
-  # Public: Removes the callback that's fired whenever the marker changes.
+  # Removes the callback that's fired whenever the marker changes.
   #
   # callback - A {Function} to remove
   unobserve: (callback) ->

    screenPosition = @displayBuffer.clipScreenPosition(screenPosition, options)
    @setHeadBufferPosition(@displayBuffer.bufferPositionForScreenPosition(screenPosition, options))

  # Public: Retrieves the buffer position of the marker's head.
  #
  # Returns a {Point}.
  getHeadBufferPosition: ->
    @buffer.getMarkerHeadPosition(@id)

  # Public: Sets the buffer position of the marker's head.
  #
  # screenRange - The new {Point} to use
  # options - A hash of options matching those found in {DisplayBuffer.bufferPositionForScreenPosition}
  setHeadBufferPosition: (bufferPosition) ->
    @buffer.setMarkerHeadPosition(@id, bufferPosition)

  # Public: Retrieves the screen position of the marker's tail.
  #
  # Returns a {Point}.
  getTailScreenPosition: ->
    @tailScreenPosition ?= @displayBuffer.screenPositionForBufferPosition(@getTailBufferPosition(), wrapAtSoftNewlines: true)
  
  # Public: Sets the screen position of the marker's tail.
  #
  # screenRange - The new {Point} to use
  # options - A hash of options matching those found in {DisplayBuffer.bufferPositionForScreenPosition}

  placeTail: ->
    @buffer.placeMarkerTail(@id)

  # Removes the tail from the marker.
  clearTail: ->
    @buffer.clearMarkerTail(@id)

  # Sets a callback to be fired whenever the marker is changed.
  #
  # callback - A {Function} to execute
  observe: (callback) ->
