Adicionar restrições aos parâmetros genéricos na extensão

Eu tenho esta função:

func flatten<Key: Hashable, Value>(dict: Dictionary<Key, Optional<Value>>) -> Dictionary<Key, Value> {
    var result = [Key: Value]()
    for (key, value) in dict {
        guard let value = value else { continue }
        result[key] = value
    }
    return result
}

Como você pode ver, ele transforma um[Key: Value?] dicionário em um[Key: Value] um (sem o opcional).

Eu queria estender aDictionary classe com um novo método apenas para classes cujo valor é umOptional de qualquer tipo, mas não consigo adicionar restrições aos parâmetros genéricos do dicionário.

Isto é o que eu tentei:

extension Dictionary where Value: Optional<Any> {
    func flatten() -> [Key: Any] {
        var result = [Key: Any]()
        for (key, value) in self {
            guard let value = value else { continue }
            result[key] = value
        }
        return result
    }
}

Mas falha com o erro:

Type 'Value' constrained to non-protocol type 'Optional<Any>'

questionAnswers(2)

yourAnswerToTheQuestion