@JsonAnySetter
    public void setProperty(String key, Object value) {

        properties.put(key, value);

        if (value instanceof Map) {
            try {
                String childJson = objectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(value);
                ChildEip childEip = objectMapper().readValue(childJson, ChildEip.class);
                if (childEip.getId() == null) {
                    childEip.setId(id + "-" + childEipMap.size());
                }
                childEipMap.put(key, Collections.singletonList(childEip));
                properties.remove(key);
            } catch (JsonProcessingException e) {
                throw new RuntimeException(e);
            }
        } else if (value instanceof List) {
            try {
                String childJson = objectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(value);
                CollectionType javaType = objectMapper().getTypeFactory().constructCollectionType(List.class, ChildEip.class);
                List<ChildEip> childEipList = objectMapper().readValue(childJson, javaType);
                childEipMap.put(key, childEipList);
                properties.remove(key);
            } catch (JsonProcessingException e) {
                throw new RuntimeException(e);
            }
        }
    }
@Test
    public void testSetProperty() {

        EipAttribute attribute = getInstance();
        ChildEip childEip = TestUtil.childEip();

        attribute.setProperty(DONT_CARE, Collections.singletonList(childEip));
        assertEquals(1, attribute.getChildEipMap().get(DONT_CARE).size());

        attribute = getInstance();
        attribute.setProperty(DONT_CARE, Collections.singletonMap(DONT_CARE, childEip));
        assertEquals(1, attribute.getChildEipMap().get(DONT_CARE).size());
    }