code: @SafeVarargs
  	public static <A> EnumGene<A> of(
  		final int alleleIndex,
  		final A... validAlleles
  	) {
  		return new EnumGene<>(alleleIndex, ISeq.of(validAlleles));
  	}
docs: Create a new enum gene from the given valid genes and the chosen allele
  index.
  
  @param <A> the allele type
  @param alleleIndex the index of the allele for this gene.
  @param validAlleles the array of valid alleles.
  @return a new {@code EnumGene} with the given with the allele
  {@code validAlleles[alleleIndex]}
  @throws java.lang.IllegalArgumentException if the give valid alleles
  array is empty of the allele index is out of range.