code: @Override
      public PooledEntityPlacer buildEntityPlacer(HeuristicConfigPolicy configPolicy) {
          MoveSelectorConfig moveSelectorConfig;
          if (ConfigUtils.isEmptyCollection(moveSelectorConfigList)) {
              moveSelectorConfig = buildMoveSelectorConfig(configPolicy);
          } else if (moveSelectorConfigList.size() == 1) {
              moveSelectorConfig = moveSelectorConfigList.get(0);
          } else {
              // TODO moveSelectorConfigList is only a List because of XStream limitations.
              throw new IllegalArgumentException("The moveSelectorConfigList (" + moveSelectorConfigList
                      + ") must be a singleton or empty. Use a single " + UnionMoveSelectorConfig.class.getSimpleName()
                      + " or " + CartesianProductMoveSelectorConfig.class.getSimpleName()
                      + " element to nest multiple MoveSelectors.");
          }
          MoveSelector moveSelector = moveSelectorConfig.buildMoveSelector(
                  configPolicy, SelectionCacheType.JUST_IN_TIME, SelectionOrder.ORIGINAL);
          return new PooledEntityPlacer(moveSelector);
      }
docs: ************************************************************************