El compilador .NET y "No todas las rutas de código devuelven un valor"

¿Por qué en el código como abajo, el compilador .NET no puede establecer que todas las rutas de código devuelven un valor?

<code>bool Test(bool param) {
    bool test = true;
    if (param)
        test = false;
    else
        test = false;
    if (!test)
        return false;
}
</code>

error CS0161: ¡No todas las rutas de código devuelven un valor!

El código puede ser refactorizado, pero el compilador no está sugiriendo eso. Sin embargo, todas las rutas de retorno están cubiertas, entonces ¿por qué el compilador se queja de que no lo están?

Edit: supongo que la conclusión aquí es que:

<code>(error CS0161) + (all code paths obviously return a value) => refactor code.  
</code>

Una vez que adquiera el hábito de esa traducción, supongo que todo está bien.

Respuestas a la pregunta(5)

Su respuesta a la pregunta