/// <summary>
        /// Repeat <paramref name="factory"/>()
        /// </summary>
        public static T[] Select <T>(this PropertyRepeatReader r, Func <PropertyConsoleReader, int, T> factory)
        {
            var arr = new T[r.count];

            for (var i = 0; i < r.count; i++)
            {
                arr[i] = factory(r.cr, i);
            }
            return(arr);
        }
        /// <summary>
        /// Repeat <paramref name="factory"/>() <paramref name="width"/> times per line
        /// </summary>
        public static T[][] Grid <T>(this PropertyRepeatReader r, int width, Func <PropertyConsoleReader, int, int, T> factory)
        {
            var arr = new T[r.count][];

            for (var i = 0; i < r.count; i++)
            {
                arr[i] = new T[width];
                for (var j = 0; j < width; j++)
                {
                    arr[i][j] = factory(r.cr, i, j);
                }
            }
            return(arr);
        }
 /// <summary>
 /// Repeat <paramref name="factory"/>()
 /// </summary>
 public static (T1[], T2[]) SelectArray <T1, T2>(this PropertyRepeatReader r,
                                                 Func <PropertyConsoleReader, (T1, T2)> factory)