func asDictionary<K, V>(any: Any, type: (key: K.Type, value: V.Type) = (K.self, V.self)) -> [K: V]? { let mirror = Mirror(reflecting: any) let properties = mirror.children guard let displayStyle = mirror.displayStyle where displayStyle == .Dictionary else { return nil } var dictionary = [K: V]() for property in properties { let pair = Array(Mirror(reflecting: property.value).children) if let key = pair[0].value as? K, let value = pair[1].value as? V { dictionary[key] = value } else { return nil } } return dictionary }