@Override
	public final AltererResult<G, C> alter(
		final Seq<Phenotype<G, C>> population,
		final long generation
	) {
		final AltererResult<G, C> result;
		if (population.size() >= 2) {
			final var random = RandomRegistry.random();
			final int order = Math.min(_order, population.size());

			final MSeq<Phenotype<G, C>> pop = MSeq.of(population);
			final int count = indexes(random, population.size(), _probability)
				.mapToObj(i -> individuals(i, population.size(), order, random))
				.mapToInt(ind -> recombine(pop, ind, generation))
				.sum();

			result = new AltererResult<>(pop.toISeq(), count);
		} else {
			result = new AltererResult<>(population.asISeq());
		}

		return result;
	}
Return the number of individuals involved in the
{@link #recombine(MSeq, int[], long)} step.

@return the number of individuals involved in the recombination step.
jenetics/src/main/java/io/jenetics/Recombinator.java