@Test
public void testReplacePlaceholdersListAttribute() {

    Map<String, Attribute> attributes = new HashMap<String, Attribute>();
    ListAttribute listAttribute = new ListAttribute();
    ListAttribute internalListAttribute = new ListAttribute();
    listAttribute.setInherit(true);
    attributes.put("myList", listAttribute);
    listAttribute.add(new Attribute("value{2}"));
    listAttribute.add(new Attribute("value{2}{3}"));
    listAttribute.add(internalListAttribute);
    internalListAttribute.add(new Attribute("secondvalue{2}"));
    internalListAttribute.add(new Attribute("secondvalue{2}{3}"));
    Definition definition = new Definition("definitionName", new Attribute(
            "template{1}"), attributes);
    Definition nudef = PatternUtil.replacePlaceholders(definition, "nudef",
            "value0", "value1", "value2", "value3");
    assertEquals("nudef", nudef.getName());
    Attribute attribute = nudef.getTemplateAttribute();
    assertEquals("templatevalue1", attribute.getValue());
    ListAttribute nuListAttribute = (ListAttribute) nudef.getAttribute("myList");
    assertTrue(nuListAttribute.isInherit());
    List<Attribute> list = nuListAttribute.getValue();
    assertEquals(LIST_ATTRIBUTE_SIZE, list.size());
    attribute = list.get(0);
    assertEquals("valuevalue2", attribute.getValue());
    attribute = list.get(1);
    assertEquals("valuevalue2value3", attribute.getValue());
    ListAttribute evaluatedListAttribute = (ListAttribute) list.get(2);
    assertFalse(evaluatedListAttribute.isInherit());
    list = evaluatedListAttribute.getValue();
    assertEquals(2, list.size());
    attribute = list.get(0);
    assertEquals("secondvaluevalue2", attribute.getValue());
    attribute = list.get(1);
    assertEquals("secondvaluevalue2value3", attribute.getValue());
}