	synchronized public void flush() throws BackingStoreException {
		checkRemoved();
		IEclipsePreferences loadLevel = getLoadLevel();
		if (loadLevel == null) {
			String[] childrenNames = childrenNames();
			for (int i = 0; i < childrenNames.length; i++)
				node(childrenNames[i]).flush();
			return;
		}
		if (this != loadLevel) {
			loadLevel.flush();
			return;
		}
		if (!dirty)
			return;
		dirty = false;
		try {
			save();
		} catch (BackingStoreException e) {
			dirty = true;
			throw e;
		}
	}

	public void flush() throws BackingStoreException {
		checkRemoved();
		IEclipsePreferences loadLevel = getLoadLevel();
		if (loadLevel == null) {
			String[] childrenNames = childrenNames();
			for (int i = 0; i < childrenNames.length; i++)
				node(childrenNames[i]).flush();
			return;
		}
		if (this != loadLevel) {
			loadLevel.flush();
			return;
		}
		if (!dirty)
			return;
		dirty = false;
		try {
			save();
		} catch (BackingStoreException e) {
			dirty = true;
			throw e;
		}
	}
