IntegerChromosome extends AbstractBoundedChromosome<Integer, IntegerGene> implements
			NumericChromosome<Integer, IntegerGene>,
			Serializable { public IntegerChromosome map(final Function<? super int[], int[]> f) { requireNonNull(f); final var range = IntRange.of(_min, _max); final var genes = IntStream.of(f.apply(toArray())) .mapToObj(v -> IntegerGene.of(v, range)) .collect(ISeq.toISeq()); return newInstance(genes); } protected  IntegerChromosome(
		final ISeq<IntegerGene> genes,
		final IntRange lengthRange
	); @Override IntegerChromosome newInstance(final ISeq<IntegerGene> genes); @Override IntegerChromosome newInstance(); IntegerChromosome map(final Function<? super int[], int[]> f); IntStream intStream(); int[] toArray(final int[] array); int[] toArray(); static IntegerChromosome of(final IntegerGene... genes); static IntegerChromosome of(final Iterable<IntegerGene> genes); static IntegerChromosome of(
		final int min,
		final int max,
		final IntRange lengthRange
	); static IntegerChromosome of(
		final int min,
		final int max,
		final int length
	); static IntegerChromosome of(
		final IntRange range,
		final IntRange lengthRange
	); static IntegerChromosome of(final IntRange range, final int length); static IntegerChromosome of(final int min, final int max); static IntegerChromosome of(final IntRange range);  }
@Test public void map() { final var ch1 = IntegerChromosome.of(0, 10_000, 100); final var ch2 = ch1.map(IntegerChromosomeTest::half); Assert.assertNotSame(ch2, ch1); Assert.assertEquals(ch2.toArray(), half(ch1.toArray())); }