class JobQuotaController implements QuotaController<Job<?>> {

    @Override
    public JobQuotaController update(Job<?> updatedJob) {
        int currentDesired = JobFunctions.getJobDesiredSize(job);
        int newDesired = JobFunctions.getJobDesiredSize(updatedJob);

        if (currentDesired == newDesired) {
            if (job.getJobDescriptor().getDisruptionBudget().equals(updatedJob.getJobDescriptor().getDisruptionBudget())) {
                return this;
            }
        }

        return new JobQuotaController(
                updatedJob,
                jobOperations,
                effectiveDisruptionBudgetResolver,
                containerHealthService,
                this,
                titusRuntime
        );
    }

    public  JobQuotaController(Job<?> job,
                              V3JobOperations jobOperations,
                              EffectiveJobDisruptionBudgetResolver effectiveDisruptionBudgetResolver,
                              ContainerHealthService containerHealthService,
                              TitusRuntime titusRuntime);
    private  JobQuotaController(Job<?> newJob,
                               V3JobOperations jobOperations,
                               EffectiveJobDisruptionBudgetResolver effectiveDisruptionBudgetResolver,
                               ContainerHealthService containerHealthService,
                               JobQuotaController previousJobQuotaController,
                               TitusRuntime titusRuntime);

}