static void Def(string name, params string[] aliasesList)
 {
     Years y = new Years();
     y.name = name;
     copyrights.Add(name, y);
     aliases.Add(name, name);
     foreach (string s in aliasesList)
     {
         aliases.Add(s, name);
     }
 }
        static int Main(string[] args)
        {
            Def("Free Software Foundation", "Free Software   Foundation", "Free Software    Foundation", "Free Software Fonudation, Inc.");
            Def("Sun Microsystems, Inc.", "Sun Microsystems Inc");
            Def("Jeroen Frijters");
            Def("Thai Open Source Software Center Ltd");
            Def("World Wide Web Consortium");
            Def("International Business Machines, Inc.", "IBM Corp.", "IBM Corporation", "International Business Machines", "International Business Machines Corporation");
            Def("Wily Technology, Inc.");
            Def("Unicode, Inc.");
            Def("Colin Plumb");
            Def("Taligent, Inc.");
            Def("Red Hat, Inc.");
            Def("The Open Group Research Institute");
            Def("FundsXpress, INC.");
            Def("AT&T");
            Def("The Apache Software Foundation");
            Def("freebxml.org");
            Def("The Cryptix Foundation Limited");
            Def("Visual Numerics Inc.");
            Def("INRIA, France Telecom");
            Def("Oracle and/or its affiliates", "Oracle Corporation");
            Def("i-net software");
            Def("Google Inc.");
            Def("Stephen Colebourne & Michael Nascimento Santos");
            Def("Attila Szegedi");

            // these are false positives
            copyrights.Add("dummy", Years.Dummy);
            aliases.Add("icSigCopyrightTag", "dummy");
            aliases.Add("Copyright notice to stick into built-in-profile files.", "dummy");
            aliases.Add("AssemblyCopyrightAttribute", "dummy");
            aliases.Add("getVersionAndCopyrightInfo()", "dummy");
            aliases.Add("Copyright by IBM and others and distributed under the * distributed under MIT/X", "dummy");
            aliases.Add("*  Copyright Office. *", "dummy");
            aliases.Add("* Copyright office. *", "dummy");
            aliases.Add("Your Corporation", "dummy");
            aliases.Add("but I wrote that code so I co-own the copyright", "dummy");
            aliases.Add("identifying information: \"Portions Copyrighted [year] * [name of copyright owner]\"", "dummy");
            aliases.Add("* \"Portions Copyright [year] [name of copyright owner]\" *", "dummy");

            using (StreamReader rdr = new StreamReader("allsources.gen.lst"))
            {
                string file;
                while ((file = rdr.ReadLine()) != null)
                {
                    if (file != "AssemblyInfo.java")
                    {
                        ProcessFile(file);
                    }
                }
            }

            Years[] years = new Years[copyrights.Count];
            copyrights.Values.CopyTo(years, 0);

            Array.Sort(years, delegate(Years x, Years y) { return x.name == null ? 0 : x.name.CompareTo(y.name); });

            bool first = true;
            foreach (Years y in years)
            {
                if (y != Years.Dummy)
                {
                    if (!first)
                    {
                        Console.WriteLine("\\r\\n\" +");
                    }
                    first = false;
                    Console.Write("    \"");
                    if (y.min != y.max)
                    {
                        Console.Write("{0}-{1}  {2}", y.min, y.max, y.name);
                    }
                    else
                    {
                        Console.Write("{0}       {1}", y.min, y.name);
                    }
                }
            }
            Console.WriteLine("\"");

            return errorCount;
        }