code: 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());
  	}
docs: Create a new evolution {@code Engine.Builder} with the given fitness
  function and problem {@code codec}.
  
  @since 3.2
  
  @param ff the fitness function
  @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}.