code: @SuppressWarnings("deprecation")
  	protected MutatorResult<Phenotype<G, C>> mutate(
  		final Phenotype<G, C> phenotype,
  		final long generation,
  		final double p,
  		final Random random
  	) {
  		return mutate(phenotype.getGenotype(), p, random)
  			.map(gt -> phenotype.newInstance(gt, generation));
  	}
docs: Mutates the given phenotype.
  
  @see #mutate(Genotype, double, Random)
  @see #mutate(Chromosome, double, Random)
  @see #mutate(Gene, Random)
  
  @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