Classes to provide all the possible permutations of arrays or sets.