Генерация всех комбинаций из нескольких списков

Учитывая неизвестное количество списков, каждый с неизвестной длиной, мне нужно создать единый список со всеми возможными уникальными комбинациями. Например, даны следующие списки:

X: [A, B, C] 
Y: [W, X, Y, Z]

Тогда я должен быть в состоянии генерировать 12 комбинаций:

[AW, AX, AY, AZ, BW, BX, BY, BZ, CW, CX, CY, CZ]

Если был добавлен третий список из 3 элементов, яиметь 36 комбинаций и т. д.

Любые идеи о том, как я могу сделать это на Java?

(псевдокод тоже подойдет)

Ответы на вопрос(10)

Ваш ответ на вопрос