public override IEnumerable <string> Process(string fileName)
        {
            double offsetPPM;

            if (!FindOffset(fileName, out offsetPPM))
            {
                return(new string[] { });
            }

            string resultFilename = new FileInfo(targetDir + "\\" + new FileInfo(fileName).Name).FullName;
            var    writer         = new MascotGenericFormatWriter <Peak>();

            using (StreamReader sr = new StreamReader(new FileStream(fileName, FileMode.Open)))
            {
                var iter = new MascotGenericFormatIterator <Peak>(sr);
                using (StreamWriter sw = new StreamWriter(resultFilename))
                {
                    while (iter.HasNext())
                    {
                        if (Progress.IsCancellationPending())
                        {
                            throw new UserTerminatedException();
                        }

                        if (IsLoopStopped)
                        {
                            return(new string[] { });
                        }

                        var pkl = iter.Next();
                        pkl.PrecursorMZ = pkl.PrecursorMZ + PrecursorUtils.ppm2mz(pkl.PrecursorMZ, offsetPPM);
                        writer.Write(sw, pkl);
                    }
                }
            }

            return(new List <string>(new[] { resultFilename }));
        }