@Override
	protected MutatorResult<Chromosome<G>> mutate(
		final Chromosome<G> chromosome,
		final double p,
		final RandomGenerator random
	) {
		final MutatorResult<Chromosome<G>> result;
		if (chromosome.length() > 1) {
			final int[] points = Subsets.next(random, chromosome.length() + 1, 2);
			final MSeq<G> genes = MSeq.of(chromosome);
			genes.subSeq(points[0], points[1]).reverse();

			result = new MutatorResult<>(
				chromosome.newInstance(genes.toISeq()),
				points[1] - points[0] - 1
			);
		} else {
			result = new MutatorResult<>(chromosome, 0);
		}

		return result;
	}
Default constructor, with default mutation probability
({@link AbstractAlterer#DEFAULT_ALTER_PROBABILITY}).
jenetics.ext/src/main/java/io/jenetics/ext/RSMutator.java