private IEnumerable <TReturn> MultiReadInternal <TReturn>(Type[] types, Func <object[], TReturn> map, string splitOn)
            {
                var identity = this.identity.ForGrid(typeof(TReturn), types, gridIndex);

                try
                {
                    foreach (var r in SqlMapper.MultiMapImpl <TReturn>(null, default(CommandDefinition), types, map, splitOn, reader, identity, false))
                    {
                        yield return(r);
                    }
                }
                finally
                {
                    NextResult();
                }
            }
            private IEnumerable <TReturn> MultiReadInternal <TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>(Delegate func, string splitOn)
            {
                var identity = this.identity.ForGrid(typeof(TReturn), new Type[] {
                    typeof(TFirst),
                    typeof(TSecond),
                    typeof(TThird),
                    typeof(TFourth),
                    typeof(TFifth),
                    typeof(TSixth),
                    typeof(TSeventh)
                }, gridIndex);

                try
                {
                    foreach (var r in SqlMapper.MultiMapImpl <TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>(null, default(CommandDefinition), func, splitOn, reader, identity, false))
                    {
                        yield return(r);
                    }
                }
                finally
                {
                    NextResult();
                }
            }