public synchronized void addResultForOneSimulation(Set<AbstractStartingHand> winners) {
        if (winners == null || winners.isEmpty()) {
            throw new IllegalArgumentException("Set of winning hands can't be null"
                    + " or empty!");
        }
        if (!startingHands.containsAll(winners)) {
            throw new IllegalArgumentException("Winning hands aren't contained"
                    + " in the set of starting hands!");
        }
        if (performedSimulations >= totalNumberOfSimulationsToPerform) {
            throw new IllegalStateException("Enough simulations have already"
                    + " been performed.");
        }

        int numberOfWinningHands = winners.size();
        for (AbstractStartingHand hand : winners) {
            resultForHand.get(hand)[numberOfWinningHands - 1]++;
        }
        performedSimulations++;
    }