source: class PropUtilsTest {
  
      @Test
      public void testUpdateProperties() {
  
target:     	Map<String, RequiredPropertyWrapper> properties = getProperties(new String[][] {
      		new String[] {
      				"unmodified", "", "DEFAULT_UNMODIFIED", ""
      		},
      		new String[] {
      				"computed", "", "DEFAULT_COMPUTED.${unmodified}", ""
      		},
      		new String[] {
      				"multiple", "", "DEFAULT_MULTIPLE.${computed}-${hasvalue}", ""
      		},
      		new String[] {
      				"hasvalue", "HASVALUE", "DEFAULT_HASVALUE", ""
      		},
      		new String[] {
      				"modified", "MODIFIED", "DEFAULT_MODIFIED.${hasvalue}", "true"
      		},
      		new String[] {
      				"stackoverflow", "", "${stackoverflow}", ""
      		},
      		new String[] {
      				"empty", "", "", ""
      		},
      		new String[] {
      				"useempty", "", "${empty}", ""
      		},
      		new String[] {
      				"null", null, null, null
      		},
      		new String[] {
      				"usenull", "", "${null}", ""
      		}
      	});
      	
      	printProperties(properties);
      	PropUtils.updateProperties(properties);
      	printProperties(properties);
      	
      	assertEquals("DEFAULT_MULTIPLE.DEFAULT_COMPUTED.DEFAULT_UNMODIFIED-DEFAULT_HASVALUE", properties.get("multiple").getValue());
      	assertEquals("MODIFIED", properties.get("modified").getValue());
      	assertEquals("", properties.get("stackoverflow").getValue());
      }
  
  }