public FileDetail IndexFile(string file, IFileHelper helper) {
			var content = System.IO.File.ReadAllText(file);
			var baseUri = System.IO.Path.GetDirectoryName(file).ToUri();
			var dependencies = helper == null
				? new Uri[0]
				: helper.FindDepenencies(content)
				.Select(x => x.ToUri(x.StartsWith("/") ? BaseUri : baseUri))
					.Where(x => x != null && x.IsFile)
					.ToArray();

			var detail = _Files.GetOrAdd(file, _ => new FileDetail(_, helper));
			detail.Dependencies.Clear();

			foreach (var dep in dependencies) {
				var sdep = dep.LocalPath;
				var hdep = FindHelper(sdep);
				var depDetail = _Files.GetOrAdd(sdep, _ => new FileDetail(_, hdep));
				detail.Dependencies.SafeAdd(sdep);
			}

			return detail;
		}