docs: def find_max_children_scc_decomposition(self, G, tier, scc, bridges, I, known_winners, stats):
          '''
          Finds the maximal children of G when tier is added using SCC decomposition
          :param G: Networkx DiGraph of edges "locked in" so far
          :param tier: List of edges in the current tier to be added with equal weight
          :param scc: List of the strongly connected components of G U tier, each being a list of edges
          :param bridges: List of edges that are bridges between sccs of G U tier
          :param I: List of all nodes
          :param known_winners: Known PUT-winners computed by RP so far
          :param stats: Stats object containing runtime statistics
          :return: Array of Networkx DiGraphs that are the maximal children of G U T
          '''
  
          if len(scc) == 1:
              children = self.explore_max_children_lp(G, tier, I, known_winners, stats)
              return children
  
          mc_list = []
  
          for x in scc:
              G_temp = nx.DiGraph(list(set(G.edges()).intersection(set(x))))
              T_temp = list(set(tier).intersection(set(x)))
              temp = self.explore_max_children_lp(G_temp, T_temp, I, known_winners, stats, f_scc = 1)
              mc_list.append(temp)
  
          Cartesian = itertools.product(*mc_list)
          return [nx.DiGraph(list(set(itertools.chain(*[list(y.edges()) for y in x])).union(bridges))) for x in Cartesian]