public static DataFlowAnalysisResult <StringContentBlockAnalysisResult, StringContentAbstractValue> GetOrComputeResult(ControlFlowGraph cfg, DataFlowAnalysisResult <NullAnalysis.NullBlockAnalysisResult, NullAnalysis.NullAbstractValue> nullAnalysisResultOpt = null)
        {
            var analysisDomain   = new StringContentAnalysisDomain(StringContentAbstractValueDomain.Default);
            var operationVisitor = new StringContentDataFlowOperationVisitor(StringContentAbstractValueDomain.Default, nullAnalysisResultOpt);
            var nullAnalysis     = new StringContentAnalysis(analysisDomain, operationVisitor);

            return(nullAnalysis.GetOrComputeResultCore(cfg));
        }
        public static DataFlowAnalysisResult <StringContentBlockAnalysisResult, StringContentAbstractValue> GetOrComputeResult(
            ControlFlowGraph cfg,
            INamedTypeSymbol containingTypeSymbol,
            DataFlowAnalysisResult <NullAnalysis.NullBlockAnalysisResult, NullAnalysis.NullAbstractValue> nullAnalysisResultOpt = null,
            DataFlowAnalysisResult <PointsToAnalysis.PointsToBlockAnalysisResult, PointsToAnalysis.PointsToAbstractValue> pointsToAnalysisResultOpt = null)
        {
            var operationVisitor = new StringContentDataFlowOperationVisitor(StringContentAbstractValueDomain.Default, containingTypeSymbol, nullAnalysisResultOpt, pointsToAnalysisResultOpt);
            var nullAnalysis     = new StringContentAnalysis(StringContentAnalysisDomainInstance, operationVisitor);

            return(nullAnalysis.GetOrComputeResultCore(cfg));
        }
        public static DataFlowAnalysisResult <StringContentBlockAnalysisResult, StringContentAbstractValue> GetOrComputeResult(
            ControlFlowGraph cfg,
            ISymbol owningSymbol,
            WellKnownTypeProvider wellKnownTypeProvider,
            DataFlowAnalysisResult <CopyAnalysis.CopyBlockAnalysisResult, CopyAnalysis.CopyAbstractValue> copyAnalysisResultOpt,
            DataFlowAnalysisResult <PointsToAnalysis.PointsToBlockAnalysisResult, PointsToAnalysis.PointsToAbstractValue> pointsToAnalysisResultOpt = null,
            bool pessimisticAnalsysis = true)
        {
            var operationVisitor = new StringContentDataFlowOperationVisitor(StringContentAbstractValueDomain.Default, owningSymbol,
                                                                             wellKnownTypeProvider, pessimisticAnalsysis, copyAnalysisResultOpt, pointsToAnalysisResultOpt);
            var nullAnalysis = new StringContentAnalysis(StringContentAnalysisDomain.Instance, operationVisitor);

            return(nullAnalysis.GetOrComputeResultCore(cfg, cacheResult: false));
        }