private static boolean lastMoveCompletedSquare(GameState state) {
		Edge newest = state.getNewestEdge();
		
		// Find the indexes of the cells on either side of the edge.
		final int x1, y1, x2, y2;
		
		switch(newest.getCanDirection()) {
			case RIGHT:
				x1 = newest.getCanX();
				y1 = newest.getCanY() - 1;
					
				x2 = newest.getCanX();
				y2 = newest.getCanY();
				break;
			case BELOW:
				x1 = newest.getCanX() - 1;
				y1 = newest.getCanY();
					
				x2 = newest.getCanX();
				y2 = newest.getCanY();
				break;
			default: throw new AssertionError();
		}
		
		// Check if a cell exists on either side of the edge. Because the edge 
		// is the newest edge in the grid, if a cell exists on either side it 
		// must have been finished by the placement of this edge.
		return cellExists(state, x1, y1) || cellExists(state, x2, y2);
	}