### Question:
CustomProperties implements Reflectable, Distributable { @ReflectiveMethod public void set(String aKey, String aValue) { if (aValue != null) { values.put(aKey, aValue); } else { remove(aKey); } } CustomProperties(); @Override CustomPropertiesClassInformation getClassInformation(); @ReflectiveMethod void set(String aKey, String aValue); @ReflectiveMethod String get(String aKey); @ReflectiveMethod void remove(String aKey); @ReflectiveMethod boolean has(String aKey); @Override Map<String, Object> serialize(); static CustomProperties deserialize(Map<String, Object> aData);  }### Answer:
@Test public void testSet() throws Exception { CustomProperties theProperties = new CustomProperties(); assertFalse(theProperties.has("key")); theProperties.set("key", "value"); assertTrue(theProperties.has("key")); assertEquals("value", theProperties.get("key")); theProperties.set("key", "value1"); assertEquals("value1", theProperties.get("key")); theProperties.set("key", null); assertNull(theProperties.get("key")); assertFalse(theProperties.has("key")); }