     
     if _fastPath(_isBridgedVerbatimToObjectiveC(T.self)) {
       // Forced down-cast (possible deferred type-checking)
-      return Array(_ArrayBuffer(reinterpretCast(source) as _CocoaArrayType))
+      return Array(_ArrayBuffer(unsafeBitCast(source, _CocoaArrayType.self)))
     }
 
     var anyObjectArr: [AnyObject]
-      = [AnyObject](_ArrayBuffer(reinterpretCast(source) as _CocoaArrayType))
+    = [AnyObject](_ArrayBuffer(unsafeBitCast(source, _CocoaArrayType.self)))
     return _arrayBridgeFromObjectiveC(anyObjectArr)
   }
 

    }

    self._core = _StringCore(
      baseAddress: reinterpretCast(start),
      count: length,
      elementShift: isUTF16 ? 1 : 0,
      hasCocoaBuffer: true,
      owner: reinterpretCast(cfImmutableValue))
  }
}


    // Treat it as a CF object because presumably that's what these
    // things tend to be, and CF has a fast path that avoids
    // objc_msgSend
    let cfValue = unsafeBitCast(_cocoaString, CFString.self)

    // "copy" it into a value to be sure nobody will modify behind
    // our backs.  In practice, when value is already immutable, this
