default EvolutionResult<G, C> evolve(
		final ISeq<Phenotype<G, C>> population,
		final long generation
	) {
		return evolve(EvolutionStart.of(population, generation));
	}
Perform one evolution step with the given {@code population} and
{@code generation}.
<p>
<em>This method is thread-safe.</em>

@see #evolve(EvolutionStart)

@param population the population to evolve
@param generation the current generation; used for calculating the
       phenotype age.
@return the evolution result
@throws java.lang.NullPointerException if the given {@code population} is
        {@code null}
@throws IllegalArgumentException if the given {@code generation} is
        smaller then one
jenetics/src/main/java/io/jenetics/engine/Evolution.java