docs: def _simplify_data_graph(self, data_graph):  # pylint:disable=no-self-use
          """
          Simplify a data graph by removing all temp variable nodes on the graph.
  
          :param networkx.DiGraph data_graph: The data dependence graph to simplify.
          :return: The simplified graph.
          :rtype: networkx.MultiDiGraph
          """
  
          graph = networkx.MultiDiGraph(data_graph)
  
          all_nodes = [ n for n in graph.nodes() if isinstance(n.variable, SimTemporaryVariable) ]
  
          for tmp_node in all_nodes:
              # remove each tmp node by linking their successors and predecessors directly
              in_edges = graph.in_edges(tmp_node, data=True)
              out_edges = graph.out_edges(tmp_node, data=True)
  
              for pred, _, _ in in_edges:
                  graph.remove_edge(pred, tmp_node)
              for _, suc, _ in out_edges:
                  graph.remove_edge(tmp_node, suc)
  
              for pred, _, data_in in in_edges:
                  for _, suc, data_out in out_edges:
                      if pred is not tmp_node and suc is not tmp_node:
                          if suc not in graph[pred]:
                              data = data_in.copy()
                              data.update(data_out)
                              graph.add_edge(pred, suc, **data)
  
              graph.remove_node(tmp_node)
  
          return graph