code: public static <A> AnyChromosome<A> of(
  		final Supplier<? extends A> supplier,
  		final Predicate<? super A> alleleValidator,
  		final Predicate<? super ISeq<A>> alleleSeqValidator,
  		final IntRange lengthRange
  	) {
  		return new AnyChromosome<>(
  			AnyGene.seq(lengthRange, supplier, alleleValidator),
  			supplier,
  			alleleValidator,
  			alleleSeqValidator,
  			lengthRange
  		);
  	}
docs: Create a new chromosome of type {@code A} with the given parameters.
  
  @since 4.0
  
  @param <A> the allele type
  @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.
  @param lengthRange the allowed length range of the chromosome
  @return a new chromosome of allele type {@code A}
  @throws NullPointerException if the given arguments is {@code null}
  @throws IllegalArgumentException if chromosome length is smaller than one.