No more warning about useless 'import java.util.ArrayList;'
Updated TODO
Reduce the chance of naming conflict between public user-defined field
names and local variables by preprending an underscore.
Enums are no longer in a separate file, which is more logical and avoids
potential name conflicts. ExampleSumTag.FOO becomes ExampleSum.Tag.FOO.
Updated TODO.
Merge TODO