Java8 plugin that adds support for persistent local variables
github.com
github.com
Also, it seems like (if abused) it would make unit testing really cumbersome without some sort of side-effecting mechanism to expose these persistent variables.
But it is a good example on how to write a plugin, with annotations and instrumentation. So the interesting parts are on the code implementing this functionality.
The doc says that the transformed variable name uses the method name for a suffix to avoid name clashing. But it needs to use the signature, right? Else you would have clashes for two methods with the same name (but different arguments).
I think it should also use $, since that's the convention to avoid clashes with user defined names.