             return url
         } else if type == Decimal.self || type == NSDecimalNumber.self {
             return try self.unbox(value, as: Decimal.self)
-        } else if let stringKeyedDictType = type as? _JSONStringDictionaryMarker.Type {
+        } else if let stringKeyedDictType = type as? _JSONStringDictionaryDecodableMarker.Type {
             return try self.unbox(value, as: stringKeyedDictType)
         } else {
             self.storage.push(container: value)

//
//===----------------------------------------------------------------------===//

fileprivate protocol _JSONStringDictionaryMarker {
    static var elementType: Decodable.Type { get }
}

extension Dictionary : _JSONStringDictionaryMarker where Key == String, Value: Decodable {
    static var elementType: Decodable.Type { return Value.self }
}


        } else if type == Decimal.self || type == NSDecimalNumber.self {
            // JSONSerialization can natively handle NSDecimalNumber.
            return (value as! NSDecimalNumber)
        } else if type is _JSONStringDictionaryEncodableMarker {
            return self.box(value as! Dictionary<String, Encodable>)
        }

