def METHOD_NAME(base_dict: dict, add_dict: dict, in_place: bool = False, ignore_identicals: bool = True) -> dict:
    """Combine two dictionaries that define RegressionCheckers.
    The idea is to combine them into one that defines cases from both.
    If two cases have identical filters, their phrases are combined.
    If an additional case has the same name as one in the base dict,
    its name is changed before adding it.
    Args:
        base_dict (dict): The base dict to which we shall add
        add_dict (dict): The additional dict
        in_place (bool, optional): Whether or not to modify the existing (base) dict. Defaults to False.
        ignore_identicals (bool, optional): Whether to ignore identical cases (otherwise they get duplicated). Defaults to True.
    Returns:
        dict: The combined dict
    """
    base = RegressionChecker.from_dict(base_dict)
    add = RegressionChecker.from_dict(add_dict)
    name_preserver = UniqueNamePreserver()
    name_preserver.unique_names = {
        base_case.name for base_case in base.cases}
    for case in add.cases:
        existing = get_matching_case(base.cases, case.filters)
        if existing:
            if ignore_identicals and existing == case:
                logger.warning(
                    'Found two identical case: %s and %s in base and addon', existing, case)
                continue
            logging.info(
                'Found existing case (%s), adding phrases: %s', existing, case.phrases)
            existing.phrases.extend(case.phrases)
            continue
        new_name = name_preserver.get_unique_name(case.name)
        if new_name != case.name:
            logging.info('Renaming case from "%s" to "%s"',
                         case.name, new_name)
            case.name = new_name
        logging.info('Adding new case %s', case)
        base.cases.append(case)
    new_dict = base.to_dict()
    if in_place:
        base_dict.clear()
        base_dict.update(new_dict)
        return base_dict
    else:
        return new_dict