public Object parse(String s) throws IllegalArgumentException {
		Object v = null;
		
		// Test for null argument
		if (this == NONE) {
			if (s != null) {
				throw new IllegalArgumentException("For NONE, s must be null.");
			}
		} else {
			if (s == null) {
				throw new IllegalArgumentException("s cannot be null.");
			}
		}
		
		// Parse me!
		switch (this) {
		case NONE:
			break;
		case LONG:
			try {
				v = new Long(Long.parseLong(s));
			} catch (Exception e) {
				throw new IllegalArgumentException(String.format("'%1$s' is not a valid long value.", s));
			}
			break;
		case DOUBLE:
			try {
				v = new Double(Double.parseDouble(s));
			} catch (Exception e) {
				throw new IllegalArgumentException(String.format("'%1$s' is not a valid double value.", s));
			}
			break;
		case STRING:
			v = s;
			break;
		}
		return v;
	}