@Test(invocationCount = 20)
public void frontMax() {

	final Random random = new Random();
	final ISeq<Vec<double[]>> rank0 = frontMax(20, 50, random);
	final ISeq<Vec<double[]>> rank1 = frontMax(15, 50, random);
	final ISeq<Vec<double[]>> rank2 = frontMax(10, 50, random);
	final ISeq<Vec<double[]>> rank3 = frontMax(5, 50, random);
	final ISeq<Vec<double[]>> rank4 = frontMax(1, 25, random);
	final ISeq<Vec<double[]>> points = rank0
		.append(rank1)
		.append(rank2)
		.append(rank3)
		.append(rank4)
		.copy().shuffle().toISeq();
	final ISeq<Vec<double[]>> front = Pareto.front(points);
	Assert.assertEquals(new HashSet<>(front.asList()), new HashSet<>(rank0.asList()));
}