//Constructor fills catalog of mutatedvowels and translations.
 public mutatedVowelHandler()
 {
     arMutatedVowelCatalog    = new mutatedVowel[4];
     arMutatedVowelCatalog[0] = new mutatedVowel("Ä", "AE");
     arMutatedVowelCatalog[1] = new mutatedVowel("Ö", "OE");
     arMutatedVowelCatalog[2] = new mutatedVowel("Ü", "UE");
     arMutatedVowelCatalog[3] = new mutatedVowel("ß", "SS");
 }
        //returns a List of Possibilities of different spellings of the given Inputparameter.
        public List <string> getAllPossibilities(string sInput)
        {
            List <string> lMutatedVowals = getAllMutatedVowels(sInput);

            string[]      arSnippets    = getSnippets(sInput);
            List <string> Possibilities = new List <string>();
            int           Combinations  = Convert.ToInt32(Math.Pow(2.0, lMutatedVowals.Count));

            int[] iCNT      = new int[lMutatedVowals.Count];
            byte  byteValue = 0;

            for (int i = 0; i < lMutatedVowals.Count; i++)
            {
                iCNT[i] = 0;
            }

            for (int i = 0; i < Combinations; i++)
            {
                string Possibility = "";


                for (int j = 0; j < arSnippets.Length; j++)
                {
                    if (j == lMutatedVowals.Count && arSnippets.Length > lMutatedVowals.Count)
                    {
                        Possibility += arSnippets[j];
                    }
                    else
                    {
                        mutatedVowel mv = getMutatedVowel(lMutatedVowals[j]);
                        if (iCNT[j] == 0)
                        {
                            Possibility += arSnippets[j] + mv.getAbbroviation();
                        }

                        if (iCNT[j] == 1)
                        {
                            Possibility += arSnippets[j] + mv.getSMutatedVowel();
                        }
                    }
                }

                byteValue++;
                iCNT = Varietyhandler(iCNT, byteValue);

                Possibilities.Add(Possibility);
            }
            return(Possibilities);
        }