docs: def to_dot(self, path: str, title: Optional[str] = None):
          """
          Print the automaton to a dot file
  
          :param path: the path where to save the file.
          :param title:
          :return:
          """
          g = graphviz.Digraph(format='svg')
          g.node('fake', style='invisible')
          for state in self._states:
              if state == self._initial_state:
                  if state in self._accepting_states:
                      g.node(str(state), root='true',
                             shape='doublecircle')
                  else:
                      g.node(str(state), root='true')
              elif state in self._accepting_states:
                  g.node(str(state), shape='doublecircle')
              else:
                  g.node(str(state))
  
          g.edge('fake', str(self._initial_state), style='bold')
          for start in self._transition_function:
              for symbol, end in self._transition_function[start].items():
                  g.edge(str(start),
                         str(end),
                         label=str(symbol))
  
          if title:
              g.attr(label=title)
              g.attr(fontsize='20')
  
          g.render(filename=path)
          return