'Constructor
:param bool order_jobs:     If all jobs should be ordered or not.
:param bool allow_merging:  If job merging is allowed.
:param bool allow_widening: If job widening is allowed.
:param graph_visitor:       A graph visitor to provide successors.
:type graph_visitor:        GraphVisitor or None
:return: None'

def __init__(self, order_jobs=False, allow_merging=False, allow_widening=False, status_callback=None, graph_visitor=None):

    self._order_jobs = order_jobs
    self._allow_merging = allow_merging
    self._allow_widening = allow_widening
    self._status_callback = status_callback
    self._graph_visitor = graph_visitor
    if (self._allow_widening and (not self._allow_merging)):
        raise AngrForwardAnalysisError('Merging    must    be    allowed    if    widening    is    allowed.')
    self._should_abort = False
    self._job_info_queue = []
    self._job_map = {}
    self._state_map = {}
    self._graph = networkx.DiGraph()
