code: def dominator_tree_to_dot(self, filename):
          
          def description(node):
              desc ='{}\n'.format(node)
              desc += 'id: {}'.format(node.node_id)
              if node.dominance_frontier:
                  desc += '\ndominance frontier: {}'.format([n.node_id for n in node.dominance_frontier])
              return desc
          with open(filename, 'w', encoding='utf8') as f:
              f.write('digraph{\n')
              for node in self.nodes:
                  f.write('{}[label="{}"];\n'.format(node.node_id, description(node)))
                  if node.immediate_dominator:
                      f.write('{}->{};\n'.format(node.immediate_dominator.node_id, node.node_id))
  
              f.write("}\n")
docs: Export the dominator tree of the function to a dot file
          Args:
              filename (str)