Add interal allObjects on NSOrderedSet
diff --git a/Foundation/NSOrderedSet.swift b/Foundation/NSOrderedSet.swift
index 99d775b..2146083 100644
--- a/Foundation/NSOrderedSet.swift
+++ b/Foundation/NSOrderedSet.swift
@@ -120,6 +120,16 @@
             _insertObject(obj)
         }
     }
+    
+    internal var allObjects: [Any] {
+        if type(of: self) === NSOrderedSet.self || type(of: self) === NSMutableOrderedSet.self {
+            return _orderedStorage.map { _SwiftValue.fetch($0) }
+        } else {
+            return (0..<count).map { idx in
+                return self[idx]
+            }
+        }
+    }
 }
 
 extension NSOrderedSet : Sequence {
diff --git a/Foundation/NSPredicate.swift b/Foundation/NSPredicate.swift
index dae8157..083782b 100644
--- a/Foundation/NSPredicate.swift
+++ b/Foundation/NSPredicate.swift
@@ -127,8 +127,8 @@
 
 extension NSOrderedSet {
     open func filtered(using predicate: NSPredicate) -> NSOrderedSet {
-        return NSOrderedSet(array: self._orderedStorage.filter({ object in
-            return predicate.evaluate(with: _SwiftValue.fetch(object))
+        return NSOrderedSet(array: self.allObjects.filter({ object in
+            return predicate.evaluate(with: object)
         }))
     }
 }