code: public void check(ReconfigurationPlan p) throws SatConstraintViolationException {
          if (checkers.isEmpty()) {
              return;
          }
  
          checkModel(p.getOrigin(), true);
  
          if (!p.getActions().isEmpty()) {
              PriorityQueue<Action> starts = new PriorityQueue<>(p.getActions().size(), STARTS_CMP);
              PriorityQueue<Action> ends = new PriorityQueue<>(p.getActions().size(), ENDS_CMP);
              starts.addAll(p.getActions());
              ends.addAll(p.getActions());
  
              //Starts the actions
              int curMoment = starts.peek().getStart();
              while (!starts.isEmpty() || !ends.isEmpty()) {
                  Action a = ends.peek();
                  while (a != null && a.getEnd() == curMoment) {
                      ends.remove();
                      startingEvent = false;
                      visitAndThrowOnViolation(a);
                      visitEvents(a, Action.Hook.POST);
                      a = ends.peek();
                  }
                  a = starts.peek();
  
                  while (a != null && a.getStart() == curMoment) {
                      starts.remove();
                      startingEvent = true;
                      visitEvents(a, Action.Hook.PRE);
                      visitAndThrowOnViolation(a);
                      a = starts.peek();
                  }
                  int nextEnd = Integer.MAX_VALUE;
                  if (!ends.isEmpty()) {
                      nextEnd = ends.peek().getEnd();
                  }
                  int nextStart = Integer.MAX_VALUE;
                  if (!starts.isEmpty()) {
                      nextStart = starts.peek().getStart();
                  }
  
                  curMoment = Math.min(nextEnd, nextStart);
              }
          }
          Model mo = p.getResult();
          if (mo == null) {
              throw new InconsistentSolutionException(p.getOrigin(), p, "The resulting reconfiguration plan is not applyable");
          }
          checkModel(mo, false);
      }
docs: Check if a plan satisfies all the {@link SatConstraintChecker}.
  
  @param p the plan to check
  @throws SatConstraintViolationException if a violation is detected