private int CountEnumeration(int[] numberSet)
        {
            var enumeration = NumberSetShiftGroupEnumeration.New(numberSet).GetEnumerator();
            int count       = 0;

            while (enumeration.MoveNext())
            {
                int[] result = enumeration.Current;
                AssertSet(numberSet, result);
                count++;
            }
            return(count);
        }
        private void TryPermutation(int[] numberSet, int[][] expectedValues)
        {
            var enumeration = NumberSetShiftGroupEnumeration.New(numberSet).GetEnumerator();

            int count = 0;

            while (enumeration.MoveNext())
            {
                Log.Debug(".tryPermutation count=" + count);

                int[] result   = enumeration.Current;
                int[] expected = expectedValues[count];

                Log.Debug(".tryPermutation result=" + result.RenderAny());
                Log.Debug(".tryPermutation expected=" + expected.Render());

                AssertSet(expected, result);

                count++;
                Assert.IsTrue(Arrays.AreEqual(result, expected), "Mismatch in count=" + count);
            }
            Assert.AreEqual(count, expectedValues.Length);
            Assert.That(enumeration.MoveNext(), Is.False);
        }