 
 //===--- Compiler conversion/casting entry points -------------------------===//
 
-/// Perform a non-bridged upcast from the source to another dictionary.
+/// Perform a non-bridged upcast from the `source` to another dictionary.
 ///
-/// Requires: BaseKey and BaseValue are base classs or base objc
-/// protocols (such as AnyObject) of DerivedKey and DerivedValue,
+/// Requires: `BaseKey` and `BaseValue` are base classes or base objc
+/// protocols (such as `AnyObject`) of `DerivedKey` and `DerivedValue`,
 /// respectively.
-///
-/// FIXME: This crappy implementation is O(n) because it copies the
-/// data; a proper implementation would be O(1).
-public
-func _dictionaryUpCast<DerivedKey, DerivedValue, BaseKey, BaseValue>(
-       source: Dictionary<DerivedKey, DerivedValue>
-     ) -> Dictionary<BaseKey, BaseValue> {
-  _sanityCheck(_isBridgedVerbatimToObjectiveC(BaseKey.self))
-  _sanityCheck(_isBridgedVerbatimToObjectiveC(BaseValue.self))
-  _sanityCheck(_isBridgedVerbatimToObjectiveC(DerivedKey.self))
-  _sanityCheck(_isBridgedVerbatimToObjectiveC(DerivedValue.self))
+public func _dictionaryUpCast<DerivedKey, DerivedValue, BaseKey, BaseValue>(
+    source: Dictionary<DerivedKey, DerivedValue>
+) -> Dictionary<BaseKey, BaseValue> {
+  // FIXME: This crappy implementation is O(n) because it copies the
+  // data; a proper implementation would be O(1).
+
+  _sanityCheck(_isClassOrObjCExistential(BaseKey.self))
+  _sanityCheck(_isClassOrObjCExistential(BaseValue.self))
+  _sanityCheck(_isClassOrObjCExistential(DerivedKey.self))
+  _sanityCheck(_isClassOrObjCExistential(DerivedValue.self))
 
   var result = Dictionary<BaseKey, BaseValue>(minimumCapacity: source.count)
   for (k, v) in source {

struct Dictionary<
  KeyType : Hashable, ValueType
> : Collection, DictionaryLiteralConvertible {
  
  typealias _Self = Dictionary<KeyType, ValueType>
  public
  typealias _VariantStorage = _VariantDictionaryStorage<KeyType, ValueType>

  }
}

public struct _CocoaDictionaryStorage : _DictionaryStorage {
  public var cocoaDictionary: _SwiftNSDictionary

  typealias Index = _CocoaDictionaryIndex
