Por que você não pode usar a função anon com um parâmetro dinâmico?

Acabei de encontrar isso hoje

Uma função anônima ou grupo de métodos não pode ser usado como um valor constituinte de uma operação vinculada dinamicamente.

ao tentar fazer

static R ifNotNull<R>(dynamic o, Func<dynamic, R> returnFunc, R otherwise) {
    return ReferenceEquals(null, o) ? otherwise : returnFunc(o);
}

e use-o com

dynamic firstAddress = ...;
return ifNotNull<string>(firstAddress, (a) => a.address_1, null)

Agora, a maioria das limitações dinâmicas faz sentido para mim - você não pode usar um método de extensão porque como o compilador deve decidir qual estática deve ser compilada? Mas eu não entendo isso aqui. De onde vem a confusão? Qual é exatamente a limitação?

questionAnswers(2)

yourAnswerToTheQuestion