@staticmethod
    def _getImpliedEdges(roots):
        #Get nodes in job graph
        nodes = set()
        for root in roots:
            root._dfs(nodes)

        ##For each follow-on edge calculate the extra implied edges
        #Adjacency list of implied edges, i.e. map of jobs to lists of jobs
        #connected by an implied edge
        extraEdges = dict(map(lambda n : (n, []), nodes))
        for job in nodes:
            if len(job._followOns) > 0:
                #Get set of jobs connected by a directed path to job, starting
                #with a child edge
                reacheable = set()
                for child in job._children:
                    child._dfs(reacheable)
                #Now add extra edges
                for descendant in reacheable:
                    extraEdges[descendant] += job._followOns[:]
        return extraEdges

    ####################################################
    #The following functions are used to serialise
    #a job graph to the jobStore
    ####################################################
Add HTTP user using the ``htpasswd`` command. If the ``htpasswd`` file does not
dataset/ETHPy150Open BD2KGenomics/toil/src/toil/job.py/Job._getImpliedEdges--crossover with--dataset/ETHPy150Open saltstack/salt/salt/modules/apache.py/useradd