def re_initiate_model_list(self, model_list_or_dict, core_objects_dict, model_name, model_class, model_key):
        """Recreate model list

        The method re-initiate a handed list or dictionary of models with the new dictionary of core-objects.

        :param model_list_or_dict: could be a list or dictionary of one model type
        :param core_objects_dict: new dictionary of one type of core-elements (rafcon.core)
        :param model_name: prop_name for the core-element hold by the model, this core-element is covered by the model
        :param model_class: model-class of the elements that should be insert
        :param model_key: if model_list_or_dict is a dictionary the key is the id of the respective element
                          (e.g. 'state_id')
        :return:
        """
        if model_name == "income":
            if self.income.income != self.state.income:
                self._add_model(self.income, self.state.income, IncomeModel)
            return

        for _ in range(len(model_list_or_dict)):
            self.remove_additional_model(model_list_or_dict, core_objects_dict, model_name, model_key)

        if core_objects_dict:
            for _ in core_objects_dict:
                self.add_missing_model(model_list_or_dict, core_objects_dict, model_name, model_class, model_key)