docs: @Override
    public PackingPlan repack(PackingPlan currentPackingPlan, Map<String, Integer> componentChanges)
        throws PackingException {
      int initialNumContainer = TopologyUtils.getNumContainers(topology);
      int initialNumInstance = TopologyUtils.getTotalInstance(topology);
      double initialNumInstancePerContainer = (double) initialNumInstance / initialNumContainer;
  
      Map<String, Integer> newComponentParallelism =
          getNewComponentParallelism(currentPackingPlan, componentChanges);
  
      int newNumInstance = TopologyUtils.getTotalInstance(newComponentParallelism);
      int newNumContainer = (int) Math.ceil(newNumInstance / initialNumInstancePerContainer);
      return packInternal(newNumContainer, newComponentParallelism);
    }