Do you know some neat Java libaries that allow you to make cartesian product of two (or more) sets?

For example: I have set of sets. Set<Set<Object>>

I want to generate one set containing all possible combinations.

The number of sets might vary so I cannot do this in nested foreach loop.

I am looking for Stack implementation instead of using recursions.