if (substr2 == null) {
if (substr2 == null)
	protected boolean compare_String(int operation, String string, Object value2) {		switch (operation) {			case SUBSTRING :				{					if (Debug.DEBUG && Debug.DEBUG_FILTER) {						Debug.println("SUBSTRING(" + string + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$					}					String[] substrings = (String[]) value2;					int pos = 0;					int size = substrings.length;					for (int i = 0; i < size; i++) {						String substr = substrings[i];						if (i + 1 < size) /* if this is not that last substr */{							if (substr == null) /* * */{								String substr2 = substrings[i + 1];								if (substr2 == null) /* ** */{									continue; /* ignore first star */								} else /* *xxx */{									if (Debug.DEBUG && Debug.DEBUG_FILTER) {										Debug.println("indexOf(\"" + substr2 + "\"," + pos + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$									}									int index = string.indexOf(substr2, pos);									if (index == -1) {										return false;									}									i++;									pos = index + substr2.length();								}							} else /* xxx */{								int len = substr.length();								if (Debug.DEBUG && Debug.DEBUG_FILTER) {									Debug.println("regionMatches(" + pos + ",\"" + substr + "\")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$								}								if (string.regionMatches(pos, substr, 0, len)) {									pos += len;								} else {									return false;								}							}						} else /* last substr */{							if (substr == null) /* * */{								return true;							} else /* xxx */{								if (Debug.DEBUG && Debug.DEBUG_FILTER) {									Debug.println("regionMatches(" + pos + "," + substr + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$								}								return string.regionMatches(pos, substr, 0, substr.length());							}						}					}					return true;				}			case EQUAL :				{					if (Debug.DEBUG && Debug.DEBUG_FILTER) {						Debug.println("EQUAL(" + string + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$					}					return string.equals(value2);				}			case APPROX :				{					if (Debug.DEBUG && Debug.DEBUG_FILTER) {						Debug.println("APPROX(" + string + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$					}					string = approxString(string);					String string2 = approxString((String) value2);					return string.equalsIgnoreCase(string2);				}			case GREATER :				{					if (Debug.DEBUG && Debug.DEBUG_FILTER) {						Debug.println("GREATER(" + string + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$					}					return string.compareTo((String) value2) >= 0;				}			case LESS :				{					if (Debug.DEBUG && Debug.DEBUG_FILTER) {						Debug.println("LESS(" + string + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$					}					return string.compareTo((String) value2) <= 0;				}		}		return false;	}