@Test
public void testRecoursiveResolution() {

    Properties values = new Properties();
    values.setProperty("color", "brown");
    values.setProperty("animal", "quick ${color} fox");
    values.setProperty("target.attribute", "lazy");
    values.setProperty("target.animal", "dog");
    values.setProperty("target", "${target.attribute} ${target.animal}");
    values.setProperty("template", "The ${animal} jumped over the ${target}.");
    String templateString = "${template}";
    StrSubstitutor sub = new StrSubstitutor(values);
    String resolvedString = sub.replace(templateString);
    assertEquals("The quick brown fox jumped over the lazy dog.", resolvedString);
}