public MoveSelector buildBaseMoveSelector(EnvironmentMode environmentMode, SolutionDescriptor solutionDescriptor,
SelectionCacheType minimumCacheType, SelectionOrder resolvedSelectionOrder) {
EntitySelector leftEntitySelector = entitySelectorConfig.buildEntitySelector(
environmentMode, solutionDescriptor, minimumCacheType, resolvedSelectionOrder);
EntitySelectorConfig rightEntitySelectorConfig = secondaryEntitySelectorConfig == null
? entitySelectorConfig : secondaryEntitySelectorConfig;
EntitySelector rightEntitySelector = rightEntitySelectorConfig.buildEntitySelector(
environmentMode, solutionDescriptor, minimumCacheType, resolvedSelectionOrder);
Collection<PlanningVariableDescriptor> variableDescriptors = leftEntitySelector.getEntityDescriptor()
.getPlanningVariableDescriptors();
return new SwapMoveSelector(leftEntitySelector, rightEntitySelector, variableDescriptors,
resolvedSelectionOrder == SelectionOrder.RANDOM);