static <A> ISeq<AnyGene<A>> seq(
		final IntRange lengthRange,
		final Supplier<? extends A> supplier,
		final Predicate<? super A> validator
	) {
		final var random = random();
		final var length = random.nextInt(lengthRange.min(), lengthRange.max());

		return MSeq.<AnyGene<A>>ofLength(length)
			.fill(() -> of(supplier.get(), supplier, validator))
			.toISeq();
	}
Create a new {@code AnyGene} instance with the given parameters. New
(random) genes are created with the given allele {@code supplier}.

@param <A> the allele type
@param supplier the allele-supplier which is used for creating new,
       random alleles
@param validator the validator used for validating the created gene. This
       predicate is used in the {@link #isValid()} method.
@return a new {@code AnyGene} with the given parameters
@throws NullPointerException if one of the parameters is {@code null}
jenetics/src/main/java/io/jenetics/AnyGene.java