[Demonstration 1]

[Buggy Method]
private void removeFromNonet(SudokuCell cell, int value) {
    Location location = cell.getLocation();
    int nonet = location.getNonet();
    SudokuCell[] cells = grid.getNonet(nonet);
    for (int i = 0; i < SIZE; i++) {
        if (!cells[i].equals(cell))
            cells[i].setImpossibleValue(value);
    }
}

[Buggy Hunk]
if(!cells[i].equals(cell)) cells[i].setImpossibleValue(value);

[Patch]
if(!cells[i].equals(cell) && !cells[i].isSolved()) cells[i].setImpossibleValue(value);

[Demonstration 2]

[Buggy Method]
private int[] shift(int[] coor, int dir, int orientation) {
    int[] shiftedCoordinate = coor.clone();
    for (int i = 0; i < numDim; i++) {
        shiftedCoordinate[i] = +orientation * unitVectors[dir][i];
    }
    return periodic(shiftedCoordinate);
}

[Buggy Hunk]
shiftedCoordinate[i] =+ orientation * unitVectors[dir][i];

[Patch]
shiftedCoordinate[i] += orientation * unitVectors[dir][i];

[Demonstration 3]

[Buggy Method]
public static int getCellIndex(int[] coordinates, int[] numCells) {
    int cellIndex;
    // Make periodic
    int[] periodicCoordinates = new int[coordinates.length];
    System.arraycopy(coordinates, 0, periodicCoordinates, 0, coordinates.length);
    for (int i = 0; i < numCells.length; i++) {
        periodicCoordinates[i] = (coordinates[i] + numCells[i]) % numCells[i];
    }
    // Compute cell index
    cellIndex = periodicCoordinates[0];
    for (int i = 0; i < coordinates.length; i++) {
        cellIndex *= numCells[i];
        cellIndex += periodicCoordinates[i];
    }
    return cellIndex;
}

[Buggy Hunk]
for (int i = 0; i < coordinates.length; i++) {

[Patch]
for (int i = 1; i < coordinates.length; i++) {