public Phenotype<G, C>
	eval(final Function<? super Genotype<G>, ? extends C> ff) {
		requireNonNull(ff);
		return _fitness == null ? withFitness(ff.apply(_genotype)) : this;
	}
Applies the given fitness function to the underlying genotype and return
a new phenotype with the (newly) evaluated fitness function, if not
already evaluated. If the fitness value is already set {@code this}
phenotype is returned.

@since 5.0

@param ff the fitness function
@return an evaluated phenotype or {@code this} if the fitness value is
        already set
@throws NullPointerException if the given fitness function is {@code null}
jenetics/src/main/java/io/jenetics/Phenotype.java