docs: 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)