protected MutatorResult<Phenotype<G, C>> mutate(
		final Phenotype<G, C> phenotype,
		final long generation,
		final double p,
		final RandomGenerator random
	) {
		return mutate(phenotype.genotype(), p, random)
			.map(gt -> Phenotype.of(gt, generation));
	}
Mutates the given phenotype.

@see #mutate(Genotype, double, RandomGenerator)
@see #mutate(Chromosome, double, RandomGenerator)
@see #mutate(Gene, RandomGenerator)

@param phenotype the phenotype to mutate
@param generation the actual generation
@param p the mutation probability for the underlying genetic objects
@param random the random engine used for the phenotype mutation
@return the mutation result
jenetics/src/main/java/io/jenetics/Mutator.java