 }
 
 extension NSArray : Sequence {
+  @final
   func generate() -> NSFastGenerator {
     return NSFastGenerator(self)
   }
 }
+
+/*
+// FIXME: <rdar://problem/16951124> prevents this from being used
+extension NSArray : Swift.Collection {
+  @final
+  var startIndex: Int {
+    return 0
+  }
+  
+  @final
+  var endIndex: Int {
+    return count
+  }
+
+  subscript(i: Int) -> AnyObject {
+    return self.objectAtIndex(i)
+  }
+}
+*/
 
 // FIXME: This should not be necessary.  We
 // should get this from the extension on 'NSArray' above.

///
///   func f(NSView[]) {}
///
/// to Objective-C code as a method that accepts an NSArray.
func _convertNSArrayToArray<T>(nsarr: NSArray) -> T[] {
  if let arr = T[].bridgeFromObjectiveC(nsarr) {
    return arr
  }
  _fatalError("NSArray does not bridge to array")
}

/// The entry point for converting `Array` to `NSArray` in bridge

    self.init(objects: UnsafePointer(x.elementStorage), count: x.count)
    _fixLifetime(x)
  }

  /// An `AnyObject[]` that shares `self`\ 's storage.  If `self` is
  /// mutable, any changes to it may be observable by the result.
  @final
  var _arraySharingStorage: AnyObject[] {
    return Array(ArrayBuffer(reinterpretCast(self) as CocoaArray))
  }

  @final
  @conversion
  func __conversion() -> AnyObject[] {
    return self.copyWithZone(nil)!._arraySharingStorage
  }
}

