def METHOD_NAME(cls, model_group: List["Model"]) -> List["Model"]:
    """
    Instead of accumulating the model additions one by one, this recursively adds
    the models. E.G.
    [1, 2, 3, 4].accumulate_add() would give [3, 3, 4], then [6, 4], then [10]
    where this method looks like
    [1, 2, 3, 4].recursive_add() gives [[3], [7]], [10]
    It's the same number of adds, but it gives better O(N) performance on sublists
    """
    if len(model_group) <= 1:
        return model_group
    added_values = []
    iterable_group = iter(model_group)
    for model in iterable_group:
        next_model = next(iterable_group, None)
        if next_model is not None:
            combined = cls.merge_two_instances(next_model, model)
        else:
            combined = model
        added_values.append(combined)
    return cls.METHOD_NAME(added_values)