@Override public MutableConfig clone() { final MutableConfig ret = (MutableConfig) super.clone(); ret.theSubConfigs = new MutableConfig[theSubConfigs.length]; ret.theListeners = new ConfigListener[0]; ret.theSubConfigListener = new ConfigListener() { @Override public void configAdded(MutableConfig config) { ret.configAdded(config); } @Override public void configRemoved(MutableConfig config) { ret.configRemoved(config); } @Override public void configChanged(MutableConfig config, String previousValue) { ret.configChanged(config, previousValue); } }; for (int i = 0; i < theSubConfigs.length; i++) { ret.theSubConfigs[i] = theSubConfigs[i].clone(); ret.theSubConfigs[i].addListener(ret.theSubConfigListener); } return ret; }