'Constructor.
:param cfg:             The control flow graph upon which this control dependence graph will build
:param start:           The starting point to begin constructing the control dependence graph
:param no_construct:    Skip the construction step. Only used in unit-testing.'

def __init__(self, cfg, start=None, no_construct=False):

    self._binary = self.project.loader.main_object
    self._start = (start if (start is not None) else self.project.entry)
    self._cfg = cfg
    self._ancestor = None
    self._semi = None
    self._post_dom = None
    self._graph = None
    self._label = None
    self._normalized_cfg = None
    if (not no_construct):
        if (self._cfg is None):
            self._cfg = self.project.analyses.CFGAccurate()
        self._entry = self._cfg.get_any_node(self._start)
        self._construct()
