Merge pull request #918 from rxwei/master

diff --git a/Foundation/NSOrderedSet.swift b/Foundation/NSOrderedSet.swift
index 33b5f4e..9f85df1 100644
--- a/Foundation/NSOrderedSet.swift
+++ b/Foundation/NSOrderedSet.swift
@@ -391,6 +391,16 @@
         _storage.remove(value)
         _orderedStorage.remove(at: index(of: object))
     }
+
+    open override subscript(idx: Int) -> Any {
+        get {
+            return object(at: idx)
+        }
+        set {
+            replaceObject(at: idx, with: newValue)
+        }
+    }
+    
 }
 
 extension NSMutableOrderedSet {
diff --git a/TestFoundation/TestNSOrderedSet.swift b/TestFoundation/TestNSOrderedSet.swift
index d043824..10761b3 100644
--- a/TestFoundation/TestNSOrderedSet.swift
+++ b/TestFoundation/TestNSOrderedSet.swift
@@ -207,10 +207,11 @@
     func test_ReplaceObject() {
         let set = NSMutableOrderedSet(arrayLiteral: "foo", "bar", "baz")
         set.replaceObject(at: 1, with: "123")
+        set[2] = "456"
         XCTAssertEqual(set.count, 3)
         XCTAssertEqual(set[0] as? String, "foo")
         XCTAssertEqual(set[1] as? String, "123")
-        XCTAssertEqual(set[2] as? String, "baz")
+        XCTAssertEqual(set[2] as? String, "456")
     }
 
     func test_ExchangeObjects() {