EvolutionResult implements Comparable<EvolutionResult<G, C>>, Serializable { public static <G extends Gene<?, G>, C extends Comparable<? super C>> EvolutionInterceptor<G, C> toUniquePopulation(final Factory<Genotype<G>> factory, final int maxRetries) { requireNonNull(factory); return ofAfter(result -> uniquePopulation(factory, maxRetries, result)); } private  EvolutionResult(
		final Optimize optimize,
		final ISeq<Phenotype<G, C>> population,
		final long generation,
		final long totalGenerations,
		final EvolutionDurations durations,
		final int killCount,
		final int invalidCount,
		final int alterCount,
		final boolean dirty
	); Optimize optimize(); ISeq<Phenotype<G, C>> population(); ISeq<Genotype<G>> genotypes(); long generation(); long totalGenerations(); EvolutionDurations durations(); int killCount(); int invalidCount(); int alterCount(); Phenotype<G, C> bestPhenotype(); Phenotype<G, C> worstPhenotype(); C bestFitness(); C worstFitness(); EvolutionStart<G, C> next(); EvolutionStart<G, C> toEvolutionStart(); @Override int compareTo(final EvolutionResult<G, C> other); @Override int hashCode(); @Override boolean equals(final Object obj); static Collector<EvolutionResult<G, C>, ?, EvolutionResult<G, C>> toBestEvolutionResult(); static Collector<EvolutionResult<G, C>, ?, Phenotype<G, C>> toBestPhenotype(); static Collector<EvolutionResult<G, C>, ?, Genotype<G>> toBestGenotype(); static Collector<EvolutionResult<G, C>, ?, T> toBestResult(final Function<Genotype<G>, T> decoder); static Collector<EvolutionResult<G, C>, ?, T> toBestResult(final Codec<T, G> codec); static EvolutionInterceptor<G, C> toUniquePopulation(final Factory<Genotype<G>> factory, final int maxRetries); static EvolutionInterceptor<G, C> toUniquePopulation(final Factory<Genotype<G>> factory); static EvolutionInterceptor<G, C> toUniquePopulation(final int maxRetries); static EvolutionInterceptor<G, C> toUniquePopulation(); static EvolutionResult<G, C> of(
		final Optimize optimize,
		final ISeq<Phenotype<G, C>> population,
		final long generation,
		final long totalGenerations,
		final EvolutionDurations durations,
		final int killCount,
		final int invalidCount,
		final int alterCount
	); static EvolutionResult<G, C> of(
		final Optimize optimize,
		final ISeq<Phenotype<G, C>> population,
		final long generation,
		final EvolutionDurations durations,
		final int killCount,
		final int invalidCount,
		final int alterCount
	);  }
@Test public void toUniquePopulation() { final ISeq<Genotype<IntegerGene>> genotypes = Genotype.of(IntegerChromosome.of(0, Integer.MAX_VALUE)).instances() .limit(10) .collect(ISeq.toISeq()); final EvolutionResult<IntegerGene, Integer> result = result(genotypes); Assert.assertSame( EvolutionResult.<IntegerGene, Integer>toUniquePopulation().after(result), result ); }