code: @Nonnull
    public static <DATATYPE> ICommonsList <ICommonsList <DATATYPE>> getAllPermutations (@Nonnull @Nonempty final ICommonsList <DATATYPE> aInput,
                                                                                        @Nonnegative final int nSlotCount)
    {
      final ICommonsList <ICommonsList <DATATYPE>> aResultList = new CommonsArrayList <> ();
      addAllPermutations (aInput, nSlotCount, aResultList);
      return aResultList;
    }
docs: Get a list of all permutations of the input elements.
  
  @param <DATATYPE>
  Element type to be combined
  @param aInput
  Input list.
  @param nSlotCount
  Slot count.
  @return The list of all permutations. Beware: the resulting list may be
  quite large and may contain duplicates if the input list contains
  duplicate elements!