docs: protected MutatorResult<Chromosome<G>> mutate(
  		final Chromosome<G> chromosome,
  		final double p,
  		final Random random
  	) {
  		final int P = probability.toInt(p);
  		final ISeq<MutatorResult<G>> result = chromosome.stream()
  			.map(gene -> random.nextInt() < P
  				? MutatorResult.of(mutate(gene, random), 1)
  				: MutatorResult.of(gene))
  			.collect(ISeq.toISeq());
  
  		return MutatorResult.of(
  			chromosome.newInstance(result.map(MutatorResult::getResult)),
  			result.stream().mapToInt(MutatorResult::getMutations).sum()
  		);
  	}