code: @Override
  	protected MutatorResult<Chromosome<G>> mutate(
  		final Chromosome<G> chromosome,
  		final double p,
  		final Random random
  	) {
  		final int P = probability.toInt(p);
  		return random.nextInt() < P
  			? mutate(chromosome)
  			: MutatorResult.of(chromosome);
  	}
docs: Mutates the given chromosome.
  
  @see #mutate(Gene, Random)
  
  @param chromosome the chromosome to mutate
  @param p the mutation probability for the underlying genetic objects
  @param random the random engine used for the genotype mutation
  @return the mutation result