private void populateActions(Player player, Card card) {
        Preconditions.checkArgument(card.isAction());
        ArrayList<ActionPlayerPair> actions = card.actions();
        for (ActionPlayerPair pair : actions) {
            switch (pair.playerSet) {
            case PLAYER_SELF:
                playerActions.get(player.name()).add(pair.action);
                break;
            case PLAYER_ALL:
                for (int i = 0; i < getNumPlayer(); ++i) {
                    Player receiver = playerList.get((curPlayerIdx + i) % getNumPlayer());
                    playerActions.get(receiver.name()).add(pair.action);
                }
                break;
            case PLAYER_OTHERS:
                for (int i = 1; i < getNumPlayer(); ++i) {
                    Player receiver = playerList.get((curPlayerIdx + i) % getNumPlayer());
                    playerActions.get(receiver.name()).add(pair.action);
                }
                break;
            default:
                break;
            }
        }
    }