code: @SuppressWarnings("squid:S3346")
      private void filterFullDim(int bin, int dim) throws ContradictionException {
  
          for (int i = candidate.get(bin).nextSetBit(0); i >= 0; i = candidate.get(bin).nextSetBit(i + 1)) {
              if (prop.iSizes[dim][i] == 0) {
                  continue;
              }
            // ISSUE 86: the event 'i removed from bin' can already been in the propagation stack but not yet considered
            // ie. !prop.bins[i].contains(bin) && candidate[bin].contains(i): in this case, do not process it yet
              if (prop.bins[i].removeValue(bin, prop)) {
                  candidate.get(bin).clear(i);
                prop.updateLoads(i, bin);
  
                  if (prop.bins[i].isInstantiated()) {
                      prop.assignItem(i, prop.bins[i].getValue());
                  }
              }
          }
          if (candidate.get(bin).isEmpty()) {
              assert prop.potentialLoad[dim][bin].get() == prop.assignedLoad[dim][bin].get();
              assert prop.loads[dim][bin].getUB() == prop.potentialLoad[dim][bin].get();
          }
      }
docs: remove all candidate items from a bin that is full
  then synchronize potentialLoad and sup(binLoad) accordingly
  if an item becomes instantiated then propagate the newly assigned bin
  
  @param bin the full bin
  @throws ContradictionException