synchronized(this) {
synchronized(lock) {
	private void flushNode(boolean sync) throws BackingStoreException {		String[] keys = null;        synchronized(lock) {			if (sync) {				syncSpi();			} else {				flushSpi();			}            keys = (String[]) childCache.keySet().toArray(new String[]{});		}		if (keys != null) {			for (int i = 0; i < keys.length; i++) {				// Have to lock this node again to access the childCache				AbstractPreferences subNode;                synchronized(this) {					subNode = (AbstractPreferences) childCache.get(keys[i]);				}				// The child could already have been removed from the cache				if (subNode != null) {					subNode.flushNode(sync);				}			}		}	}