Anagrams.MyTest.AnagramClasses C# (CSharp) Method

AnagramClasses() public static method

public static AnagramClasses ( SCG ss ) : System.Collections.Generic.IEnumerable>
ss SCG
return System.Collections.Generic.IEnumerable>
        public static SCG.IEnumerable<SCG.IEnumerable<String>> AnagramClasses(SCG.IEnumerable<String> ss)
        {
            bool unseq = true;
            IDictionary<TreeBag<char>, TreeSet<String>> classes;
            if (unseq)
            {
                SCG.IEqualityComparer<TreeBag<char>> unsequencedTreeBagEqualityComparer
            = UnsequencedCollectionEqualityComparer<TreeBag<char>, char>.Default;
                classes = new HashDictionary<TreeBag<char>, TreeSet<String>>(unsequencedTreeBagEqualityComparer);
            }
            else
            {
                SCG.IEqualityComparer<TreeBag<char>> sequencedTreeBagEqualityComparer
            = SequencedCollectionEqualityComparer<TreeBag<char>, char>.Default;
                classes = new HashDictionary<TreeBag<char>, TreeSet<String>>(sequencedTreeBagEqualityComparer);
            }
            foreach (String s in ss)
            {
                TreeBag<char> anagram = AnagramClass(s);
                TreeSet<String> anagramClass;
                if (!classes.Find(anagram, out anagramClass))
                    classes[anagram] = anagramClass = new TreeSet<String>();
                anagramClass.Add(s);
            }
            foreach (TreeSet<String> anagramClass in classes.Values)
                if (anagramClass.Count > 1)
                    yield return anagramClass;
        }