code: @Override
      public MoveSelector buildBaseMoveSelector(HeuristicConfigPolicy configPolicy,
              SelectionCacheType minimumCacheType, boolean randomSelection) {
          if (entitySelectorConfig == null) {
              throw new IllegalStateException("The entitySelectorConfig (" + entitySelectorConfig
                      + ") should haven been initialized during unfolding.");
          }
          EntitySelector entitySelector = entitySelectorConfig.buildEntitySelector(configPolicy,
                  minimumCacheType, SelectionOrder.fromRandomSelectionBoolean(randomSelection));
          if (valueSelectorConfig == null) {
              throw new IllegalStateException("The valueSelectorConfig (" + valueSelectorConfig
                      + ") should haven been initialized during unfolding.");
          }
          ValueSelector valueSelector = valueSelectorConfig.buildValueSelector(configPolicy,
                  entitySelector.getEntityDescriptor(),
                  minimumCacheType, SelectionOrder.fromRandomSelectionBoolean(randomSelection));
          return new ChangeMoveSelector(entitySelector, valueSelector, randomSelection);
      }
docs: ************************************************************************