result.setSingleton(in.readBoolean());
	private BundleDescriptionImpl readBundleDescription(DataInputStream in) throws IOException {		byte tag = readTag(in);		if (tag == NULL)			return null;		if (tag == INDEX)			return (BundleDescriptionImpl) objectTable.get(in.readInt());		BundleDescriptionImpl result = new BundleDescriptionImpl();		addToObjectTable(result);				result.setBundleId(in.readLong());				result.setUniqueId(readString(in, false));		result.setLocation(readString(in, false));		result.setState(in.readInt());		result.setVersion(readVersion(in));		result.setHost(readHostSpec(in));		int packageCount = in.readInt();		if (packageCount > 0) {			PackageSpecification[] packages = new PackageSpecification[packageCount];			for (int i = 0; i < packages.length; i++)				packages[i] = readPackageSpec(in);						result.setPackages(packages);		}		int providedPackageCount = in.readInt();		if (providedPackageCount > 0) {			String[] providedPackages = new String[providedPackageCount];			for (int i = 0; i < providedPackages.length; i++)				providedPackages[i] = in.readUTF();			result.setProvidedPackages(providedPackages);		}		int requiredBundleCount = in.readInt();		if (requiredBundleCount > 0) {			BundleSpecification[] requiredBundles = new BundleSpecification[requiredBundleCount];			for (int i = 0; i < requiredBundles.length; i++)				requiredBundles[i] = readBundleSpec(in);			result.setRequiredBundles(requiredBundles);		}		return result;	}