public static <T, G extends Gene<?, G>, C extends Comparable<? super C>>
	Builder<G, C> builder(
		final Function<? super T, ? extends C> ff,
		final Codec<T, G> codec
	) {
		return builder(ff.compose(codec.decoder()), codec.encoding());
	}
Create a new evolution {@code Engine.Builder} with the given fitness
function and problem {@code codec}.

@since 3.2

@param ff the fitness evaluator
@param codec the problem codec
@param <T> the fitness function input type
@param <C> the fitness function result type
@param <G> the gene type
@return a new engine builder
@throws java.lang.NullPointerException if one of the arguments is
        {@code null}.
jenetics/src/main/java/io/jenetics/engine/Engine.java