protected int BaseCompareHelper(AnalysisEntityBasedPredicateAnalysisData <TValue> newData, MapAbstractDomain <AnalysisEntity, TValue> coreDataAnalysisDomain)
        {
            var baseCompareResult = base.BaseCompareHelper(newData);

            if (baseCompareResult != 0)
            {
                Debug.Assert(baseCompareResult < 0, "Non-monotonic Merge function");
                return(baseCompareResult);
            }

            var coreAnalysisDataCompareResult = coreDataAnalysisDomain.Compare(CoreAnalysisData, newData.CoreAnalysisData);

            Debug.Assert(coreAnalysisDataCompareResult <= 0, "Non-monotonic Merge function");
            return(coreAnalysisDataCompareResult);
        }
 public abstract AnalysisEntityBasedPredicateAnalysisData <TValue> WithMergedData(AnalysisEntityBasedPredicateAnalysisData <TValue> data, MapAbstractDomain <AnalysisEntity, TValue> coreDataAnalysisDomain);
 public abstract int Compare(AnalysisEntityBasedPredicateAnalysisData <TValue> other, MapAbstractDomain <AnalysisEntity, TValue> coreDataAnalysisDomain);
 public PredicatedAnalysisDataDomain(MapAbstractDomain <AnalysisEntity, TValue> coreDataAnalysisDomain)
 {
     CoreDataAnalysisDomain = coreDataAnalysisDomain;
 }