public int numberOfLiveNeighboursFor(Cell cell) {
        List<Cell> neighbours = new ArrayList<Cell>();

        for(int offsetY = -1; offsetY <= 1; offsetY++)
            for(int offsetX = -1; offsetX <= 1; offsetX++)
                if(!(offsetX == 0 && offsetY == 0))
                    if(isValidPosition((cell.y + offsetY), (cell.x + offsetX)))
                        if(cells[(cell.y + offsetY)][(cell.x + offsetX)].isAlive())
                            neighbours.add(cell);
        return neighbours.size();
    }