code: public static <G extends Gene<?, G>, C extends Comparable<? super C>>
  	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
  	) {
  		return new EvolutionResult<>(
  			optimize,
  			population,
  			generation,
  			totalGenerations,
  			durations,
  			killCount,
  			invalidCount,
  			alterCount
  		);
  	}
docs: Return an new {@code EvolutionResult} object with the given values.
  
  @param optimize the optimization strategy used
  @param population the population after the evolution step
  @param generation the current generation
  @param totalGenerations the overall number of generations
  @param durations the timing (meta) information
  @param killCount the number of individuals which has been killed
  @param invalidCount the number of individuals which has been removed as
  invalid
  @param alterCount the number of individuals which has been altered
  @param <G> the gene type
  @param <C> the fitness type
  @return an new evolution result object
  @throws java.lang.NullPointerException if one of the parameters is
  {@code null}