docs: @Override
    public PackingPlan repack(PackingPlan currentPackingPlan, Map<String, Integer> componentChanges) {
      this.numContainers = currentPackingPlan.getContainers().size();
      resetToFirstContainer();
  
      int additionalContainers = computeNumAdditionalContainers(componentChanges, currentPackingPlan);
      if (additionalContainers > 0) {
        increaseNumContainers(additionalContainers);
        LOG.info(String.format(
            "Allocated %s additional containers for repack bring the number of containers to %s.",
            additionalContainers, this.numContainers));
      }
  
      while (true) {
        try {
          PackingPlanBuilder planBuilder = newPackingPlanBuilder(currentPackingPlan);
          planBuilder.updateNumContainers(numContainers);
          planBuilder = getResourceCompliantRRAllocation(planBuilder, componentChanges);
  
          return planBuilder.build();
  
        } catch (ConstraintViolationException e) {
          //Not enough containers. Adjust the number of containers.
          LOG.info(String.format(
              "%s Increasing the number of containers to %s and attempting to repack again.",
              e.getMessage(), this.numContainers + 1));
          retryWithAdditionalContainer();
        }
      }
    }