static public Player getWinner(List<Player> players) {
        List<Player> shortList;
        List<Player> possibleWinners;
        Player winner;
        
        possibleWinners = new ArrayList<>();
        shortList = new ArrayList<>();
        
        Collections.sort(players, new RankComparator());
        winner = players.get(players.size()-1);
        for (Player player: players) {
            if (player.hand.rank == winner.hand.rank) possibleWinners.add(player);
        }
        
        if (possibleWinners.size() > 1) {
            Collections.sort(possibleWinners, new HighPlayedCardComparator());
            winner = possibleWinners.get(possibleWinners.size()-1);
            shortList.add(winner);
            for (Player player: possibleWinners) {
                if (player.hand.highPlayedCard.value > winner.hand.highPlayedCard.value) {
                    winner = player;
                    shortList.add(player);
                }
            }
        }
            
        if (shortList.size() > 1) {
            Collections.sort(shortList, new SecondHighPlayedCardComparator());
            winner = shortList.get(0);
            possibleWinners.clear();
            for (Player player: shortList) {
                if (player.hand.secondHighPlayedCard.value > 
                        winner.hand.secondHighPlayedCard.value) {
                    winner = player;
                    possibleWinners.add(player);
                }
            }
        }
        
        if (possibleWinners.size() > 1) {
            Collections.sort(possibleWinners, new HighCardComparator());
            winner =  possibleWinners.get(possibleWinners.size()-1);
        }

        winner.setWinner();

        return winner;
    }