Other Notes

- The escape character '\' can be used when necessary to escape the following characters: $ , { }
- WARNING: It is possible to cause {@link java.lang.StackOverflowError StackOverflowErrors} if your nested variables result in a recursive loop (e.g. the environment variable 'MYPROPERTY' has the value '$E{MYPROPERTY}'). So don't do that!
- As a general rule, this class tries to be as efficient as possible by not creating new strings when not needed.
  For example, calling the resolve method on a string that doesn't contain variables (e.g. resolver.resolve("foobar")) will simply be a no-op and return the same string.