public void execute() {
                    if (card.getController().isHuman()) {
                        String[] colors = Constant.Color.onlyColors;

                        Object o = GuiUtils.getChoice("Choose color", colors);
                        color[0] = (String) o;
                        card.setChosenColor(color[0]);
                    } else {
                        // AI chooses the color that appears in the keywords of the most cards in its deck, hand and on battlefield
                        CardList list = new CardList();
                        list.addAll(AllZoneUtil.getPlayerCardsInLibrary(AllZone.getComputerPlayer()));
                        list.addAll(AllZoneUtil.getPlayerHand(AllZone.getComputerPlayer()));
                        list.addAll(AllZoneUtil.getPlayerCardsInPlay(AllZone.getComputerPlayer()));

                        color[0] = Constant.Color.White;
                        int max = list.getKeywordsContain(color[0]).size();

                        String[] colors = {Constant.Color.Blue, Constant.Color.Black, Constant.Color.Red, Constant.Color.Green};
                        for (String c : colors) {
                            int cmp = list.getKeywordsContain(c).size();
                            if (cmp > max) {
                                max = cmp;
                                color[0] = c;
                            }
                        }
                        card.setChosenColor(color[0]);
                    }

                    String s = CardUtil.getShortColor(color[0]);
                    timeStamp[0] = AllZone.getGameInfo().addColorChanges(s, card, true, true);
                }