code: @Override
      public void constructCache(DefaultSolverScope solverScope) {
          cachedEntityMap = new TreeMap<>();
          ScoreDirector scoreDirector = solverScope.getScoreDirector();
          double probabilityWeightOffset = 0L;
          for (Object entity : childEntitySelector) {
              double probabilityWeight = probabilityWeightFactory.createProbabilityWeight(
                      scoreDirector, entity);
              cachedEntityMap.put(probabilityWeightOffset, entity);
              probabilityWeightOffset += probabilityWeight;
          }
          probabilityWeightTotal = probabilityWeightOffset;
      }
docs: ************************************************************************