code: @Override
      public QueuedEntityPlacer buildEntityPlacer(HeuristicConfigPolicy configPolicy) {
          EntitySelectorConfig entitySelectorConfig_ = buildEntitySelectorConfig(configPolicy);
          EntitySelector entitySelector = entitySelectorConfig_.buildEntitySelector(configPolicy,
                  SelectionCacheType.PHASE, SelectionOrder.ORIGINAL);
  
          List<MoveSelectorConfig> moveSelectorConfigList_;
          if (ConfigUtils.isEmptyCollection(moveSelectorConfigList)) {
              EntityDescriptor entityDescriptor = entitySelector.getEntityDescriptor();
              Collection<GenuineVariableDescriptor> variableDescriptors = entityDescriptor.getGenuineVariableDescriptors();
              List<MoveSelectorConfig> subMoveSelectorConfigList = new ArrayList<>(
                      variableDescriptors.size());
              for (GenuineVariableDescriptor variableDescriptor : variableDescriptors) {
                  subMoveSelectorConfigList.add(buildChangeMoveSelectorConfig(
                          configPolicy, entitySelectorConfig_.getId(), variableDescriptor));
              }
              MoveSelectorConfig subMoveSelectorConfig;
              if (subMoveSelectorConfigList.size() > 1) {
                  // Default to cartesian product (not a queue) of planning variables.
                  subMoveSelectorConfig = new CartesianProductMoveSelectorConfig(subMoveSelectorConfigList);
              } else {
                  subMoveSelectorConfig = subMoveSelectorConfigList.get(0);
              }
              moveSelectorConfigList_ = Collections.singletonList(subMoveSelectorConfig);
          } else {
              moveSelectorConfigList_ = moveSelectorConfigList;
          }
          List<MoveSelector> moveSelectorList = new ArrayList<>(moveSelectorConfigList_.size());
          for (MoveSelectorConfig moveSelectorConfig : moveSelectorConfigList_) {
              moveSelectorList.add(moveSelectorConfig.buildMoveSelector(
                      configPolicy, SelectionCacheType.JUST_IN_TIME, SelectionOrder.ORIGINAL));
          }
          return new QueuedEntityPlacer(entitySelector, moveSelectorList);
      }
docs: ************************************************************************