internal static ProtoFileSummary Load(string file)
            {
                var lines   = File.ReadAllLines(file);
                var package = lines.FirstOrDefault(line => line.StartsWith("package "));

                if (package is object)
                {
                    package = package.Substring("package ".Length).TrimEnd(';');
                }
                var importDirectories = lines
                                        .Where(line => line.StartsWith("import "))
                                        .Select(line => line.Substring("import ".Length).Trim(ImportAndOptionValueTrimChars))
                                        .Select(file => Path.GetDirectoryName(file).Replace('\\', '/'))
                                        .Distinct()
                                        .OrderBy(import => import)
                                        .ToList();

                var options = lines
                              .Where(line => line.StartsWith("option "))
                              .Select(line => line.Substring("option ".Length).Split('=', 2))
                              .Select(bits => (key: bits[0].Trim(), value: bits[1].Trim(ImportAndOptionValueTrimChars)))
                              .Where(pair => LibraryOptions.Contains(pair.key))
                              .ToDictionary(pair => pair.key, pair => pair.value);

                return(new ProtoFileSummary(package, importDirectories, options));
            }