MapProperty implements ReactiveValue { public void removeValue() { if (hasValue) { isServerUpdate = true; updateValue(null, false); Reactive.addPostFlushListener(() -> isServerUpdate = false); } } MapProperty(String name, NodeMap map);  MapProperty(String name, NodeMap map, boolean forceValueUpdate); String getName(); NodeMap getMap(); Object getValue(); boolean hasValue(); void setValue(Object value); void removeValue(); EventRemover addChangeListener(MapPropertyChangeListener listener); @Override EventRemover addReactiveValueChangeListener(
            ReactiveValueChangeListener reactiveValueChangeListener); int getValueOrDefault(int defaultValue); boolean getValueOrDefault(boolean defaultValue); String getValueOrDefault(String defaultValue); void syncToServer(Object newValue); Runnable getSyncToServerCommand(Object newValue);  }
@Test public void testRemoveValue() { property.setValue("foo"); Assert.assertTrue(property.hasValue()); property.removeValue(); Assert.assertFalse(property.hasValue()); Assert.assertNull(property.getValue()); }