There are three philosofical reasons
1) it will be very bad performance wise. but if you really know what
you do you alway can use Reference directly. So the code can look like
this
def f1(List rows) {
Reference fees = 0d // compiler is smart enough will be Reference<Double>
rows.each { row ->
fees += row.fee
}
...
}
2) One of very often uses for closures is implementing "one method
abstract classes", which later will be send to different threads.
Mutable shared variable are too dangerous in this use cases
3) theoretically "closure" can be serialized and deserialized from
different JVM. in this case semantic of References is totally
undefined.
Because of all these three reasons we decided to be inconsistent with
normal Groovy in this area