def METHOD_NAME(
    self,
    modifier_lambda,
    model_lambda,
    optim_lambda,
    test_steps_per_epoch,  # noqa: F811
):
    modifier = modifier_lambda()
    model = model_lambda()
    optimizer = optim_lambda(model)
    self.initialize_helper(modifier, model)
    for epoch in range(int(modifier.start_epoch)):
        assert not modifier.update_ready(epoch, test_steps_per_epoch)
    assert modifier.update_ready(modifier.start_epoch, test_steps_per_epoch)
    modifier.scheduled_update(
        model, optimizer, modifier.start_epoch, test_steps_per_epoch
    )
    if not modifier.update_epochs:
        return
    max_epochs = max(modifier.update_epochs) + 1
    epoch = round(modifier.start_epoch + 0.1, 1)
    while epoch < max_epochs:
        update_ready = modifier.update_ready(epoch, test_steps_per_epoch)
        assert update_ready == (epoch in modifier.update_epochs)
        if update_ready:
            modifier.scheduled_update(model, optimizer, epoch, test_steps_per_epoch)
        epoch = round(epoch + 0.1, 1)