public Generation getNextGeneration(Generation currentGeneration){
		if(currentGeneration == null)
			return null;
		
		Generation nextGeneration = new Generation(currentGeneration.getM(), currentGeneration.getN());
		
		//Iterate over each row in currentGeneration
		for(int i=0; i < currentGeneration.getM(); i++){
			//Iterate over each column in currentGeneration[i]
			for(int j=0; j < currentGeneration.getN(); j++) {
				
				int liveNeighborsCount = getNumberOfLiveNeighbors(currentGeneration, i, j);
				nextGeneration.setCellDead(i, j);

				if(currentGeneration.getCell(i, j).isAlive()){
					if (liveNeighborsCount >= 2 && liveNeighborsCount <= 3){
						nextGeneration.setCellAlive(i, j);
					}
				} else {
					if(liveNeighborsCount == 3) {
						nextGeneration.setCellAlive(i, j);
					}
				}
				
			}
		}
		return nextGeneration;
	}