code: @Nonnull
  	public static CachingXmlDataStore createCachingXmlDataStore(@Nonnull final File cacheFile, @Nonnull final URL dataUrl,
  			@Nonnull final URL versionUrl, @Nonnull final Charset charset, @Nonnull final DataStore fallback) {
  		Check.notNull(cacheFile, "cacheFile");
  		Check.notNull(charset, "charset");
  		Check.notNull(dataUrl, "dataUrl");
  		Check.notNull(fallback, "fallback");
  		Check.notNull(versionUrl, "versionUrl");
  
  		final DataReader reader = new XmlDataReader();
  		final DataStore fallbackDataStore = readCacheFileAsFallback(reader, cacheFile, charset, fallback);
  		return new CachingXmlDataStore(reader, dataUrl, versionUrl, charset, cacheFile, fallbackDataStore);
  	}
docs: Constructs a new instance of {@code CachingXmlDataStore} with the given arguments. The given {@code cacheFile}
  can be empty or filled with previously cached data in XML format. The file must be writable otherwise an
  exception will be thrown.
  
  @param cacheFile
  file with cached <em>UAS data</em> in XML format or empty file
  @param dataUrl
  URL to <em>UAS data</em>
  @param versionUrl
  URL to version information about the given <em>UAS data</em>
  @param charset
  the character set in which the data should be read
  @param fallback
  <em>UAS data</em> as fallback in case the data on the specified resource can not be read correctly
  @return new instance of {@link CachingXmlDataStore}
  @throws net.sf.qualitycheck.exception.IllegalNullArgumentException
  if one of the given arguments is {@code null}
  @throws net.sf.qualitycheck.exception.IllegalNullArgumentException
  if the given cache file can not be read
  @throws net.sf.qualitycheck.exception.IllegalStateOfArgumentException
  if no URL can be resolved to the given given file