docs: def _add_training_data(self, src, dst, symbol):
          """
          Training_data is a dictionary from strings to lists.
          - Each string (key) is an access string
          - Each list (value) is a list of tuples (target_state, [symbols directed to that
          state]). These represent that a transition exists from the state used as key to the first
          part of the training_data to the dst state which is the first part of the tuple
          with all the symbols in the list in the SECOND part of the tuple.
          Args:
              src (str): The source state
              dst (str): The target state
              symbol (str): The transition symbol
          Returns:
              None
          """
          src_data = self.training_data[src]
          for (s, v) in src_data:
              if s == dst:
                  v.append(symbol)
                  return
          src_data.append((dst, [symbol]))