   # Public: Sets the head position of the marker. If the marker doesn't have a
   # tail, it will after calling this method.
   #
-  # position - A {Point} or point-compatible {Array}. The position will be
-  #            clipped before it is assigned.
-  # properties - An optional hash of properties to associate with the marker.
+  # * `position` A {Point} or point-compatible {Array}. The position will be
+  #   clipped before it is assigned.
+  # * `properties` (optional) {Object} properties to associate with the marker.
   setTailPosition: (position, properties) ->
     position = @clipPosition(Point.fromObject(position, true))
     params = @extractParams(properties)


  # Public: Merges an {Object} containing new properties into the marker's
  # existing properties.
  setProperties: (properties) ->
    @update(properties: extend({}, @getProperties(), properties))

  # Public: Creates and returns a new {Marker} with the same properties as this
  # marker.
  copy: (params) ->
    @manager.createMarker(extend(@toParams(), @extractParams(params)))



OptionKeys = ['reversed', 'tailed', 'invalidate', 'persistent']

# Essential: Represents a buffer annotation that remains logically stationary
# even as the buffer changes. This is used to represent cursors, folds, snippet
# targets, misspelled words, and anything else that needs to track a logical
# location in the buffer over time.
#
