docs: public void updateGrid(S solution, List<S> solutionSet) {
  
      int location = location(solution);
      if (location == -1) {
        //Re-build the Adaptative-Grid
        //Update lower and upper limits
        updateLimits(solutionSet);
  
        //Actualize the lower and upper limits whit the individual      
        for (int obj = 0; obj < numberOfObjectives; obj++) {
          if (solution.getObjective(obj) < gridLowerLimits[obj]) {
            gridLowerLimits[obj] = solution.getObjective(obj);
          }
          if (solution.getObjective(obj) > gridUpperLimits[obj]) {
            gridUpperLimits[obj] = solution.getObjective(obj);
          }
        }
  
        //Calculate the division size
        for (int obj = 0; obj < numberOfObjectives; obj++) {
          divisionSize[obj] = gridUpperLimits[obj] - gridLowerLimits[obj];
        }
  
        //Clean the hypercube
        for (int i = 0; i < hypercubes.length; i++) {
          hypercubes[i] = 0;
        }
  
        //add the population
        addSolutionSet(solutionSet);
      }
    }