def _add_model(self, model_list_or_dict, core_element, model_class, model_key=None, load_meta_data=True):
        """Adds one model for a given core element.

        The method will add a model for a given core object and checks if there is a corresponding model object in the
        future expected model list. The method does not check if an object with corresponding model has already been
        inserted.

        :param model_list_or_dict:  could be a list or dictionary of one model type
        :param core_element: the core element to a model for, can be state or state element
        :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')
        :param load_meta_data: specific argument for loading meta data
        :return:
        """

        found_model = self._get_future_expected_model(core_element)
        if found_model:
            found_model.parent = self

        if model_class is IncomeModel:
            self.income = found_model if found_model else IncomeModel(core_element, self)
            return

        if model_key is None:
            model_list_or_dict.append(found_model if found_model else model_class(core_element, self))
        else:
            model_list_or_dict[model_key] = found_model if found_model else model_class(core_element, self,
                                                                                        load_meta_data=load_meta_data)
Adds one model for a given core element.

        The method will add a model for a given core object and checks if there is a corresponding model object in the
        future expected model list. The method does not check if an object with corresponding model has already been
        inserted.

        :param model_list_or_dict:  could be a list or dictionary of one model type
        :param core_element: the core element to a model for, can be state or state element
        :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')
        :param load_meta_data: specific argument for loading meta data
        :return: