internal IDictionary ExecuteMapReduce <MK, MV, NK, NV, RNV>(IEnumerable input, Mapper <MK, MV, NK, NV> mapper, Reducer <NK, NV, RNV> reducer, CircularArray <NK, NV> dictMap, IDictionary <NK, RNV> dictRed, bool executeMap, bool executeReduce) where MK : class
        {
            if (executeMap && mapper != null)
            {
                Map <MK, MV, NK, NV>(input, mapper, dictMap);
            }

            if (executeReduce && reducer != null)
            {
                Reduce <NK, NV, RNV>(reducer, dictMap, dictRed);
            }

            return(dictRed as IDictionary);
        }