public static <G extends Gene<?, G>, T, V extends Vec<T>>
	Collector<EvolutionResult<G, V>, ?, ISeq<Phenotype<G, V>>>
	toParetoSet(final IntRange size) {
		return toParetoSet(
			size,
			Vec::dominance,
			Vec::compare,
			Vec::distance,
			Vec::length
		);
	}
Collector of {@link Phenotype} objects, who's (multi-objective) fitness
value is part of the <a href="https://en.wikipedia.org/wiki/Pareto_efficiency">
    pareto front</a>.

@param size the allowed size range of the returned pareto set. If the
       size of the pareto set is bigger than {@code size.getMax()},
       during the collection, it is reduced to {@code size.getMin()}.
       Pareto set elements which are close to each other are removed first.
@param <G> the gene type
@param <T> the array type, e.g. {@code double[]}
@param <V> the multi object result type vector
@return the pareto set collector
@throws NullPointerException if one the {@code size} is {@code null}
@throws IllegalArgumentException if the minimal pareto set {@code size}
        is smaller than one
jenetics.ext/src/main/java/io/jenetics/ext/moea/MOEA.java