EnumGene implements
		Gene<A, EnumGene<A>>,
		Comparable<EnumGene<A>>,
		Serializable { public static <A> EnumGene<A> of( final int alleleIndex, final ISeq<? extends A> validAlleles ) { return new EnumGene<>(alleleIndex, validAlleles); } EnumGene(final int alleleIndex, final ISeq<? extends A> validAlleles); ISeq<A> validAlleles(); int alleleIndex(); @Override A allele(); @Override boolean isValid(); @Override EnumGene<A> newInstance(); EnumGene<A> newInstance(final A value); @Override int compareTo(final EnumGene<A> gene); @Override int hashCode(); @Override boolean equals(final Object obj); @Override String toString(); static EnumGene<A> of(
		final int alleleIndex,
		final ISeq<? extends A> validAlleles
	); static EnumGene<A> of(final ISeq<? extends A> validAlleles); @SafeVarargs static EnumGene<A> of(
		final int alleleIndex,
		final A... validAlleles
	); @SafeVarargs static EnumGene<A> of(final A... validAlleles);  }
@Test(expectedExceptions = IllegalArgumentException.class) public void valueOfZeroLength() { final int length = 0; final ISeq<Integer> alleles = MSeq.<Integer>ofLength(length).fill(Int()).toISeq(); EnumGene.of(alleles); }