public static <G extends Gene<?, G>, C extends Comparable<? super C>>
	Builder<G, C> builder(
		final Function<? super Genotype<G>, ? extends C> ff,
		final Factory<Genotype<G>> genotypeFactory
	) {
		return new Builder<>(genotypeFactory, ff);
	}
public static < G extends Gene < ? , G > , C extends Comparable < ? super C > > Builder < G , C > builder ( final Function < ? super Genotype < G > , ? extends C > ff , final Factory < Genotype < G > > genotypeFactory ) { return new Builder < > ( genotypeFactory , ff ) ; }
Create a new evolution {@code Engine.Builder} with the given fitness
function and genotype factory.

@param ff the fitness function
@param genotypeFactory the genotype factory
@param <G> the gene type
@param <C> the fitness function result type
@return a new engine builder
@throws java.lang.NullPointerException if one of the arguments is
{@code null}.