public static void testSwap(String f, int[][] grid, int[][] grid0, 
                                int myType, int i, int j, int k, int l) {
        if ((i == k) && (j == l)) {
            if (grid[i][j] != myType) {
                System.out.printf("Failed on %s @ (%d, %d) should not have moved\n", f, i, j);
            } else {
                if (mostlyTheSame(f, grid, grid0, i, j, k, l))
                    System.out.printf("Success on %s @ (%d, %d) did not move\n", f, i, j);
                else {
                    int x = Utility.unmatchedX;
                    int y = Utility.unmatchedY;
                    System.out.printf("Failed on %s @ (%d, %d) => (%d, %d): Unexpected change @ (%d, %d).   \n\tExpected %c  Got %c\n", 

                                      f, i, j, k, l, 
                                      x, y, 
                                      Utility.shortNames[grid0[x][y]],
                                      Utility.shortNames[grid[x][y]]);
                }
                
            }
            return;
        }
        
        if (grid[k][l] != myType) {
            System.out.printf("Failed on %s:   Expected %c @ (%d, %d)\tGot %c\n", f, 
                              Utility.shortNames[myType], k, l, 
                              Utility.shortNames[grid[k][l]]);
        } else if (grid[i][j] != Schelling.OPEN) {
            System.out.printf("Failed on %s:   Expected OPEN @ (%d, %d)\tGot %c\n", f, i, j,
                              Utility.shortNames[myType]);
        } else {
            if (mostlyTheSame(f, grid, grid0, i, j, k, l))
                System.out.printf("Success on %s @ (%d, %d) => (%d, %d)\n", f, i, j, k, l);
            else {
                int x = Utility.unmatchedX;
                int y = Utility.unmatchedY;
                System.out.printf("Failed on %s @ (%d, %d) => (%d, %d): Unexpected change @ (%d, %d).   \n\tExpected %c  Got %c\n", 

                                  f, i, j, k, l, 
                                  x, y, 
                                  Utility.shortNames[grid0[x][y]],
                                  Utility.shortNames[grid[x][y]]);
            }
        }
    }