public Func <AState, IFixpointInfo <APC, AState> > CreateForward <AState>(IAnalysisDriver <APC, AState, IVisitMSIL <APC, Local, Parameter, Method, Field, Type, int, int, AState, AState>, IStackContext <Field, Method> > analysis)
        {
            var solver = ForwardAnalysisSolver <AState, Type> .Make(stackDecoder, analysis, apcStackPrinter);

            solver.Trace = this.parent.Options.TraceDFA;
            return((initialState) => { solver.Run(initialState); return solver; });
        }
        public Func <AnalysisState, IFixpointInfo <APC, AnalysisState> > CreateForward <AnalysisState>(
            IAnalysis <APC, AnalysisState, IVisitMSIL <APC, Local, Parameter, Method, Field, Type, Expression, Variable, AnalysisState, AnalysisState>, EdgeData> analysis,
            DFAOptions options)
        {
            var solver = ForwardAnalysisSolver <AnalysisState, Type, EdgeData> .Make(this.ildecoder, analysis, this.Printer);

            solver.Options = options;
            return((initialState) => { solver.Run(initialState); return solver; });
        }
        public Func <AState, IFixpointInfo <APC, AState> > CreateForward <AState>(IAnalysisDriver <APC, AState, IVisitMSIL <APC, Local, Parameter, Method, Field, Type, Unit, Unit, AState, AState>, IMethodContext <Field, Method> > analysis)
        {
            var solver = ForwardAnalysisSolver <AState, Type> .Make(apcDecoder, analysis, apcRawPrinter);

            solver.Trace = this.parent.Options.TraceDFA;
            solver.TraceTimePerInstruction = this.parent.Options.TraceTimings;

            return((initialState) => { solver.Run(initialState); return solver; });
        }