protected boolean computeCell(int col, int row) {
        // Compute whether this cell is alive or dead in the next generation
        // using "countNeighbours"
        boolean liveCell = getCell(col, row);
        int neighbours = countNeighbours(col, row);
        boolean nextCell = false;

        if (neighbours < 2)
            nextCell = false;
        if (liveCell && (neighbours == 2 || neighbours == 3))
            nextCell = true;
        if (neighbours > 3)
            nextCell = false;
        if (!liveCell && (neighbours == 3))
            nextCell = true;

        return nextCell;
    }