code: @Override
      public MoveSelector buildBaseMoveSelector(HeuristicConfigPolicy configPolicy,
              SelectionCacheType minimumCacheType, boolean randomSelection) {
          EntitySelectorConfig entitySelectorConfig_ = entitySelectorConfig == null ? new EntitySelectorConfig()
                  : entitySelectorConfig;
          EntitySelector leftEntitySelector = entitySelectorConfig_.buildEntitySelector(
                  configPolicy,
                  minimumCacheType, SelectionOrder.fromRandomSelectionBoolean(randomSelection));
          EntitySelectorConfig rightEntitySelectorConfig = defaultIfNull(secondaryEntitySelectorConfig,
                  entitySelectorConfig_);
          EntitySelector rightEntitySelector = rightEntitySelectorConfig.buildEntitySelector(
                  configPolicy,
                  minimumCacheType, SelectionOrder.fromRandomSelectionBoolean(randomSelection));
          List<GenuineVariableDescriptor> variableDescriptorList = deduceVariableDescriptorList(
                  leftEntitySelector.getEntityDescriptor(), variableNameIncludeList);
          return new SwapMoveSelector(leftEntitySelector, rightEntitySelector, variableDescriptorList,
                  randomSelection);
      }
docs: ************************************************************************