private boolean findNewCombinations(Combination combination) {
		boolean somethingChanged = false;

		Combination newCombination = null;
		for (int i = 0; i < combination.pitchers.size(); i++) {
			// ***** leerkippen
			if (combination.pitchers.get(i).isNotEmpty()) {
				newCombination = combination.clone();
				newCombination.pitchers.get(i).filling = 0;
				somethingChanged |= tryToAdd(newCombination);
			}

			// ***** vollkippen wenn unlimited water
			if (unlimitedWater && combination.pitchers.get(i).isNotFull()) {
				newCombination = combination.clone();
				newCombination.pitchers.get(i).filling = newCombination.pitchers.get(i).volumen;
				somethingChanged |= tryToAdd(newCombination);
			}

			// ***** umkippen zu allen anderen ...
			for (int j = 0; j < combination.pitchers.size(); j++) {
				if (i == j) continue;

				if (combination.pitchers.get(i).isNotEmpty() && combination.pitchers.get(j).isNotFull()) {
					newCombination = combination.clone();
					moveWater(newCombination.pitchers.get(i), newCombination.pitchers.get(j));
					somethingChanged |= tryToAdd(newCombination);
				}
			}
		}
		return somethingChanged;
	}