     // Forced down-cast (possible deferred type-checking)
     return Array(ArrayBuffer(reinterpretCast(source) as _CocoaArray))
   }
-  else {
-    let result = T[]._bridgeFromObjectiveCImpl(source)
-    if _fastPath(result) {
-      return result!
-    }
-    
-    _preconditionFailure(
-      "NSArray element failed to bridge to Array element type")
-  }
+
+  var anyObjectArr: AnyObject[]
+    = Array(ArrayBuffer(reinterpretCast(source) as _CocoaArray))
+  let result: T[]? = _arrayBridgeFromObjectiveC(anyObjectArr)
+  if _fastPath(result) {
+    return result!
+  }
+  
+  _preconditionFailure(
+    "NSArray element failed to bridge to Array element type")
 }
 
 /// The entry point for converting `Array` to `NSArray` in bridge

    _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
  }
}


    if !Swift.isBridgedToObjectiveC(T.self) {
      return nil
    }


    var anyObjectArr: AnyObject[]
      = AnyObject[](ArrayBuffer(reinterpretCast(source) as _CocoaArray))
    return _arrayBridgeFromObjectiveC(anyObjectArr)
  }

  @conversion func __conversion() -> NSArray {
