static string PickWord(RandomNumberGenerator rng, char[] removeThese, bool requireUppercase, bool uppercaseOnlyFirstLetters)
        {
            Debug.Assert(rng != null);

            string s;
            do
            {
                // Pick a word at random within the dictionary:
                int v = rng.GetBitsInRange(dictionaryBitOrder, dictionaryCount);

                s = wordList[v];
                if (removeThese != null)
                {
                    s = s.Filter(removeThese);
                    // We rejected all the chars; try again:
                    if (s.Length == 0) continue;
                }

                // Uppercase the first letter of each word:
                if (requireUppercase && uppercaseOnlyFirstLetters)
                    s = Char.ToUpper(s[0]) + s.Substring(1);

                break;
            } while (true);
            return s;
        }