The following code appears to show that final is being applied inconsistently. A final list can be amended but an object that manipulates a lsit that is final cannot. In the former case the final is being applied to the reference and in the later, it is being applied to the object.
|> groovy finalProblem.groovy
Caught: java.lang.IllegalAccessException: Field is final