Валидатор ругается на один пункт: Метод markTile(int, int) должен устанавливать значение поля isFlag в false, увеличивать количество неиспользованных флагов на единицу, отрисовывать на поле пустую ячейку, если текущий элемент — флаг (используй метод setCellValue(int, int, String)) и возвращать исходный цвет ячейки (используй метод setCellColor(int, int, Color)). Вот код метода, и он работает! В чём блин проблема?? Бесит. В ответ принципиально лезть не хочу...
private void markTile(int x, int y) {
    GameObject gameObj = gameField[y][x];
    if (!gameObj.isOpen) {
        if (!gameObj.isFlag) {
            if (countFlags > 0) {
                setCellColor(x, y, Color.YELLOW);
                setCellValue(x, y, FLAG);
                gameObj.isFlag = true;
                countFlags--;
            } else { }
        } else {
            gameObj.isFlag = false; // Ставим значение поля isFlag в false
            countFlags++;                // Добавляем неиспользованный флаг в счетчик
            setCellValue(x, y, " ");    // Отрисовываем пустую ячейку
            setCellColor(x, y, Color.GRAY); // Ставим цвет как было до того, как пометили
        }
    }
}