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_);
    }
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);
        
        boolean breakTieRandomly_  = defaultIfNull(breakTieRandomly, true);
        return new AcceptedLocalSearchForager(finalistPodiumType_.buildFinalistPodium(), pickEarlyType_,
                acceptedCountLimit_, breakTieRandomly_);
    }
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_ ) ; }
************************************************************************
************************************************************************