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.