 
 extension List {
 
+    /// Insert `newElement` before the element at `index`.
+    ///
+    /// If this is the *first* modification to the list since creation or copying, invalidates all indices with respect to `self`.
+    ///
+    /// - Complexity: O(1).
     public mutating func insert(newElement: Element, atIndex index: Index) {
         let index = needsUnique ? uniqueTransferringIndex(index) : index
         let node = Node(value: newElement)

    /// Create an empty list.
    public init() { }

    public init<S : SequenceType where S.Generator.Element == Element>(_ sequence: S) {
        for v in sequence {
            append(v)

        index.prev = Unowned(node)
    }

    /// Remove and return the element at `index`.
    ///
    /// If this is the *first* modification to the list since creation or copying, invalidates all indices with respect to `self`.
    ///
    /// - Complexity: O(1).
    public mutating func removeAtIndex(index: Index) -> Element {
        let index = needsUnique ? uniqueTransferringIndex(index) : index
        let prev = index.prev, next = index.next
