public static UniversalWorkList GetInstance(
            IEnumerable <Pair <string, Dictionary <string, SufficientStatistics> > > predictorNameAndCaseIdToNonMissingValueEnumeration,
            IEnumerable <Pair <string, Dictionary <string, SufficientStatistics> > > targetNameAndCaseIdToNonMissingValueEnumeration,
            //Dictionary<string, Dictionary<string, SufficientStatistics>> predictorVariableToCaseIdToRealNonMissingValue,
            NullDataCollection nullDataCollection,
            RangeCollection nullIndexRange,
            KeepTest <Dictionary <string, string> > keepTest
            )
        {
            //SpecialFunctions.CheckCondition(-1 <= nullIndexStart && nullIndexStart <= nullIndexLast);

            bool enumeratePairs = keepTest is KeepPredictorTargetPairs;

            if (keepTest is KeepCollection <Dictionary <string, string> > )
            {
                foreach (KeepTest <Dictionary <string, string> > keepTestInCollection in ((KeepCollection <Dictionary <string, string> >)keepTest).KeepTestCollection)
                {
                    if (keepTestInCollection is KeepPredictorTargetPairs)
                    {
                        enumeratePairs = true;
                    }
                }
            }
            UniversalWorkList aUniversalWorkList;

            if (enumeratePairs)
            {
                aUniversalWorkList = UniversalWorkListPredTargPairs.GetInstance(
                    predictorNameAndCaseIdToNonMissingValueEnumeration,
                    targetNameAndCaseIdToNonMissingValueEnumeration,
                    nullDataCollection,
                    nullIndexRange,
                    keepTest
                    );
            }
            else
            {
                aUniversalWorkList = new UniversalWorkList(
                    predictorNameAndCaseIdToNonMissingValueEnumeration,
                    targetNameAndCaseIdToNonMissingValueEnumeration,
                    nullDataCollection,
                    nullIndexRange,
                    keepTest
                    );
            }
//            aUniversalWorkList._predictorNameAndCaseIdToNonMissingValueEnumeration = predictorNameAndCaseIdToNonMissingValueEnumeration;
//            aUniversalWorkList._targetNameAndCaseIdToNonMissingValueEnumeration = targetNameAndCaseIdToNonMissingValueEnumeration;
////          aUniversalWorkList._targetVariables = targetVariables;
////          aUniversalWorkList._predictorVariableToCaseIdToNonMissingValue = predictorVariableToCaseIdToRealNonMissingValue;
//            aUniversalWorkList._keepTest = keepTest;
//            aUniversalWorkList._nullDataCollection = nullDataCollection;
//            aUniversalWorkList._nullIndexRange = nullIndexRange;

            return(aUniversalWorkList);
        }
        new public static UniversalWorkList GetInstance(
            IEnumerable <Pair <string, Dictionary <string, SufficientStatistics> > > predictorNameAndCaseIdToNonMissingValueEnumeration,
            IEnumerable <Pair <string, Dictionary <string, SufficientStatistics> > > targetNameAndCaseIdToNonMissingValueEnumeration,
            //Dictionary<string, Dictionary<string, SufficientStatistics>> predictorVariableToCaseIdToRealNonMissingValue,
            NullDataCollection nullDataCollection,
            RangeCollection nullIndexRange,
            KeepTest <Dictionary <string, string> > keepTest
            )
        {
            //SpecialFunctions.CheckCondition(-1 <= nullIndexStart && nullIndexStart <= nullIndexLast);
            UniversalWorkList aUniversalWorkList = new UniversalWorkListPredTargPairs(
                predictorNameAndCaseIdToNonMissingValueEnumeration,
                targetNameAndCaseIdToNonMissingValueEnumeration,
                nullDataCollection,
                nullIndexRange,
                keepTest
                );

            return(aUniversalWorkList);
        }