code: public LocalSearchForager buildForager(HeuristicConfigPolicy configPolicy) {
          if (foragerClass != null) {
              if (pickEarlyType != null || acceptedCountLimit != null || finalistPodiumType != null) {
                  throw new IllegalArgumentException("The forager with foragerClass (" + foragerClass
                          + ") must not also have a pickEarlyType (" + pickEarlyType
                          + "), acceptedCountLimit (" + acceptedCountLimit
                          + ") or finalistPodiumType (" + finalistPodiumType + ").");
              }
              return ConfigUtils.newInstance(this, "foragerClass", foragerClass);
          }
          LocalSearchPickEarlyType pickEarlyType_ = defaultIfNull(pickEarlyType, LocalSearchPickEarlyType.NEVER);
          int acceptedCountLimit_ = defaultIfNull(acceptedCountLimit, Integer.MAX_VALUE);
          FinalistPodiumType finalistPodiumType_ = defaultIfNull(finalistPodiumType, FinalistPodiumType.HIGHEST_SCORE);
          // Breaking ties randomly leads statistically to much better results
          boolean breakTieRandomly_  = defaultIfNull(breakTieRandomly, true);
          return new AcceptedLocalSearchForager(finalistPodiumType_.buildFinalistPodium(), pickEarlyType_,
                  acceptedCountLimit_, breakTieRandomly_);
      }
docs: ************************************************************************