public MoveSelector buildBaseMoveSelector(EnvironmentMode environmentMode, SolutionDescriptor solutionDescriptor,
SelectionCacheType minimumCacheType, SelectionOrder resolvedSelectionOrder) {
PillarSelector leftPillarSelector = pillarSelectorConfig.buildPillarSelector(
environmentMode, solutionDescriptor, minimumCacheType, resolvedSelectionOrder);
PillarSelectorConfig rightPillarSelectorConfig = secondaryPillarSelectorConfig == null
? pillarSelectorConfig : secondaryPillarSelectorConfig;
PillarSelector rightPillarSelector = rightPillarSelectorConfig.buildPillarSelector(
environmentMode, solutionDescriptor, minimumCacheType, resolvedSelectionOrder);
Collection<PlanningVariableDescriptor> variableDescriptors = leftPillarSelector.getEntityDescriptor()
.getPlanningVariableDescriptors();
return new PillarSwapMoveSelector(leftPillarSelector, rightPillarSelector, variableDescriptors,
resolvedSelectionOrder == SelectionOrder.RANDOM);