private IValueCyclableCollection CreateValueCyclableCollection()
        {
            ValueCyclableCollection collection = new ValueCyclableCollection();
            int squareSize = Puzzle.Size * Puzzle.Size;

            for (int i = 1; i <= squareSize; i++)
            {
                collection.Add(i);
            }

            return collection;
        }
        private IValueCyclableCollection CreateValueCyclableCollection(ISudokuPosition position)
        {
            ValueCyclableCollection collection = new ValueCyclableCollection();
            int squareSize = Puzzle.Size * Puzzle.Size;

            for (int i = 1; i <= squareSize; i++)
            {
                if (!ValueExistsInRow(position, i) &&
                    !ValueExistsInColumn(position, i) &&
                    !ValueExistsInRegion(position, i))
                {
                    collection.Add(i);
                }
            }

            return collection;
        }