Следующий код вызывает исключение ConcurrentModificationException:
for (String word : choices) {
List<String> choicesCopy = choices;
chosen.add(word);
choicesCopy.remove(word);
subsets(choicesCopy, chosen, alreadyPrinted);
}
В чем дело? Исходный список (выборы) вообще не изменился.