@Override
	public Chromosome<AnyGene<A>> newInstance(final ISeq<AnyGene<A>> genes) {
		return new AnyChromosome<>(
			genes,
			_supplier,
			_alleleValidator,
			_alleleSeqValidator,
			lengthRange()
		);
	}
Create a new {@code AnyChromosome} from the given {@code genes}
array. A chromosome is valid if both, the {@code alleleValidator} and
the {@code alleleSeqValidator} return {@code true}.

@param genes the genes that form the chromosome.
@param lengthRange the allowed length range of the chromosome
@param supplier the allele-supplier which is used for creating new,
       random alleles
@param alleleValidator the validator used for validating the created gene.
       This predicate is used in the {@link AnyGene#isValid()} method.
@param alleleSeqValidator the validator used for validating the created
       chromosome. This predicate is used in the
       {@link AnyChromosome#isValid()} method.
@throws NullPointerException if the given arguments is {@code null}
@throws IllegalArgumentException if the length of the gene sequence is
        empty, doesn't match with the allowed length range, the minimum
        or maximum of the range is smaller or equal zero, or the given
        range size is zero.
jenetics/src/main/java/io/jenetics/AnyChromosome.java