docs: def add_input_data_to_scoped_data(self, dictionary):
          """Add a dictionary to the scoped data
  
          As the input_data dictionary maps names to values, the functions looks for the proper data_ports keys in the
          input_data_ports dictionary
  
          :param dictionary: The dictionary that is added to the scoped data
          :param state: The state to which the input_data was passed (should be self in most cases)
          """
          for dict_key, value in dictionary.items():
              for input_data_port_key, data_port in list(self.input_data_ports.items()):
                  if dict_key == data_port.name:
                      self.scoped_data[str(input_data_port_key) + self.state_id] = \
                          ScopedData(data_port.name, value, type(value), self.state_id, ScopedVariable, parent=self)
                      # forward the data to scoped variables
                      for data_flow_key, data_flow in self.data_flows.items():
                          if data_flow.from_key == input_data_port_key and data_flow.from_state == self.state_id:
                              if data_flow.to_state == self.state_id and data_flow.to_key in self.scoped_variables:
                                  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), self.state_id,
                                                 ScopedVariable, parent=self)