def METHOD_NAME(partitions, replicas, num_clients, num_removal_clients):
    assume(
        num_removal_clients < num_clients
        and replicas < (num_clients - num_removal_clients)
    )
    client_assignments = {
        str(client): CopartitionedAssignment(topics=_topics)
        for client in range(num_clients)
    }
    valid_assignment = CopartitionedAssignor(
        _topics, client_assignments, partitions, replicas=replicas
    ).get_assignment()
    old_assignments = copy.deepcopy(valid_assignment)
    # adding fresh clients
    for client in range(num_clients - num_removal_clients, num_clients):
        del valid_assignment[str(client)]
    new_assignments = CopartitionedAssignor(
        _topics,
        valid_assignment,
        partitions,
        replicas=replicas,
    ).get_assignment()
    assert is_valid(new_assignments, partitions, replicas)
    if replicas > 0:
        assert client_removal_sticky(old_assignments, new_assignments)
    elif partitions >= num_clients - num_removal_clients:
        assert clients_balanced(new_assignments)