I'm not sure I like caching failed lookups, just do like in Dispatchers and return the default?
Could we also try TrieMap instead of CHM (as Java 6 & 7 CHM locks on reads)?