code: public static <T> Codec<ISeq<T>, EnumGene<T>> ofSubSet(
  		final ISeq<? extends T> basicSet,
  		final int size
  	) {
  		requireNonNull(basicSet);
  		comb.checkSubSet(basicSet.size(), size);
  
  		return Codec.of(
  			Genotype.of(PermutationChromosome.of(basicSet, size)),
  			gt -> gt.getChromosome().stream()
  				.map(EnumGene::getAllele)
  				.collect(ISeq.toISeq())
  		);
  	}
docs: The subset {@code Codec} can be used for problems where it is required to
  find the best <b>fixed-size</b> subset from given basic set.
  
  @since 3.4
  
  @see PermutationChromosome
  @see PermutationChromosome#of(ISeq, int)
  
  @param <T> the element type of the basic set
  @param basicSet the basic set, from where to choose the <i>optimal</i>
  subset.
  @param size the length of the desired subsets
  @return a new codec which can be used for modelling <i>subset</i>
  problems.
  @throws NullPointerException if the given {@code basicSet} is
  {@code null}; {@code null} elements are allowed.
  @throws IllegalArgumentException if {@code basicSet.size() < size},
  {@code size <= 0} or {@code basicSet.size()*size} will cause an
  integer overflow.