@Override
    synchronized public void registerConfigChangeWatcher(ConfigChangeWatcher watcher) {
        startListening(new WatcherHolder(watcher), new ConfigChangeCallback() {
            @Override
            public synchronized void onSingleValueChanged(final WatcherHolder holder, final ConfigTable.ConfigItem configItem) {
                notifySingleValue(holder.getWatcher(), configItem);
            }

            @Override
            public synchronized void onGroupValuesChanged(final WatcherHolder holder,
                                             final GroupConfigTable.GroupConfigItems groupConfigItems) {
                notifyGroupValues((GroupConfigChangeWatcher) holder.getWatcher(), groupConfigItems);
            }
        });
    }
@Test
    public void testInit() {
        final String[] newValue = new String[1];

        register.registerConfigChangeWatcher(
            new ConfigChangeWatcher("MockModule", new FetchingConfigWatcherRegisterTest.MockProvider(), "prop2") {
                @Override
                public void notify(ConfigChangeEvent value) {
                    newValue[0] = value.getNewValue();
                }

                @Override
                public String value() {
                    return null;
                }
            });

        assertEquals("abc2", newValue[0]);
    }