code: private static void precedenceIfOverlap(ReconfigurationProblem rp, Slice d, Slice c) {
          Model csp = rp.getModel();
          //No need to place the constraints if the slices do not have a chance to overlap
          if (!(c.getHoster().isInstantiated() && !d.getHoster().contains(c.getHoster().getValue()))
                  && !(d.getHoster().isInstantiated() && !c.getHoster().contains(d.getHoster().getValue()))
                  ) {
              BoolVar eq = csp.boolVar(rp.makeVarLabel(d.getHoster(), "", c.getHoster(), "?"));
            rp.getModel().arithm(d.getHoster(), "=", c.getHoster()).reifyWith(eq);
            org.chocosolver.solver.constraints.Constraint leqCstr = rp.getModel().arithm(c.getEnd(), "<=", d.getStart());
              ChocoUtils.postImplies(rp, eq, leqCstr);
          }
      }
docs: Establish the precedence constraint {@code c.getEnd() <= d.getStart()} if the two slices may overlap.