         assert(["c", "d"], ==, list[thrd...thrd.successor()])
     }
 
+    func testSliceMutations() {
+        var list: List<Int> = [1, 2, 3, 4]
+        let index = list.startIndex.successor()
+        var slice = list[index...index.successor()]
+
+        list.prepend(0)
+        assert([2, 3], ==, slice)
+        assert([0, 1, 2, 3, 4], ==, list)
+
+        list.append(5)
+        assert([2, 3], ==, slice)
+        assert([0, 1, 2, 3, 4, 5], ==, list)
+
+        slice.append(6)
+        assert([2, 3, 6], ==, slice)
+        assert([0, 1, 2, 3, 4, 5], ==, list)
+
+        slice.prepend(-1)
+        assert([-1, 2, 3, 6], ==, slice)
+        assert([0, 1, 2, 3, 4, 5], ==, list)
+    }
+
     func assertEmpty<T>(list: List<T>, file: String = __FILE__, line: UInt = __LINE__) {
         assertEqual(list.isEmpty, true, "", file, line)
         assertNil(list.first, "", file: file, line: line)

        assert(list, ==, [1, 2, 3])
    }

    func testArrayLiteralConvertible() {
        var list: List<Int> = []
        assertEmpty(list)

        assertEmpty(List<Bool>())
        assertEmpty(List<String>())
        assertEmpty(List<Int>())
    }

    func testPrepend() {
