Hey here (hope i'm on the good list), i have a StringSubstitutor use case where i'd need arbitrary level of depth in my values, that could be hashmap containing hashmaps etc... to substitute things like "my ${job.name} is ${adjective.wealth.good}" and where i only put in the initial map and hashmap at the key "job", and another at "adjective". Both being filled as you guess it.
Should i write my own string lookup? or something exists already and i'm overcomplicating things? Nicolas