@Override public ISeq<Phenotype<G, C>> select( final Seq<Phenotype<G, C>> population, final int count, final Optimize opt ) { requireNonNull(population, "Population"); requireNonNull(opt, "Optimization"); if (count < 0) { throw new IllegalArgumentException(format( "Selection count must be greater or equal then zero, but was %s", count )); } final Random random = RandomRegistry.getRandom(); return population.isEmpty() ? ISeq.empty() : MSeq.<Phenotype<G, C>>ofLength(count) .fill(() -> select(population, opt, _sampleSize, random)) .toISeq(); }