code: @Override
      public boolean isMoveDoable(ScoreDirector<Solution_> scoreDirector) {
          Object oldValue = variableDescriptor.getValue(pillar.get(0));
          if (Objects.equals(oldValue, toPlanningValue)) {
              return false;
          }
          if (!variableDescriptor.isValueRangeEntityIndependent()) {
              ValueRangeDescriptor<Solution_> valueRangeDescriptor = variableDescriptor.getValueRangeDescriptor();
              Solution_ workingSolution = scoreDirector.getWorkingSolution();
              for (Object entity : pillar) {
                  ValueRange rightValueRange = valueRangeDescriptor.extractValueRange(workingSolution, entity);
                  if (!rightValueRange.contains(toPlanningValue)) {
                      return false;
                  }
              }
          }
          return true;
      }
docs: ************************************************************************