docs: def update_scoped_variables_with_output_dictionary(self, dictionary, state):
          """Update the values of the scoped variables with the output dictionary of a specific state.
  
          :param: the dictionary to update the scoped variables with
          :param: the state the output dictionary belongs to
          """
          for key, value in dictionary.items():
              output_data_port_key = None
              # search for the correct output data port key of the source state
              for o_key, o_port in state.output_data_ports.items():
                  if o_port.name == key:
                      output_data_port_key = o_key
                      break
              if output_data_port_key is None:
                  if not key == "error":
                      logger.warning("Output variable %s was written during state execution, "
                                     "that has no data port connected to it.", str(key))
              for data_flow_key, data_flow in self.data_flows.items():
                  if data_flow.from_key == output_data_port_key and data_flow.from_state == state.state_id:
                      if data_flow.to_state == self.state_id:  # is target of data flow own state id?
                          if data_flow.to_key in self.scoped_variables.keys():  # is target data port scoped?
                              current_scoped_variable = self.scoped_variables[data_flow.to_key]
                              self.scoped_data[str(data_flow.to_key) + self.state_id] = \
                                  ScopedData(current_scoped_variable.name, value, type(value), state.state_id,
                                             ScopedVariable, parent=self)