Кучу вариантов написания OpenTile() перепробовала, фейлятся вторая и последняя проверки валидатора. Тестирую, вроде как корректно все работает. Вот один из вариантов. Что не так?
private void openTile(int x, int y) {
        if (isGameStopped || gameField[y][x].isOpen || gameField[y][x].isFlag) return;

        gameField[y][x].isOpen = true;
        countClosedTiles--;

        if (gameField[y][x].isMine) {
            setCellValueEx(x, y, Color.LIGHTCORAL, MINE);
            gameOver();
            return;
        }
        setCellColor(x, y, Color.LIGHTSEAGREEN);
        if (countClosedTiles == countMinesOnField) {
            win();
            return;
        }

        if (gameField[y][x].countMineNeighbors == 0) {
            GameObject[] neigh = getNeighbors(gameField[y][x]);

            for (int i = 0; i < neigh.length; i++ ) {
                if (neigh[i] == null) continue;
                openTile(neigh[i].x, neigh[i].y);
            }
            setCellValue(x, y, "");
        }
        else {
            setCellNumber(x,y,gameField[y][x].countMineNeighbors);
        }

    }