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