code: @Override
      @SuppressWarnings("squid:S3346")
      public void propagate(int evtMask) throws ContradictionException {
          boolean recomputeLoads;
          if ((evtMask & PropagatorEventType.FULL_PROPAGATION.getMask()) != 0) {
              initialize();
              recomputeLoads = true;
          } else {
              recomputeLoads = loadsHaveChanged.get();
              if (recomputeLoads) {
                  recomputeLoadSums(); // TODO: update rather than recompute
              }
          }
          if (decoHeap != null) {
              decoHeap.fixPoint(recomputeLoads);
          } else {
              fixPoint();
          }
          assert checkLoadConsistency();
      }
docs: main propagation algorithm:
  - initialize the data at first call
  - recompute the sum of the load variable bounds
  - propagate until the fix point (with or without considering the heap of bins)
  
  @param evtMask type of event
  @throws ContradictionException if a contradiction is raised