private static IEnumerable <IList <IDataItem> > GenerateCombinations(PairwiseGenerator generator, List <IDataItem>[] itemLists)
        {
            int providerCount = itemLists.Length;

            int[] indices = new int[providerCount];
            while (generator.Next(indices))
            {
                IDataItem[] combination = new IDataItem[providerCount];
                for (int i = 0; i < providerCount; i++)
                {
                    combination[i] = itemLists[i][indices[i]];
                }

                yield return(combination);
            }
        }
        private static IEnumerable<IList<IDataItem>> GenerateCombinations(PairwiseGenerator generator, List<IDataItem>[] itemLists)
        {
            int providerCount = itemLists.Length;
            int[] indices = new int[providerCount];
            while (generator.Next(indices))
            {
                IDataItem[] combination = new IDataItem[providerCount];
                for (int i = 0; i < providerCount; i++)
                    combination[i] = itemLists[i][indices[i]];

                yield return combination;
            }
        }