private boolean isAreaXreducible(int areaType, int area1, int area2, int altArea1, int altArea2, String theVal) {
        String theValues;

        int [][] searchArray;
        if(areaType == ROW) {
            searchArray = colIndices;
        } else {
            searchArray = rowIndices;
        }

        for (int i = 0; i < 9; i++) { // Check altArea1
            if (i == area1) continue; // The square at [altArea1][area1] is already known to contain theVal
            if (i == area2) continue; // The square at [altArea1][area2] is already known to contain theVal
            theValues = squares.elementAt(searchArray[altArea1][i]).getToolTipText().trim();
            if (theValues.contains(theVal)) {
                return true;
            }
        } // end for

        for (int i = 0; i < 9; i++) { // Check altArea2
            if (i == area1) continue;
            if (i == area2) continue;
            theValues = squares.elementAt(searchArray[altArea2][i]).getToolTipText().trim();
            if (theValues.contains(theVal)) {
                return true;
            }
        } // end for

        return false;
    } // end isAreaXreducible