docs: public static <T> Codec<ISeq<T>, EnumGene<T>>
  	ofPermutation(final ISeq<? extends T> alleles) {
  		if (alleles.isEmpty()) {
  			throw new IllegalArgumentException(
  				"Empty allele array is not allowed."
  			);
  		}
  
  		return Codec.of(
  			Genotype.of(PermutationChromosome.of(alleles)),
  			gt -> gt.getChromosome().stream()
  				.map(EnumGene::getAllele)
  				.collect(ISeq.toISeq())
  		);
  	}