private static void WriteInfoFiles(DirectoryInfo rootDir, CoverageInfo covInfo, TestInfo testInfo) {
			var formatter = new BinaryFormatter();
			covInfo.Write(rootDir, formatter);
			if (testInfo == null) {
				return;
			}
			testInfo.Write(rootDir, formatter);
		}
		private void BtnStartClick(object sender, EventArgs e) {
			var files = clbFiles.CheckedItems.Cast<string>();
			var basePath = txtBase.Text.AddIfNotEndsWith('\\');
			var outDirPath = txtOutput.Text.AddIfNotEndsWith('\\');

			var filePathList = files.ToList();
			var langName = cmbLanguage.Text;

			Action action = () => {
				var profile = LanguageSupports.GetCoverageModeByClassName(langName);
				var info = new CoverageInfo(basePath, profile.Name, SharingMethod.File);
				var outDir = new DirectoryInfo(outDirPath);
				foreach (var filePath in filePathList) {
					OccfCodeGenerator.WriteCoveragedCode(
							profile, info, new FileInfo(filePath), outDir);
				}
				info.Write(new DirectoryInfo(outDirPath));
			};
			ProgressForm.Start(this, filePathList.Count, action);
		}