code: @Override
      public MoveSelector buildBaseMoveSelector(HeuristicConfigPolicy configPolicy,
              SelectionCacheType minimumCacheType, boolean randomSelection) {
          PillarSelectorConfig pillarSelectorConfig_ = pillarSelectorConfig == null ? new PillarSelectorConfig()
                  : pillarSelectorConfig;
          PillarSelector leftPillarSelector = pillarSelectorConfig_.buildPillarSelector(configPolicy,
                  minimumCacheType, SelectionOrder.fromRandomSelectionBoolean(randomSelection), variableNameIncludeList);
          PillarSelectorConfig rightPillarSelectorConfig = defaultIfNull(secondaryPillarSelectorConfig, pillarSelectorConfig_);
          PillarSelector rightPillarSelector = rightPillarSelectorConfig.buildPillarSelector(configPolicy,
                  minimumCacheType, SelectionOrder.fromRandomSelectionBoolean(randomSelection), variableNameIncludeList);
          List<GenuineVariableDescriptor> variableDescriptorList = deduceVariableDescriptorList(
                  leftPillarSelector.getEntityDescriptor(), variableNameIncludeList);
          return new PillarSwapMoveSelector(leftPillarSelector, rightPillarSelector, variableDescriptorList,
                  randomSelection);
      }
docs: ************************************************************************