public static ICompilerFile FindInputFileGivenOutput(this ISimpleFileCompiler This, ICompilerFile outputFilePath)
 {
     var outputName = outputFilePath.Name;
     if (outputName.EndsWith(This.OutputFileExtension, StringComparison.InvariantCultureIgnoreCase)) {
         outputName = outputName.Substring(0, outputName.Length-This.OutputFileExtension.Length);
         foreach (var ext in This.InputFileExtensions) {
             ICompilerFile result = outputFilePath.GetRelativeFile(outputName+ext);
             if (result.Exists) {
                 return result;
             }
         }
     }
     return null;
 }
 private IEnumerable<ICompilerFile> GetCombineFileNames(ICompilerFile inputFileContent)
 {
     return inputFileContent.ReadLines()
         .Select(l => _lineRegex.Match(l))
         .Where(m => m.Success)
         .Select(m => inputFileContent.GetRelativeFile(m.Value));
 }