IsAnonymous interface and default value
cleanup on getName
some repeated method implementation moved to abstract classes as default
Dropped string cache in favor of String.intern()

In Java 8 (and recent enough 7) String.intern() does not hog memory like
in Java 6 and it's faster and better than local pools.
http://java-performance.info/string-intern-in-java-6-7-8/