operands.addElement(null);
operands.add(null);
		protected Object parse_substring() throws InvalidSyntaxException {			StringBuffer sb = new StringBuffer(filter.length - pos);			Vector operands = new Vector(10, 10);			parseloop: while (true) {				char c = filter[pos];				switch (c) {					case ')' :						{							if (sb.length() > 0) {								operands.addElement(sb.toString());							}							break parseloop;						}					case '(' :						{							throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_INVALID_VALUE, String.valueOf(pos)), filterstring); 						}					case '*' :						{							if (sb.length() > 0) {								operands.addElement(sb.toString());							}							sb.setLength(0);							operands.addElement(null);							pos++;							break;						}					case '\\' :						{							pos++;							c = filter[pos];							/* fall through into default */						}					default :						{							sb.append(c);							pos++;							break;						}				}			}			int size = operands.size();			if (size == 0) {				throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_MISSING_VALUE, String.valueOf(pos)), filterstring); 			}			if (size == 1) {				Object single = operands.elementAt(0);				if (single != null) {					return single;				}			}			String[] strings = new String[size];			operands.copyInto(strings);			return strings;		}