docs: def _construct_nx_tree(self, thisTree, thatTree=None):
          """ A function for creating networkx instances that can be used
              more efficiently for graph manipulation than the MergeTree
              class.
              @ In, thisTree, a MergeTree instance for which we will
                  construct a networkx graph
              @ In, thatTree, a MergeTree instance optionally used to
                  speed up the processing by bypassing the fully augmented
                  search and only focusing on the partially augmented
                  split and join trees
              @ Out, nxTree, a networkx.Graph instance matching the
                  details of the input tree.
          """
          if self.debug:
              sys.stdout.write("Networkx Tree construction: ")
              start = time.clock()
  
          nxTree = nx.DiGraph()
          nxTree.add_edges_from(thisTree.edges)
  
          nodesOfThatTree = []
          if thatTree is not None:
              nodesOfThatTree = thatTree.nodes.keys()
  
          # Fully or partially augment the join tree
          for (superNode, _), nodes in thisTree.augmentedEdges.items():
              superNodeEdge = list(nxTree.out_edges(superNode))
              if len(superNodeEdge) > 1:
                  warnings.warn(
                      "The supernode {} should have only a single "
                      "emanating edge. Merge tree is invalidly "
                      "structured".format(superNode)
                  )
              endNode = superNodeEdge[0][1]
              startNode = superNode
              nxTree.remove_edge(startNode, endNode)
              for node in nodes:
                  if thatTree is None or node in nodesOfThatTree:
                      nxTree.add_edge(startNode, node)
                      startNode = node
  
              # Make sure this is not the root node trying to connect to
              # itself
              if startNode != endNode:
                  nxTree.add_edge(startNode, endNode)
  
          if self.debug:
              end = time.clock()
              sys.stdout.write("%f s\n" % (end - start))
  
          return nxTree