code: public static <G extends Gene<?, G>, C extends Comparable<? super C>>
  	AdaptiveEngine<G, C> of(
  		final Function<
  			? super EvolutionResult<G, C>,
  			? extends EvolutionStreamable<G, C>> engine
  	) {
  		return new AdaptiveEngine<>(engine);
  	}
docs: Return a new adaptive evolution engine, with the given engine generation
  function.
  
  @param engine the engine generating function used for adapting the engines.
  <b>Be aware, that the {@code EvolutionResult} for the first created
  {@code Engine} is {@code null}.</b>
  @param <G> the gene type
  @param <C> the fitness type
  @return a new adaptive evolution engine
  @throws NullPointerException if the given {@code engine} is {@code null}