code: @SuppressWarnings("squid:S3346")
      private int filterLoads(int d, int delta, boolean isSup) throws ContradictionException {
          assert maxSlackBinHeap != null;
          int nChanges = 0;
          if (loadSlack(d, maxSlackBinHeap.get(d).peek()) > delta) {
              do {
                  int b = maxSlackBinHeap.get(d).poll();
                  if (isSup) {
                      p.filterLoadSup(d, b, delta + p.loads[d][b].getLB());
                  } else {
                      p.filterLoadInf(d, b, p.loads[d][b].getUB() - delta);
                  }
                  assert loadSlack(d, b) == delta;
                  maxSlackBinHeap.get(d).offer(b);
                  nChanges++;
              } while (!maxSlackBinHeap.get(d).isEmpty() && loadSlack(d, maxSlackBinHeap.get(d).peek()) > delta);
          }
          return nChanges;
      }
docs: check each rule 1.1 (lower or upper bound) against the bin with the maximum loadSlack
  possibly filter the bound of the binLoad variable, update the heap
  and continue until the rule does not apply
  
  @param d     the dimension
  @param delta the global slack to subtract from the bound
  @param isSup is the bound the upper bound ?
  @return the number of bound updates
  @throws ContradictionException if a contradiction (rule 1.1) is raised