public static Converter <Leaf, SufficientStatistics> DictionaryToLeafMap(Dictionary <string, BooleanStatistics> caseIdToNonMissingValue)
 {
     return(delegate(Leaf leaf)
     {
         string name = leaf.CaseName;
         if (name == null || !caseIdToNonMissingValue.ContainsKey(name))
         {
             return BooleanStatistics.GetMissingInstance();
         }
         else
         {
             return (BooleanStatistics)caseIdToNonMissingValue[name];
         }
     });
 }
        //public static bool operator !=(BooleanStatistics stats1, BooleanStatistics stats2)
        //{
        //    return !(stats1 == stats2);
        //}
        //public static bool operator ==(BooleanStatistics boolStats1, BooleanStatistics boolStats2)
        //{
        //    DiscreteStatistics d1 = boolStats1 as DiscreteStatistics;
        //    DiscreteStatistics d2 = boolStats2 as DiscreteStatistics;
        //    return d1 == d2;
        //}

        new internal static bool Parse(string val, out SufficientStatistics result)
        {
            result = null;
            if (val.Equals("true", StringComparison.CurrentCultureIgnoreCase) || val == "1")
            {
                result = BooleanStatistics.GetInstance(true);
            }
            else if (val.Equals("false", StringComparison.CurrentCultureIgnoreCase) || val == "0")
            {
                result = BooleanStatistics.GetInstance(false);
            }
            else if (val.Equals("null", StringComparison.CurrentCultureIgnoreCase) || val == "-1")
            {
                result = BooleanStatistics.GetMissingInstance();
            }
            return(result != null);
        }