docs: def moralize(self):
          """
          Removes all the immoralities in the Network and creates a moral
          graph (UndirectedGraph).
  
          A v-structure X->Z<-Y is an immorality if there is no directed edge
          between X and Y.
  
          Examples
          --------
          >>> from pgmpy.models import DynamicBayesianNetwork as DBN
          >>> dbn = DBN([(('D',0), ('G',0)), (('I',0), ('G',0))])
          >>> moral_graph = dbn.moralize()
          >>> moral_graph.edges()
          [(('G', 0), ('I', 0)),
          (('G', 0), ('D', 0)),
          (('D', 1), ('I', 1)),
          (('D', 1), ('G', 1)),
          (('I', 0), ('D', 0)),
          (('G', 1), ('I', 1))]
          """
          moral_graph = self.to_undirected()
  
          for node in super(DynamicBayesianNetwork, self).nodes():
              moral_graph.add_edges_from(combinations(
                  self.get_parents(node), 2))
  
          return moral_graph