code: @Override
      public void propagate(int idx, int mask) throws ContradictionException {
          if (idx < bins.length) {
              deltaMonitor[idx].freeze();
              deltaMonitor[idx].forEachRemVal(remProc.set(idx));
              deltaMonitor[idx].unfreeze();
              if (vars[idx].isInstantiated()) {
                  assignItem(idx, vars[idx].getValue());
              }
          } else {
              loadsHaveChanged.set(true);
          }
          forcePropagate(PropagatorEventType.CUSTOM_PROPAGATION);
      }
docs: fine grain propagation
  - if the event concerns a bin variable, then update data and apply rule 2:
  on the assigned bin: binAssignedLoad <= binLoad <= binPotentialLoad
  - otherwise remember to recompute the load sums and do nothing
  
  @param idx  the variable index
  @param mask the event mask
  @throws ContradictionException if a contradiction (rule 2) is raised