Method parameters are considered to be final in the linking / scoping of the expression that is contained in your method. If parameters weren't final, none of them could be used from within lambda expressions. Unfortunately there is no means of 'final' in the reflective API (java.lang.reflect) for parameters. Therefore no property 'isFinal' can be exposed but we simply mark them as such internally.
The error message 'This expression is not allowed in this context, since it doesn't cause any side effects.' is misleading though. It likely shadows the real error that there is no such method JvmFormalParameter.setFinal(boolean)
.