public static void Save(AudioScanner ac, Stream output)
        {
            if (output == null)
                throw new ArgumentNullException("output");
            if (!output.CanWrite)
                throw new ArgumentException("Output stream must support writing", "output");

            IOAssistant io = new IOAssistant(output);
            io.Write(ac.directory.FullName);
            io.Write(ac.extensionList.Count);
            for (int i = 0; i < ac.extensionList.Count; i++)
                io.Write(ac.extensionList[i]);

            FlagByte1 fb1 = FlagByte1.NoFlags;
            if (ac.searchoption == SearchOption.AllDirectories)
                fb1 = fb1 | FlagByte1.AllDirectories;
            if (ac.ParseAdd)
                fb1 = fb1 | FlagByte1.ParseAdd;
            if (ac.ParseUpdate)
                fb1 = fb1 | FlagByte1.ParseUpdate;
            if (ac.RemoveDeadFiles)
                fb1 = fb1 | FlagByte1.RemoveDeadFiles;
            if (ac.ScannerReportsProgress)
                fb1 = fb1 | FlagByte1.ReportsProgress;
            output.WriteByte((byte)fb1);

            io.Write(ac.existingFiles.Count);
            foreach (RawTrack rt in ac.existingFiles)
            {
                rt.Save(output);
            }
        }