timeStamp = stateManager.getSystemState().getTimeStamp();
	public void saveMetaData() {		// the cache and the state match		if (!canWrite() | timeStamp == stateManager.getSystemState().getTimeStamp())			return;		StreamManager streamManager = new StreamManager(fileManager);		try {			StreamManagerOutputStream fmos = streamManager.getOutputStream(LocationManager.BUNDLE_DATA_FILE);			DataOutputStream out = new DataOutputStream(new BufferedOutputStream(fmos));			boolean error = true;			try {				out.writeByte(BUNDLEDATA_VERSION);				out.writeLong(stateManager.getSystemState().getTimeStamp());				out.writeInt(initialBundleStartLevel);				out.writeLong(nextId);				Bundle[] bundles = context.getBundles();				out.writeInt(bundles.length);				for (int i = 0; i < bundles.length; i++) {					long id = bundles[i].getBundleId();					out.writeLong(id);					if (id != 0) {						BundleData data = ((org.eclipse.osgi.framework.internal.core.AbstractBundle) bundles[i]).getBundleData();						saveMetaDataFor(data, out);					}				}				out.close();				error = false;			} finally {				// if something happens, don't close a corrupt file				if (error) {					fmos.abort();					try {						out.close();					} catch (IOException e) {/*ignore*/					}				}			}		} catch (IOException e) {			frameworkLog.log(new FrameworkEvent(FrameworkEvent.ERROR, context.getBundle(), e));			return;		}	}